﻿---
title: Elastic APM Intake OpenTelemetry Input Package
description: The Elastic APM Intake OpenTelemetry Input Package enables the EDOT (Elastic Distribution of OpenTelemetry) Collector to receive APM data from Elastic...
url: https://docs-v3-preview.elastic.dev/elastic/integration-docs/tree/main/reference/elasticapm_input_otel
products:
  - Elastic integrations
applies_to:
  - Serverless Observability projects: Preview
  - Serverless Security projects: Preview
  - Elastic Stack: Preview since 9.4
---

# Elastic APM Intake OpenTelemetry Input Package
|                                                                                                                               |                                                                   |
|-------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|
| **Version**                                                                                                                   | 0.1.0 <applies-to>: Preview</applies-to> ([View all](#changelog)) |
| **Subscription level**[What's this?](https://www.elastic.co/subscriptions)                                                    | Basic                                                             |
| **Developed by**[What's this?](https://docs-v3-preview.elastic.dev/elastic/integration-docs/tree/main/reference/developed-by) | Elastic                                                           |
| **Minimum Kibana version(s)**                                                                                                 | 9.4.0                                                             |

<admonition title="The Elastic APM Intake OpenTelemetry Input Package integration v0.1.0 is in technical preview">
  To use pre-release integrations, go to the **Integrations** page in Kibana, scroll down, and toggle on the _Display beta integrations_ option.
</admonition>


## Overview

The Elastic APM Intake OpenTelemetry Input Package enables the EDOT (Elastic Distribution of OpenTelemetry) Collector to receive APM data from Elastic APM agents using the [elasticapmintakereceiver](https://github.com/elastic/opentelemetry-collector-components/tree/main/receiver/elasticapmintakereceiver).
This package allows existing Elastic APM agents to send telemetry data to an OpenTelemetry Collector instead of directly to APM Server, enabling integration with OpenTelemetry-based observability pipelines.

### How it works

This package configures the `elasticapmintakereceiver` in the EDOT Collector to accept HTTP data via the APM Intake V2 format. Elastic APM agents can then be configured to point to the collector endpoint instead of APM Server.
The receiver accepts traces, metrics, and logs from Elastic APM agents and forwards them through the OpenTelemetry pipeline for processing and export to Elasticsearch.

## What data does this integration collect?

This integration collects APM telemetry data from Elastic APM agents:

| Data Type | Description                                               |
|-----------|-----------------------------------------------------------|
| Traces    | Distributed tracing data including spans and transactions |
| Metrics   | Application performance metrics                           |
| Logs      | Application logs correlated with traces                   |


## Compatibility

- **Elastic Stack version 9.4.0 or later is required**
- Only the APM Intake V2 protocol is supported
- RUM (Real User Monitoring) intake and earlier protocols are not supported
- Compatible with Elastic APM agents that support the Intake V2 protocol


## How do I deploy this integration?


### Prerequisites

- Elastic Stack version 9.4.0 or later
- Elastic Agent with EDOT Collector support
- Elastic APM agents configured to send data to the collector endpoint


### Agent-based deployment

Elastic Agent must be installed. For more details, check the Elastic Agent [installation instructions](https://docs-v3-preview.elastic.dev/elastic/docs-content/tree/main/reference/fleet/install-elastic-agents). You can install only one Elastic Agent per host.

### Configuration

Configure the following settings:
1. **Endpoint**: The address where the receiver listens for APM agent connections (default: `localhost:8200`). The default only accepts connections from the same host. To accept traffic from remote APM agents, set this to `0.0.0.0:8200` or a specific bind IP/port reachable by your agents.
2. **TLS Settings** (optional): Enable TLS for encrypted connections between APM agents and the receiver. When `Enable TLS` is on, both the TLS Certificate File and TLS Key File must be provided; the TLS Client CA File enables mutual TLS.
3. **API key authentication** (optional): Validate APM API keys via the apikeyauth extension. Requires the Elasticsearch endpoint used for API key validation; if missing, the receiver fails to start.
4. **Data Stream Dataset** (optional): Override the dataset used to route APM data into Elasticsearch. Defaults to `elasticapmintakereceiver`.


### Known limitations

- **Agent Configuration**: Fetching APM Central Configurations from Elasticsearch is not supported. The receiver's agent config feature requires an Elasticsearch connection that this package does not expose. The Enable Agent Configuration option must remain disabled.


### APM Agent Configuration

Configure your Elastic APM agents to point to the collector:
```bash
# Example environment variables for APM agents
ELASTIC_APM_SERVER_URL=http://localhost:8200
```

For TLS-enabled connections:
```bash
ELASTIC_APM_SERVER_URL=https://localhost:8200
ELASTIC_APM_SERVER_CERT=/path/to/server.crt
```


### Validation

Once configured, you can verify data is being received by checking for APM documents in Elasticsearch:
1. Navigate to Kibana > Discover
2. Search for APM-related indices (for example, `traces-*`, `metrics-*`, `logs-*`)
3. Verify that documents from your instrumented applications appear


## Troubleshooting

For help with Elastic ingest tools, check [Common problems](https://www.elastic.co/docs/troubleshoot/ingest/fleet/common-problems).

### Common Issues

- **Connection refused**: Ensure the endpoint is accessible from the APM agents
- **TLS errors**: Verify certificate paths and that the APM agent trusts the server certificate
- **No data appearing**: Check that APM agents are using the Intake V2 protocol


## Scaling

For more information on architectures that can be used for scaling this integration, check the [Ingest Architectures](https://www.elastic.co/docs/manage-data/ingest/ingest-reference-architectures) documentation.

## Reference


### Inputs used

This package uses the [Elastic APM Intake Receiver](https://github.com/elastic/opentelemetry-collector-components/tree/main/receiver/elasticapmintakereceiver) from the Elastic OpenTelemetry Collector Components. For the supported signal types (traces, metrics, logs) and field mappings, see the receiver's [`metadata.yaml`](https://github.com/elastic/opentelemetry-collector-components/blob/main/receiver/elasticapmintakereceiver/metadata.yaml) and `README.md`.

## Changelog

<dropdown title="Changelog">
  | Version   | Details                                                                                                               | Minimum Kibana version |
  |-----------|-----------------------------------------------------------------------------------------------------------------------|------------------------|
  | **0.1.0** | **Enhancement** ([View pull request](https://github.com/elastic/integrations/pull/17114))Initial draft of the package | 9.4.0                  |
</dropdown>