---
title: Collect application data
description: Use Elastic APM agents or an OpenTelemetry language SDK to instrument a service in the language its written in: OpenTelemetry: OpenTelemetry is an open...
url: https://docs-v3-preview.elastic.dev/elastic/docs-content/pull/4236/solutions/observability/apm/ingest
products:
  - APM
  - Elastic Cloud Serverless
  - Elastic Observability
---

# Collect application data
<note>
  **For Observability Serverless projects**, the **Admin** role or higher is required to send APM data to Elastic. To learn more, refer to [Assign user roles and privileges](/elastic/docs-content/pull/4236/deploy-manage/users-roles/cloud-organization/user-roles#general-assign-user-roles).
</note>


## Language-specific options

Use Elastic APM agents or an OpenTelemetry language SDK to instrument a service in the language its written in:
- [**OpenTelemetry**](https://docs-v3-preview.elastic.dev/elastic/docs-content/pull/4236/solutions/observability/apm/opentelemetry): OpenTelemetry is an open source set of APIs, SDKs, tooling, and integrations that enable the capture and management of telemetry data from your services and applications. Elastic offers [Elastic Distributions of OpenTelemetry (EDOT)](https://docs-v3-preview.elastic.dev/elastic/opentelemetry/tree/main/reference/edot-sdks), which are customized versions of [OpenTelemetry language SDKs](https://opentelemetry.io/docs/languages/) that are optimized to work with an Elastic backend.
- [**Elastic APM agents**](https://docs-v3-preview.elastic.dev/elastic/docs-content/pull/4236/solutions/observability/apm/apm-agents): Elastic APM agents are instrumentation libraries written in the same language as your service.

**Not sure which method is right for you?** Compare the available options.

### Capabilities


|                                                | Elastic Distributions of OpenTelemetry (EDOT)                                                                                                                                                                             | Elastic APM agent                                                                                                                                                                                                                                                          |
|------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Support level**Support level                 | Fully supported for available languages                                                                                                                                                                                   | Fully supported                                                                                                                                                                                                                                                            |
| **Data protocol**Data protocol                 | [OpenTelemetry protocol (OTLP)](https://opentelemetry.io/docs/specs/otel/protocol/)OpenTelemetry protocol (OTLP)                                                                                                          | Elastic protocol                                                                                                                                                                                                                                                           |
| **Central configuration**Central configuration | `product: preview` Supported*Refer to*Refer to [*Central configuration*](https://docs-v3-preview.elastic.dev/elastic/opentelemetry/tree/main/reference/central-configuration)*Central configuration*Central configuration | Supported*Refer to*Refer to [*APM agent central configuration*](https://docs-v3-preview.elastic.dev/elastic/docs-content/pull/4236/solutions/observability/apm/apm-server/apm-agent-central-configuration)*APM agent central configuration*APM agent central configuration |

For a comparison of EDOT and APM data streams, refer to [Comparison with classic APM data streams](https://docs-v3-preview.elastic.dev/elastic/opentelemetry/tree/main/reference/compatibility/data-streams#comparison-with-classic-apm-data-streams).

### Availability


| Language           | Elastic Distributions of OpenTelemetry (EDOT) | Elastic APM agent |
|--------------------|-----------------------------------------------|-------------------|
| **Android**Android | EDOT Android                                  | Not available     |
| **Go**Go           | Not available                                 | Go agent          |
| **iOS**iOS         | EDOT iOS                                      | Not available     |
| **Java**Java       | EDOT Java                                     | Java agent        |
| **.NET**.NET       | EDOT .NET                                     | .NET agent        |
| **Node.js**Node.js | EDOT Node.js                                  | Node.js agent     |
| **PHP**PHP         | EDOT PHP                                      | PHP agent         |
| **Python**Python   | EDOT Python                                   | Python agent      |
| **Ruby**Ruby       | Not available                                 | Ruby agent        |


## Service-specific options

Elastic also offers several tools to help you collect data from specific services:
- **Kubernetes**: The Elastic APM attacher for Kubernetes simplifies the instrumentation and configuration of your application pods. Read more in the [APM attacher for Kubernetes docs](https://docs-v3-preview.elastic.dev/elastic/apm-k8s-attacher/tree/main/reference).
- **AWS Lambda Functions**: Helps you monitor your AWS Lambda functions. Read more in the [APM Architecture for AWS Lambda docs](https://docs-v3-preview.elastic.dev/elastic/apm-aws-lambda/tree/main/reference).
- **Jaeger (deprecated)**: Helps you to switch an existing Jaeger setup from the default Jaeger backend to the Elastic Stack. Read more in [Integrate with Jaeger](https://docs-v3-preview.elastic.dev/elastic/docs-content/pull/4236/solutions/observability/apm/ingest/jaeger).