APM services missing due to misconfigured elasticapmconnector
If APM services and metrics don't appear in Kibana despite a healthy-looking traces pipeline, check the elasticapmconnector for misconfiguration. This is one of the most common causes of a silent, empty APM UI when using the EDOT Collector with direct Elasticsearch ingestion.
This page applies when exporting directly to Elasticsearch using the elasticsearch exporter (typically with mapping.mode: otel). If you're sending data to the Managed OTLP endpoint or APM Server or the managed intake service using OTLP, neither the elasticapmprocessor nor the elasticapmconnector is required.
For general no-data troubleshooting, refer to No logs, metrics, or traces visible in Kibana.
The pipeline looks healthy, but no APM data reaches Kibana:
- Collector traces pipeline runs without errors
- Traces are exported successfully (no errors in the Collector logs)
- No APM services, transactions, or service map entries appear in Kibana APM
- APM metrics data streams remain empty
There are two distinct elasticapm components in the EDOT Collector:
elasticapmprocessor, which enriches OpenTelemetry spans with Elastic-specific attributes. Declare it underprocessors.elasticapmconnector, which generates pre-aggregated APM metrics from trace data. Declare it underconnectors. This component is used as an exporter in thetracespipeline, and as a receiver in a dedicatedmetricspipeline.
A common misconfiguration is placing the connector under processors instead of connectors, or omitting the connector declaration entirely. Because the traces pipeline continues to function even without the connector, the Collector logs no errors. However, APM metrics are never produced, so service maps, transaction histograms, and service-level indicators don't appear in Kibana.
-
Check that the connector is declared under
connectorsOpen your Collector configuration and confirm
elasticapmappears underconnectors, not only underprocessors:connectors: elasticapm: {} -
Wire the connector as an exporter in
tracesand a receiver inmetricspipelineThe
elasticapmconnectormust appear in two places inservice.pipelines: as an exporter intraces(to receive trace data and generate metrics) and as a receiver in a separatemetricspipeline (to forward those metrics to Elasticsearch):processors: elasticapm: {} service: pipelines: traces: receivers: [otlp] processors: [batch, elasticapm] exporters: [elasticapm, elasticsearch/otel] metrics/aggregated-otel-metrics: receivers: [elasticapm] processors: [] exporters: [elasticsearch/otel]For the complete configuration example, refer to Elastic APM connector.
-
Restart the Collector and verify
Restart the Collector after updating your configuration. Wait a few minutes for data to accumulate, then check Kibana APM for services and service maps.
If data still doesn't appear, refer to Enable debug logging to increase Collector verbosity and check for export errors.