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:
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
- Navigate to Kibana > Stack Management > Index Lifecycle Policies.
- Confirm traces-apm, metrics-apm, and logs-apm policies exist.
- If missing, reinstall APM integration via Fleet.
Recreate Kibana Index Patterns
- Go to Stack Management > Kibana > Index Patterns.
- Delete outdated apm-* patterns.
- 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
- Community Support: Visit the Elastic Discuss Forum.
- GitHub Issues: File a bug at elastic/apm-agent-java.
- Enable Profiling: Diagnose agent overhead with:
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.