Why Isn’t My Elastic APM Data Showing in Kibana? A Troubleshooting Guide

Elastic APM (Application Performance Monitoring) provides deep visibility into your applications, but what happens when your data doesn’t show up in Kibana? Missing transactions, silent logs, and cryptic UIs can make debugging frustrating. Let’s break down the most common culprits and how to fix them.

Symptoms: When Kibana Stays Empty

Elastic APM (Application Performance Monitoring) provides deep visibility into your applications, but what happens when your data doesn’t show up in Kibana? Missing transactions, silent logs, and cryptic UIs can make debugging frustrating. Let’s break down the most common culprits and how to fix them.

Common Symptoms:

  • No log messages to display under APM Logs
    • Logs exist in your app, but Kibana’s APM Logs tab shows nothing.
  • APM UI stuck on the “Add Data” screen
    • The Kibana APM dashboard refuses to progress past the setup prompt.
  • Transactions/spans missing despite agent configuration
    • Your agent is running, but traces and metrics are absent.

Solutions: Diagnose & Fix the Invisible Data Problem

Check APM Server Connectivity

The APM Agent and Server must communicate properly.

Verify server_url

Ensure the agent points to the correct APM Server endpoint:

elastic.apm.server_url=http://your-apm-server:8200

  • Cloud Users: Use the Elastic Cloud APM Server URL (found under APM > Settings).
  • On-Prem Users: Confirm the server is running:

systemctl status apm-server

Check Ports & Firewalls

APM Server uses port 8200 by default. Test connectivity:

curl -v http://<apm-server>:8200
# Expected response: {"ok":"APM Server ready"}

  • If blocked, update firewall rules or security groups.

API Keys & Authentication

  • For secured clusters, ensure valid API keys or credentials:

elastic.apm.secret_token=<YOUR_SECRET_TOKEN>

  • Cloud Users: Navigate to Kibana > Management > APM > Settings to regenerate keys.

Validate Agent Configuration

A misconfigured agent is the #1 cause of missing data.

Set a Unique service_name

The agent requires a service name. Avoid spaces or special characters:

elastic.apm.service_name=my-springboot-app

Enable Debug Logs

Temporarily enable verbose logging to catch errors:

elastic.apm.log_level=DEBUG

Look for clues like:

[DEBUG] Successfully connected to APM Server
[ERROR] Failed to send payload: Connection refused

Confirm Data Capture Settings

  • Ensure transactions aren’t filtered out:

elastic.apm.transaction_sample_rate=1.0 # 100% sampling

  • Disable recording only if explicitly needed:

elastic.apm.recording=false # Stops all data collection

Fix ILM Policies & Index Templates

Elasticsearch indices might be missing or misconfigured.

Check for APM Indices

In Kibana Dev Tools, run:

GET /_cat/indices/metrics-apm,traces-apm,logs-apm?v

  • If no indices exist, APM Server failed to auto-create them.

Reset Index Templates

  1. Navigate to Kibana > Stack Management > Index Lifecycle Policies.
  2. Confirm traces-apm, metrics-apm, and logs-apm policies exist.
  3. If missing, reinstall APM integration via Fleet.

Recreate Kibana Index Patterns

  1. Go to Stack Management > Kibana > Index Patterns.
  2. Delete outdated apm-* patterns.
  3. Let APM Server auto-generate new ones.

Pro Tips to Avoid Future Issues

Use Fleet for Centralized Agent Management

Deploy APM agents at scale with Elastic’s Fleet UI—no manual configurations needed.

Monitor APM Server Health

Check the APM Server’s / endpoint for uptime:

curl http://localhost:8200
{"build_date":"2023-08-15T12:34:56Z", "version":"8.10.0"}

Test with a Minimal Config

Start with a barebones setup to isolate issues:

java -javaagent:elastic-apm-agent.jar \
-elastic.apm.service_name=test-app \
-elastic.apm.server_url=http://localhost:8200 \
-jar your-app.jar

Troubleshooting Checklist

✅ APM Server is running and reachable.
✅ Agent service_name is set and unique.
✅ No firewall/security group blocks port 8200.
✅ APM indices exist in Elasticsearch.
✅ Debug logs show successful handshakes.

When All Else Fails

elastic.apm.profiling_inferred_spans_enabled=true

Final Thoughts

Elastic APM’s Java agent is powerful, but even the best tools need tuning. By methodically checking connectivity, configurations, and indices, you’ll transform Kibana from a blank slate into a treasure trove of observability.