Source-agnostic observability migration platform (Grafana, Datadog → Kibana).
Project description
Observability Migration Platform
Migrate Grafana and Datadog dashboards, alerts, and monitors into Kibana. Unsupported translations are marked for manual review instead of being silently dropped.
Use one CLI: obs-migrate.
Pre-1.0. Distributed as a Python package only — there is no standalone
binary. The package is not on PyPI yet, so install from a pinned GitHub
release tag (never @main) until publishing is enabled.
Requirements
| Need | Detail |
|---|---|
| OS | macOS or Linux (Windows is not supported) |
| Python | 3.11 or newer (3.11–3.13 recommended) |
| Installer | uv on PATH (provides uv and uvx) |
You do not need to clone this repository. Install with the [all] extra so
Grafana, Datadog, and Kibana compile/lint dependencies are included together.
Quick start
Set the package source once, then reuse it:
# Pin the latest release tag (example below). See:
# https://github.com/elastic/observability-migration-platform/releases
PKG='elastic-observability-migration[all]@git+https://github.com/elastic/observability-migration-platform.git@v0.3.0'
When the package is on PyPI, use:
PKG='elastic-observability-migration[all]'
1. Check the install
uvx --from "$PKG" obs-migrate doctor
doctor checks your Python version, required imports, optional extras,
uv/uvx, and Kibana compile tools. Exit code 0 means ready; a non-zero
exit prints what to fix.
2. Try a bundled sample (offline)
uvx --from "$PKG" obs-migrate list-samples
Copy a sample’s input_dir from the JSON output, then:
uvx --from "$PKG" obs-migrate migrate \
--source grafana --input-mode files \
--input-dir "<sample-input_dir>" \
--output-dir ./out --assets dashboards --compile
3. Migrate your assets
Use the same migrate command with your exported Grafana or Datadog JSON
(--input-dir), or use --input-mode api with credentials. For upload,
verification, and the full flag reference, see
docs/command-contract.md.
Other install options
| When | How |
|---|---|
| Persistent virtualenv | python3 -m venv .venv && .venv/bin/pip install "$PKG" then .venv/bin/obs-migrate … |
| Contributor checkout | make sync (or uv sync --locked --all-extras) then uv run obs-migrate … |
| Narrower extras | Use [grafana], [datadog], or [kibana] instead of [all] |
On Python 3.11, Kibana compile tools are not installed into the
environment (they require 3.12+). doctor reports uvx fallback, and uv
must remain on PATH.
The older grafana-migrate and datadog-migrate commands still work as
compatibility aliases. Prefer obs-migrate.
Compatibility
| Area | Detail |
|---|---|
| OS | Supported on macOS and Linux. CI runs on Ubuntu; packaging is also smoke-tested on macOS. Windows is not supported. |
| Python | Supported: 3.11+. CI pytest: 3.11, 3.12, 3.13. Clean-install smoke in CI: 3.11 and 3.12 (also verified on 3.13 and 3.14). Python 3.10 and older are rejected. |
| Kibana | Elastic Serverless and ES|QL-capable Stack — docs/targets/kibana.md |
| Grafana | Dashboard JSON v1; alerts via the unified alerting API — docs/sources/grafana.md |
| Datadog | Dashboards and monitors via the public API — docs/sources/datadog.md |
Documentation
| Doc | Use when |
|---|---|
docs/README.md |
Docs index |
docs/command-contract.md |
Canonical CLI commands and install detail |
docs/known-limitations.md |
Known gaps |
docs/architecture.md |
How the pipeline fits together |
CONTRIBUTING.md |
Dev setup, releasing, and PR expectations |
SUPPORT.md |
Getting help |
SECURITY.md |
Vulnerability reporting |
Bugs and feature requests: open an issue.
Licensing
First-party content is source-available under the Elastic License 2.0
(ELv2); see LICENSE. Redistributed third-party material is
listed in THIRD_PARTY_NOTICES.md. CI runs a
locked license check and CycloneDX SBOM — see
.github/workflows/license-check.yml.
Trademarks
Grafana is a trademark of Raintank, Inc. d/b/a Grafana Labs. Datadog is a trademark of Datadog, Inc. Prometheus and Kubernetes are trademarks of The Linux Foundation. Kibana and Elastic are trademarks of Elasticsearch B.V. All other trademarks are the property of their respective owners. Use of these names here is solely for interoperability and identification and does not imply affiliation or endorsement.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file elastic_observability_migration-0.4.0rc1.tar.gz.
File metadata
- Download URL: elastic_observability_migration-0.4.0rc1.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
526240d970f67b66e1334328dff02ee806a628ebcddf35d9e607b368c85f0d41
|
|
| MD5 |
df266923a204b04c086535b9e5bffbf6
|
|
| BLAKE2b-256 |
c2e59ab4f8c1e88138bab8e7761d66589f7f8d3b3eaeffe7183d6048ac6afd42
|
Provenance
The following attestation bundles were made for elastic_observability_migration-0.4.0rc1.tar.gz:
Publisher:
release.yml on elastic/observability-migration-platform
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elastic_observability_migration-0.4.0rc1.tar.gz -
Subject digest:
526240d970f67b66e1334328dff02ee806a628ebcddf35d9e607b368c85f0d41 - Sigstore transparency entry: 2257223087
- Sigstore integration time:
-
Permalink:
elastic/observability-migration-platform@56482e002f40ec105ce5c4709be430fc15d685bb -
Branch / Tag:
refs/tags/v0.4.0rc1 - Owner: https://github.com/elastic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@56482e002f40ec105ce5c4709be430fc15d685bb -
Trigger Event:
push
-
Statement type:
File details
Details for the file elastic_observability_migration-0.4.0rc1-py3-none-any.whl.
File metadata
- Download URL: elastic_observability_migration-0.4.0rc1-py3-none-any.whl
- Upload date:
- Size: 896.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48d2e0b3ce07224b9c01790443ff9580d0bc02ea72211c63c0c8543f2a8864fa
|
|
| MD5 |
6c0f63c56298a9e9b274565a7283f38a
|
|
| BLAKE2b-256 |
794092400d0166c05e692dfb0989a2aad9e715dd0caadb21de87dffb9768fe07
|
Provenance
The following attestation bundles were made for elastic_observability_migration-0.4.0rc1-py3-none-any.whl:
Publisher:
release.yml on elastic/observability-migration-platform
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elastic_observability_migration-0.4.0rc1-py3-none-any.whl -
Subject digest:
48d2e0b3ce07224b9c01790443ff9580d0bc02ea72211c63c0c8543f2a8864fa - Sigstore transparency entry: 2257223095
- Sigstore integration time:
-
Permalink:
elastic/observability-migration-platform@56482e002f40ec105ce5c4709be430fc15d685bb -
Branch / Tag:
refs/tags/v0.4.0rc1 - Owner: https://github.com/elastic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@56482e002f40ec105ce5c4709be430fc15d685bb -
Trigger Event:
push
-
Statement type: