Skip to main content

install-obs-migrate

Use when obs-migrate is missing, doctor fails, the user asks how to install/set up the CLI, uvx/pip fails, Python is too old, extras are missing, or any other migration skill cannot run because the tool is not Ready — owns getting elastic-observability-migration installed and verified before connect/migrate skills proceed. Not for Grafana/Datadog/Elastic credentials (use connect-to-o11y-source).

来源信息

仓库
elastic/observability-migration-platform
最近来源活动
2026年8月3日 21:07
检测到的 SKILL.md 语言
英语
星标
7
Forks
9

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
install-obs-migrate
description
Use when obs-migrate is missing, doctor fails, the user asks how to install/set up the CLI, uvx/pip fails, Python is too old, extras are missing, or any other migration skill cannot run because the tool is not Ready — owns getting elastic-observability-migration installed and verified before connect/migrate skills proceed. Not for Grafana/Datadog/Elastic credentials (use connect-to-o11y-source).
# Install and verify `obs-migrate` **Audience:** operators who need a working `obs-migrate` before any migration. Other skills defer here so install guidance stays in one place. Goal: get a **Ready** `obs-migrate` on this machine, then hand off to the skill the user actually wanted (`connect-to-o11y-source`, `scan-o11y-environment`, migrate skills, etc.). This skill is the **only** place that owns install commands, extras, and doctor gotchas — other skills must defer here instead of inventing install steps. ## When to run this skill Run **before** any other migration skill when any of these are true: - `obs-migrate` / `uvx … obs-migrate` is not found - `obs-migrate doctor` exits non-zero or is not `Ready` - User asks how to install, which extra to use, or why Datadog/Grafana tooling is missing - Default system Python is too old (common on macOS) Do **not** use this skill for vendor/Elastic credentials — that is `connect-to-o11y-source`. ## Supported platforms - **macOS and Linux** only. Windows is not supported. - **Python 3.11+** required (3.11–3.13 is the tested range). - Canonical docs: `https://github.com/elastic/observability-migration-platform/blob/main/docs/command-contract.md` → Install And Setup; `README.md`. ## Step 0 — Detect current state ```bash command -v uvx command -v uv command -v obs-migrate python3 --version ``` Then run doctor with the recommended launcher first (uvx never needs `obs-migrate` on `PATH`). Only use the bare command when Step 0 already found it on `PATH`: ```bash uvx --from 'elastic-observability-migration[all]' obs-migrate doctor # or, if `command -v obs-migrate` succeeded above: # obs-migrate doctor ``` Interpret: | Observation | Action | |---|---| | `doctor` prints `Ready.` | Install is done — hand off to the calling skill | | `command not found: obs-migrate` and no `uv`/`uvx` | Install `uv`, then Step 1 | | `command not found: obs-migrate` but `uvx` works | The bare command was run without a launcher — re-run as `uvx --from 'elastic-observability-migration[all]' obs-migrate …`, `.venv/bin/obs-migrate …`, or after `source .venv/bin/activate` (spell the package out: `PKG` may be unset in this shell) | | Python `<3.11` | Install/use a newer Python (pyenv, python.org, Homebrew `python@3.12`), then retry | | doctor notes Datadog client not installed | Reinstall with `[datadog]` or `[all]` if the user needs Datadog **API** mode | | doctor prints `uv on PATH: no` / `uvx on PATH: no` | Informational, not a blocker — no command shells out to `uvx` at runtime. Install `uv` only if you want the `uvx` launcher | ## Step 1 — Install `uv` (recommended path) [`uv`](https://docs.astral.sh/uv/) provides `uv` + `uvx` (no global pip required): ```bash # https://docs.astral.sh/uv/getting-started/installation/ curl -LsSf https://astral.sh/uv/install.sh | sh # then open a new shell or source the installer hint so uv/uvx are on PATH command -v uvx ``` ## Step 2 — Choose the footprint | User needs | Extra | Notes | |---|---|---| | First-time / unsure / both sources | `[all]` (**default**) | Grafana + Datadog + tooling together | | Grafana / Prometheus only | `[grafana]` or `[all]` | Base package already includes Grafana translation deps; `[all]` is still simplest | | Datadog live API (`--input-mode api`) | `[datadog]` or `[all]` | File-mode Datadog works without the client; API mode needs `datadog-api-client` | | Contributor / repo checkout | `.[all,dev]` via `make sync` | Not the operator path | **Default recommendation:** `[all]` via `uvx` so you are not blocked mid-migration by a missing extra. ## Step 3 — Install and verify (operator path) ### Recommended: ephemeral `uvx` (no venv) ```bash PKG='elastic-observability-migration[all]' # Optional pin: PKG='elastic-observability-migration[all]==1.0.0' uvx --from "$PKG" obs-migrate doctor uvx --from "$PKG" obs-migrate list-samples ``` Always prefix commands with `uvx --from "$PKG"` unless the user wants a persistent install. ### Persistent venv ```bash PKG='elastic-observability-migration[all]' python3 -m venv .venv .venv/bin/pip install "$PKG" .venv/bin/obs-migrate doctor # Or activate once per shell, then use bare obs-migrate: # source .venv/bin/activate && obs-migrate doctor ``` A bare `obs-migrate` only resolves when its install location is on `PATH` — after `source .venv/bin/activate`, or a `pipx install` / `uv tool install` (next section). Otherwise use a launcher: `.venv/bin/obs-migrate …` (explicit path, no activate) or `uvx --from "$PKG" …`. Both venv launchers are relative paths. If the user is not in the directory that holds `.venv`, they get `no such file or directory` instead of `command not found` — have them `cd` there or use the absolute path. If the user hits `command not found: obs-migrate`, they most likely ran the bare command without one of those, in a shell where `PKG` may also be unset — so re-state the launcher with the package spelled out in full, e.g. `uvx --from 'elastic-observability-migration[all]' obs-migrate doctor`. See `README.md` → “If you see command not found”. ### Persistent tool install (bare command, no prefix) When the user wants `obs-migrate` on `PATH` for every shell: ```bash uv tool install 'elastic-observability-migration[all]' export PATH="$HOME/.local/bin:$PATH" obs-migrate doctor ``` The shim lands in `~/.local/bin` (`uv tool dir --bin` prints the real path). Do not drop the `export`: `uv` cannot change the `PATH` of the shell that invoked it, so without it the very next `obs-migrate doctor` fails with the same `command not found` — `uv` only prints a warning. Run `uv tool update-shell` once so later shells work without the export. `pipx install 'elastic-observability-migration[all]'` is equivalent. `uv` resolves against the newest Python present, so add `--python 3.13` when the default is above the tested 3.11–3.13 range. ### GitHub tag fallback (never `@main`) Only if PyPI is unreachable: ```bash PKG='elastic-observability-migration[all]@git+https://github.com/elastic/observability-migration-platform.git@v1.0.0' uvx --from "$PKG" obs-migrate doctor ``` ### Repo checkout (contributors only — not the operator path) ```bash make sync uv run obs-migrate doctor # or: .venv/bin/pip install -e ".[all,dev]" ``` ## Step 4 — Ready checklist (must pass) `obs-migrate doctor` must show: - `Ready.` - Required dependencies `ok` - For Datadog API work: `datadog (datadog-api-client): ok` - `uv`/`uvx` on `PATH` is reported for information only — no command needs it at runtime Then run one offline smoke (still no source credentials needed): ```bash uvx --from 'elastic-observability-migration[all]' obs-migrate list-samples ``` Exit `0` + sample JSON ⇒ install verified. **Hand off** to the skill the user originally asked for. ## Kibana tooling note No external Kibana tool is needed. `obs-migrate migrate` writes native Dashboard-as-Code artifacts (`dashboards/native/*.native.json`) and `obs-migrate upload --artifact-dir <dir>` sends them through the typed Kibana Dashboards API (`PUT /api/dashboards/{id}`) — there is no dashboard-YAML compile step, so nothing installs or fetches `kb-dashboard-cli` / `kb-dashboard-lint`, and `doctor` does not check for them. Migrate and upload work without the `[kibana]` extra. ## Honest limits / Do NOT - **Do NOT** send users to Docker or Windows install paths (unsupported). - **Do NOT** document `@main` git installs — pin a release tag. - **Do NOT** fold Grafana/Datadog/Elastic credential setup into this skill — hand off to `connect-to-o11y-source`. - **Do NOT** duplicate long install blocks in other skills — point here. - **Do NOT** claim install success without a `Ready` doctor (or explain the exact doctor failure and fix it). ## See also - `connect-to-o11y-source` — credentials and live source proof after install. - `evaluate-o11y-permissions` — Elastic/Kibana key capabilities. - `https://github.com/elastic/observability-migration-platform/blob/main/docs/command-contract.md` — Install And Setup (canonical). - `README.md` — short operator install. - PyPI: https://pypi.org/project/elastic-observability-migration/
在 GitHub 查看