mcpField
O
observability-edot-python-migrate

observability-edot-python-migrate

github.com/elasticCloud & DevOps6022.7k installsUpdated today
Repository

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

  1. 01Remove classic APM dependencies and settings
  2. 02Install elastic-opentelemetry
  3. 03Install auto-instrumentation with edot-bootstrap
  4. 04Launch the app with opentelemetry-instrument
  5. 05Configure the OTLP endpoint and authorization header

Use cases

  1. 01Migrate a Python service from classic APM to EDOT
  2. 02Adjust an application entrypoint to enable auto-instrumentation
  3. 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-migrate

After installing, type/observability-edot-python-migratein Claude Code to confirm it loaded.

Details

From the project README

EDOT Python Migration

Read the migration guide before making changes:

Guidelines

  1. Remove ALL classic APM references: elastic-apm from requirements, ElasticAPM(app) / elasticapm.contrib.* from application code, app.config['ELASTIC_APM'] blocks, and all ELASTIC_APM_* env vars
  2. Install elastic-opentelemetry via pip (add to requirements.txt or equivalent)
  3. Run edot-bootstrap --action=install during image build to install auto-instrumentation packages for detected libraries
  4. Wrap the application entrypoint with opentelemetry-instrument — e.g. opentelemetry-instrument gunicorn app:app. Without this, no telemetry is collected
  5. Set exactly three required environment variables:
    • OTEL_SERVICE_NAME (replaces ELASTIC_APM_SERVICE_NAME)
    • OTEL_EXPORTER_OTLP_ENDPOINT — must be the managed OTLP endpoint or EDOT Collector URL. Do NOT reuse the old ELASTIC_APM_SERVER_URL value. Never use an APM Server URL (no apm-server, no :8200, no /intake/v2/events)
    • OTEL_EXPORTER_OTLP_HEADERS — "Authorization=ApiKey <key>" or "Authorization=Bearer <token>" (replaces ELASTIC_APM_SECRET_TOKEN)
  6. Do NOT set OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER, or OTEL_LOGS_EXPORTER — the defaults are already correct
  7. Never run both classic elastic-apm and EDOT on the same application

Examples

See the EDOT Python migration guide for complete examples.

Comments

Markdown supported