Adopt Datadog metric dashboards → Elastic (workshop)
When to use
Metrics adoption for existing Elastic customers: bring Datadog dashboard exports via observability-migration-platform datadog-migrate
(--field-profile otel, upstream default) into Kibana on Observability Serverless, optionally with Cursor + Elastic Agent Skills.
Legacy datadog_dashboard_to_elastic.py + publish_grafana_drafts_kibana.py remain for comparison.
Prerequisites
mig-to-kbn/+uv+ Python ≥ 3.11 (VM:/opt/mig-to-kbn-venv)- This repository (workshop VM:
/root/workshop)
Live telemetry (OTLP → Elastic mOTLP)
With Alloy running (./scripts/start_workshop_otel.sh after source ~/.bashrc), run ./scripts/send_datadog_otel.sh to push Datadog-style OpenTelemetry traces, metrics, and logs to 127.0.0.1:4318 → Alloy → Elastic managed OTLP (see tools/datadog_otel_to_elastic.py).
Batch CLI (legacy draft JSON)
mkdir -p build/elastic-datadog-dashboards
python3 tools/datadog_dashboard_to_elastic.py assets/datadog/dashboards/*.json --out-dir build/elastic-datadog-dashboards
python3 tools/publish_grafana_drafts_kibana.py --drafts-dir build/elastic-datadog-dashboards
One command (workshop VM)
bash /root/workshop/scripts/migrate_datadog_dashboards_to_serverless.sh
Uses datadog-migrate (Kibana-only --upload by default; WORKSHOP_MIG_ES_VALIDATE=1 adds --es-url + live validation), stage dir with monitors/ for monitor JSON, and publish_datadog_alert_drafts_kibana.py for the four workshop rules. Artifacts: build/mig-datadog/, build/elastic-alerts/.
Publish rules only (after you have monitor-*-elastic.json):
python3 tools/publish_datadog_alert_drafts_kibana.py --alerts-dir build/elastic-alerts
Cursor + AI workflow
- Open the repo in Cursor (or your agentic IDE).
- Install upstream skills (for example
npx skills add elastic/agent-skills --skill kibana-dashboards). - Paste one Datadog dashboard JSON and one generated
build/mig-datadog/dashboards/yaml/*.yamlsnippet (or legacyyaml/, or*-elastic-draft.json); ask the model to propose ES|QL or metric-query equivalents and Lens shapes for Serverless. - In Cursor, use env from
source ~/.bashrc(ES_URL,ES_PASSWORD,ES_API_KEY) when following the kibana-dashboards skill for API calls.
Safety
- Do not paste long-lived API keys into shared chats.
- Treat drafts as starting points; validate every query against real indices and cardinality.