Skip to main content

try-one-source-dashboard

Use when the user wants to "try one of my dashboards", "migrate just one", "do a single dashboard end-to-end", "prove it on one real dashboard first", or wants one real proof-of-value before committing — fully migrates ONE of the user's own Grafana/Datadog dashboards into Kibana end-to-end for a side-by-side comparison before bulk migration. For a count/type inventory use scan-o11y-environment; for a migrate/no-migrate verdict use assess-migration-readiness; for diagnosing a single broken uploaded panel use debug-uploaded-kibana-dashboard.

Datos de origen

Repositorio
elastic/observability-migration-platform
Última actividad en el origen
3 de agosto de 2026 a las 21:07
Idioma detectado de SKILL.md
inglés
Estrellas
7
Forks
9

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
try-one-source-dashboard
description
Use when the user wants to "try one of my dashboards", "migrate just one", "do a single dashboard end-to-end", "prove it on one real dashboard first", or wants one real proof-of-value before committing — fully migrates ONE of the user's own Grafana/Datadog dashboards into Kibana end-to-end for a side-by-side comparison before bulk migration. For a count/type inventory use scan-o11y-environment; for a migrate/no-migrate verdict use assess-migration-readiness; for diagnosing a single broken uploaded panel use debug-uploaded-kibana-dashboard.
# Try one of my dashboards (single end-to-end migration) **Audience:** operators of the published `obs-migrate` CLI (PyPI/`uvx`), using public docs and their real source + Elastic/Kibana — not a repo lab harness. Goal: take **one** dashboard the user already owns, migrate it all the way into Kibana, and set up a **side-by-side** so they can judge fidelity before committing to a bulk migration. This is the "prove it on something real" step — narrower than a full migration, higher-signal than inventory or a readiness verdict. This skill writes exactly one dashboard to the target. It is otherwise read-only on the source. ## Prerequisites (install) These skills help **operators** of the published CLI (not a repo checkout). If `obs-migrate` is missing or `doctor` is not **Ready**, follow `install-obs-migrate` first — that skill owns PyPI/`uvx`/pip, extras, and Python/`uv` gotchas. Do not invent alternate install commands here. ```bash uvx --from 'elastic-observability-migration[all]' obs-migrate doctor # After a persistent install, the same check is: obs-migrate doctor ``` Source/Elastic credentials: `connect-to-o11y-source` (and your env exports). ## Step 1 — Scope to a single dashboard How you pin to one dashboard differs by source. **This is the most common place to get it wrong**, so be explicit with the user about which path applies. ### Datadog — by dashboard id (live API) `--dashboard-ids` is **Datadog only** (help text: "Comma-separated Datadog dashboard IDs"). Pass exactly one id: ```bash export DD_API_KEY="..." DD_APP_KEY="..." DD_SITE="datadoghq.com" obs-migrate migrate \ --source datadog \ --input-mode api \ --dashboard-ids abc-def-123 \ --output-dir try_one_out \ --assets dashboards \ --field-profile otel \ --data-view "metrics-*" ``` (`datadog-migrate --source api --dashboard-ids <id>` also works; prefer unified `obs-migrate migrate`.) ### Grafana — by single-dashboard export (no API id selector) Grafana API mode has **no `--dashboard-ids`** selector. To migrate exactly one Grafana dashboard, point a files run at a directory that contains only that one dashboard's exported JSON: ```bash # Put just the one dashboard export in its own directory first. obs-migrate migrate \ --source grafana \ --input-mode files \ --input-dir ./one_dashboard \ --output-dir try_one_out \ --assets dashboards \ --data-view "metrics-*" \ --esql-index "metrics-*" ``` If the user only has live Grafana access, have them export the single dashboard's JSON (Grafana UI: *Share → Export → Save to file*, or the `/api/dashboards/uid/<uid>` endpoint) into an otherwise empty directory, then run the files command above. Do not pretend an API id selector exists for Grafana. Use `--assets dashboards` here — a single-dashboard trial is about the dashboard. (Alerts are a separate Phase D skill.) For Prometheus fidelity, set `--esql-index` to the metrics data stream even when `--data-view` differs as the Kibana UI bind (see `https://github.com/elastic/observability-migration-platform/blob/main/docs/command-contract.md` → Target index flags). ## Step 2 — Add the target and upload For a real side-by-side you want the dashboard **in Kibana**, ideally validated against live data. Add the target endpoints you have, then upload. ```bash export ELASTICSEARCH_ENDPOINT="https://...es..." KIBANA_ENDPOINT="https://...kbn..." KEY="<api-key>" # Re-run Step 1 with live target discovery / query validation: # ...append: --es-url "$ELASTICSEARCH_ENDPOINT" --es-api-key "$KEY" # (Grafana uses native PromQL by default; with --es-url it verifies target # support and downgrades to ES|QL translation if unsupported) # Review native artifacts, then upload via the typed Dashboards API: # try_one_out/dashboards/native/*.native.json obs-migrate upload \ --artifact-dir try_one_out/dashboards \ --kibana-url "$KIBANA_ENDPOINT" \ --kibana-api-key "$KEY" ``` Optional one-shot: append `--upload --kibana-url … --kibana-api-key …` to the Step 1 `migrate` command instead of a separate `upload` (same typed Dashboards API path). Prefer the two-step flow when the user wants to review `native/*.native.json` first. - `upload` reads the **persisted native** payloads under `native/` and sends them byte-for-byte through the typed Dashboards API — that is the only input it accepts. Review `native/*.native.json` (and `ir/*.ir.json`) before uploading. - Adding `--es-url` during Step 1 turns on live target field discovery and emitted-query validation; without it the run stays in offline analysis and panels may look empty for lack of data, not because the translation is wrong. - **Custom-CA / self-signed clusters:** all CLIs accept `--ca-cert <path>` (env `OBS_MIGRATE_CA_CERT`) to verify against a private CA, or `--insecure` (env `OBS_MIGRATE_INSECURE`) to skip verification for testing only. These apply to source, Elasticsearch, and Kibana (including the dashboard upload). ## Step 3 — Do the side-by-side 1. **Read the verdict first:** `try_one_out/dashboards/migration_summary.md` — human-readable verdict, scorecard, per-panel table, and must-fix worklist for the one dashboard. 2. **Drill per panel:** `try_one_out/dashboards/migration_manifest.json` → `panels[].status`, `panels[].grafana_type` (Datadog: `datadog_widget_type`), `panels[].reasons`, and `panels[].verification_packet.semantic_gate`. Expect `migrated_with_warnings` for accepted approximations (e.g. `histogram_quantile` → `PERCENTILE`); hand those to `explain-migration-gaps` rather than treating them as hard failures. 3. **Open both dashboards:** the original in Grafana/Datadog and the uploaded one in Kibana, panel by panel. Compare numbers, series count, and shape. 4. **Optional stronger gates:** `obs-migrate compare` / `validate-side-by-side` for numeric parity; `--smoke` on migrate or `grafana-validate-uploaded` for saved-object checks; render audit (`https://github.com/elastic/observability-migration-platform/blob/main/docs/testing.md`) for Lens render truth. 5. **For any panel that looks wrong or empty in Kibana**, hand off to the `debug-uploaded-kibana-dashboard` skill — it captures the exact ES|QL Kibana is running and classifies the failure (`render_error` vs `field_gap` / `data_gap`). ## Honest limits (tell the user) - **Grafana single-dashboard = a one-file export.** There is no Grafana API id selector; scope by `--input-dir` containing only that dashboard. `--dashboard-ids` is Datadog-only. - **Empty panels are often missing data, not a bug.** A clean translation can still render empty if the target cluster has no matching telemetry. Use `prepare-target-telemetry` and/or `obs-migrate seed-sample-data --artifact-dir try_one_out/dashboards` (tear down with `obs-migrate remove-sample-data --confirm`); say so rather than blaming the translator. Lab seeding is optional investigation — not required for the product path when real target telemetry exists. - **No `--es-url` ⇒ no live validation.** Treat an offline run as directional; it does not prove panels render against real data. - **Degrade gracefully:** unsupported panels are surfaced as `requires_manual` / `not_feasible` with reasons; many others land as `migrated_with_warnings` for documented approximations — relay those, never hide them. ## Do NOT - Do **not** invent a Grafana API `--dashboard-ids` flag — it does not exist for Grafana; use a single-dashboard files export. - Do **not** claim panels are validated when the run had no `--es-url` and no upload smoke / render check. - Do **not** bulk-migrate here. Selecting many dashboards (by folder/tag/datasource/team) or migrating everything is the Phase D "migrate selected / every supported dashboard" skill. - Do **not** cite manifest fields you have not confirmed (e.g. `grafana_type` exists on Grafana manifest panels; open the JSON when unsure). - Do **not** assume a repo checkout or eng-only harness paths. ## See also - `install-obs-migrate` — install/doctor when the CLI is missing or not Ready. - `scan-o11y-environment` skill — inventory of what exists (pick the dashboard to try from here). - `assess-migration-readiness` skill — feasibility verdict and evidence level before trying. - `prepare-target-telemetry` skill — field profile / seed path so panels are not empty. - `explain-migration-gaps` skill — plain-language warnings vs hard stops. - `debug-uploaded-kibana-dashboard` skill — diagnose a single broken uploaded panel. - `revert-migration` skill — remove generated assets; or `obs-migrate cluster delete-dashboards --dashboard-ids <id>` for the one uploaded dashboard. - `obs-migrate upload --help`, `obs-migrate migrate --help` — confirm flags for the installed version. - `https://github.com/elastic/observability-migration-platform/blob/main/docs/command-contract.md` — upload, cluster, and live-extraction flags and artifacts (online docs / repo).
Ver en GitHub