mcpbeat

Observability Edot Python Migrate

elastic/agent-observability-edot-python-migrate

> Migrate a Python application from the classic Elastic APM Python agent to the EDOT Python agent. Use when switching from elastic-apm to elastic-opentelemetry.

This is a copy. The original lives at elastic/observability-edot-python-migrate.

531 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
546
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/elastic/agent-skills --skill observability-edot-python-migrate

The instruction itself

3 sections, as written by the author

EDOT Python Migration

Read the migration guide before making changes:

Guidelines

  • 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

  • Install elastic-opentelemetry via pip (add to requirements.txt or equivalent)
  • Run edot-bootstrap --action=install during 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 (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)

  • Do NOT set OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER, or OTEL_LOGS_EXPORTER — the defaults are already

correct

  • Never run both classic elastic-apm and EDOT on the same application

Examples

See the EDOT Python migration guide

for complete examples.

How to use it

Copy the folder

Take elastic/agent-observability-edot-python-migrate from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.