Loading

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.

Note

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:

  • elasticapm processor, which enriches OpenTelemetry spans with Elastic-specific attributes. Declare it under processors.
  • elasticapm connector, which generates pre-aggregated APM metrics from trace data. Declare it under connectors. This component is used as an exporter in the traces pipeline, and as a receiver in a dedicated metrics pipeline.

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.

  1. Check that the connector is declared under connectors

    Open your Collector configuration and confirm elasticapm appears under connectors, not only under processors:

    connectors:
      elasticapm: {}
    		
  2. Wire the connector as an exporter in traces and a receiver in metrics pipeline

    The elasticapmconnector must appear in two places in service.pipelines: as an exporter in traces (to receive trace data and generate metrics) and as a receiver in a separate metrics pipeline (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.

  3. 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.