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.

Informations de source

Dépôt
elastic/observability-migration-platform
Dernière activité de la source
3 août 2026 à 21:07
Langue détectée de SKILL.md
anglais
Étoiles
7
Forks
9

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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).
Voir sur GitHub