O
observability-edot-python-migrate
About observability-edot-python-migrate
This skill guides developers migrating Python applications from classic Elastic APM to EDOT. It outlines removal of legacy settings, installation of automatic instrumentation, and configuration for OTLP export.
Key features
- 01Remove classic APM dependencies and settings
- 02Install elastic-opentelemetry
- 03Install auto-instrumentation with edot-bootstrap
- 04Launch the app with opentelemetry-instrument
- 05Configure the OTLP endpoint and authorization header
Use cases
- 01Migrate a Python service from classic APM to EDOT
- 02Adjust an application entrypoint to enable auto-instrumentation
- 03Set the telemetry service name, endpoint, and authentication
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ elastic/ agent-skills --skill observability-edot-python-migrateAfter installing, type/observability-edot-python-migratein Claude Code to confirm it loaded.
Details
From the project READMEEDOT Python Migration
Read the migration guide before making changes:
Guidelines
- Remove ALL classic APM references:
elastic-apmfrom requirements,ElasticAPM(app)/elasticapm.contrib.*from application code,app.config['ELASTIC_APM']blocks, and allELASTIC_APM_*env vars - Install
elastic-opentelemetryvia pip (add torequirements.txtor equivalent) - Run
edot-bootstrap --action=installduring image build to install auto-instrumentation packages for detected libraries - Wrap the application entrypoint with
opentelemetry-instrument— e.g.opentelemetry-instrument gunicorn app:app. Without this, no telemetry is collected - Set exactly three required environment variables:
OTEL_SERVICE_NAME(replacesELASTIC_APM_SERVICE_NAME)OTEL_EXPORTER_OTLP_ENDPOINT— must be the managed OTLP endpoint or EDOT Collector URL. Do NOT reuse the oldELASTIC_APM_SERVER_URLvalue. Never use an APM Server URL (noapm-server, no:8200, no/intake/v2/events)OTEL_EXPORTER_OTLP_HEADERS—"Authorization=ApiKey <key>"or"Authorization=Bearer <token>"(replacesELASTIC_APM_SECRET_TOKEN)
- Do NOT set
OTEL_TRACES_EXPORTER,OTEL_METRICS_EXPORTER, orOTEL_LOGS_EXPORTER— the defaults are already correct - Never run both classic
elastic-apmand EDOT on the same application
Examples
See the EDOT Python migration guide for complete examples.
Comments
Markdown supported