|
| 1 | +<!-- |
| 2 | +Goal of this doc: |
| 3 | +The user is able to understand the differences between the APM Python agent and EDOT |
| 4 | +--> |
| 5 | + |
| 6 | +# Compare EDOT Python and the Elastic APM Python agent |
| 7 | + |
| 8 | +This guide will highlight the major differences between the [Elastic APM Python agent](https://www.elastic.co/guide/en/apm/agent/python/current/getting-started.html) and the Elastic Distribution of OpenTelemetry Python (EDOT Python). |
| 9 | +For step-by-step instructions on setting up EDOT Python refer to the [Get started guide](./get-started.md). |
| 10 | + |
| 11 | +## We are a distribution |
| 12 | + |
| 13 | +As a distribution of OpenTelemetry, EDOT Python follows certain standards, but there is still some space for innovation. |
| 14 | + |
| 15 | +## Bold on autoinstrumentation |
| 16 | + |
| 17 | +We have chosen to make autoinstrumentation as simple as possible so you can just focus on your code; we favored an experience that requires minimal changes to your application code. The upstream OpenTelemetry configuration has more options than the distribution requires. Our default configuration is listed [here](https://github.com/elastic/elastic-otel-python?tab=readme-ov-file#configuration). |
| 18 | + |
| 19 | +## Bring your own instrumentation |
| 20 | + |
| 21 | +In EDOT Python we decided to not ship all the available instrumentations in order to accommodate environments where installing more packages than requested may be an issue. |
| 22 | +We provide a tool to discover available instrumentations automatically that can be added to your build workflow. See [Get started](https://github.com/elastic/elastic-otel-python/blob/main/docs/get-started.md#install-the-available-instrumentation). |
| 23 | + |
| 24 | +## Limitations |
| 25 | + |
| 26 | +### Central and Dynamic configuration |
| 27 | + |
| 28 | +Currently EDOT Python does not have an equivalent of the [central configuration feature](https://www.elastic.co/guide/en/observability/current/apm-agent-configuration.html) that the Elastic APM Python agent supports. When using EDOT Python, all the configurations are static and should be provided to the application with other configurations, e.g. environment variables. |
| 29 | + |
| 30 | +### AWS lambda |
| 31 | + |
| 32 | +At the moment, we are not building a custom lambda layer for our Python distribution. You can refer to the upstream [Lambda Auto-Instrumentation](https://opentelemetry.io/docs/faas/lambda-auto-instrument/). |
| 33 | + |
| 34 | +### Missing instrumentations |
| 35 | + |
| 36 | +Not all instrumentations we have in Elastic APM Python Agent have an OpenTelemetry counterpart. But we may port them if they are requested by users. |
| 37 | + |
| 38 | +At the time of writing these docs, the following libraries are missing an OpenTelemetry instrumentation: |
| 39 | +- aiobotocore |
| 40 | +- aiomysql |
| 41 | +- aiopg |
| 42 | +- aioredis |
| 43 | +- Azure storage and Azure queue |
| 44 | +- Graphene |
| 45 | +- httplib2 |
| 46 | +- pylibmc |
| 47 | +- pyodbc |
| 48 | +- pymssql |
| 49 | +- Sanic |
| 50 | +- zlib |
| 51 | + |
| 52 | +### Integration with structured logging |
| 53 | + |
| 54 | +EDOT Python does not have any [structlog integration](https://www.elastic.co/guide/en/apm/agent/python/current/logs.html#structlog) at the moment. |
| 55 | + |
| 56 | +### Span compression |
| 57 | + |
| 58 | +EDOT Python does not implement [span compression](https://www.elastic.co/guide/en/observability/current/apm-data-model-spans.html#apm-spans-span-compression). |
| 59 | + |
| 60 | +### Breakdown metrics |
| 61 | + |
| 62 | +EDOT Python is not sending metrics that power the [Breakdown metrics](https://www.elastic.co/guide/en/apm/guide/current/data-model-metrics.html#_breakdown_metrics). |
| 63 | + |
| 64 | +<!-- ✅ What they should do next --> |
| 65 | +## Next steps |
| 66 | + |
| 67 | +* [Get started](./get-started.md) with EDOT Python. |
| 68 | +* Learn how to add [manual instrumentation](./manual-instrumentation.md). |
| 69 | +* Learn more about viewing and interpreting data in the [Observability guide](https://www.elastic.co/guide/en/observability/current/apm.html). |
0 commit comments