Skip to main content

obz-core

Multi-backend observability CLI for querying metrics, logs, and traces across 12 backends. This skill should be used when the user runs obz commands, constructs metric/log/trace queries, configures providers, parses obz JSON output, or troubleshoots obz errors. Covers all core commands (metric query/list/info/labels/label-values/series, log search, trace search/get), global flags, time formats, output modes, config files, and exit codes.

Datos de origen

Repositorio
alibaba/obz-cli
Última actividad en el origen
29 de abril de 2026 a las 07:18
Idioma detectado de SKILL.md
inglés
Estrellas
27
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
obz-core
description
Multi-backend observability CLI for querying metrics, logs, and traces across 12 backends. This skill should be used when the user runs obz commands, constructs metric/log/trace queries, configures providers, parses obz JSON output, or troubleshoots obz errors. Covers all core commands (metric query/list/info/labels/label-values/series, log search, trace search/get), global flags, time formats, output modes, config files, and exit codes.
# obz Core Skill obz is a multi-backend observability CLI. It gives you one set of commands for metrics, logs, and traces across 12 backends. Output defaults to structured JSON, built for AI agent consumption. ## Providers | Alias | Full Name | Backend | |-------|-----------|---------| | `vm` | `victoriametrics` | VictoriaMetrics | | `vl` | `victorialogs` | VictoriaLogs | | `vt` | `victoriatraces` | VictoriaTraces | | `sls` | `sls` | Alibaba Cloud SLS | | `dd` | `datadog` | Datadog | | `prom` | `prometheus` | Prometheus | | `jg` | `jaeger` | Jaeger | | `os` | `opensearch` | OpenSearch | | `es` | `elasticsearch` | Elasticsearch | | `mimir` | `mimir` | Grafana Mimir | | `loki` | `loki` | Grafana Loki | | `tempo` | `tempo` | Grafana Tempo | Either the alias or the full name can be passed to `-p`. ## Global Flags ``` -p, --provider <name> Provider name or config instance (required) --endpoint <url> Backend URL (omit if configured) -o, --output <fmt> Output format: json | table | csv [default: json] --timeout <dur> Query timeout (e.g. 30s) -v, --verbose Show HTTP request/response details on stderr ``` Auth credentials are configured in `config.yaml` under `providers.<name>.auth`, not via CLI flags. ## Commands ### metric query Execute a metric query. Omitting `--step` runs an instant query; providing it runs a range query. ``` obz metric query -p <prov> -q <expr> [--from now-1h] [--to now] [--step 1m] [-n 1000] [--timeout 30s] ``` Flags: - `-q, --query <expr>` (required) Query expression. Language depends on the provider. - `--from <time>` Start time. Default: `now-1h`. - `--to <time>` End time. Default: `now`. - `--step <duration>` Range query step (e.g. `15s`, `1m`). Omit for instant query. - `-n, --limit <int>` Max series returned. Default: `1000`. - `--timeout <duration>` Query timeout (e.g. `30s`). ### metric list List available metric names. ``` obz metric list -p <prov> [-m <filter>] [--from <time>] [-n 100] ``` Flags: - `-m, --match <expr>` Filter expression. - `--from <time>` Start time. - `-n, --limit <int>` Max results. Default: `100`. ### metric info Get metric metadata (type, description, unit). ``` obz metric info -p <prov> <metric_name> ``` Positional: - `<metric_name>` (required) The metric to look up. ### metric labels List label names. ``` obz metric labels -p <prov> [-m <selector>] [--from <time>] ``` Flags: - `-m, --match <expr>` Series selector to scope the results. - `--from <time>` Start time. ### metric label-values List values for a specific label. ``` obz metric label-values -p <prov> <label_name> [-m <selector>] [--from <time>] [-n 100] ``` Positional: - `<label_name>` (required) The label whose values to list. Flags: - `-m, --match <expr>` Series selector. - `--from <time>` Start time. - `-n, --limit <int>` Max results. Default: `100`. ### metric series Find time series matching one or more selectors. ``` obz metric series -p <prov> -m <selector> [-m ...] [--from <time>] [--to <time>] [-n 1000] ``` Flags: - `-m, --match <selector>` (required, repeatable) Series selector. - `--from <time>` Start time. - `--to <time>` End time. - `-n, --limit <int>` Max results. Default: `1000`. ### log search Search for log entries. ``` obz log search -p <prov> [-q '*'] [--from now-15m] [--to now] [-n 100] ``` Flags: - `-q, --query <expr>` Query expression. Default: `*`. - `--from <time>` Start time. Default: `now-15m`. - `--to <time>` End time. Default: `now`. - `-n, --limit <int>` Max entries. Default: `100`. ### trace search Search for spans across traces. ``` obz trace search -p <prov> -q <expr> [--from now-1h] [--to now] [-n 20] ``` Flags: - `-q, --query <expr>` (required) Service name or query expression. - `--from <time>` Start time. Default: `now-1h`. - `--to <time>` End time. Default: `now`. - `-n, --limit <int>` Max traces. Default: `20`. ### trace get Get all spans for a specific trace by ID. ``` obz trace get -p <prov> <trace_id> [--from now-1h] [--to now] ``` Positional: - `<trace_id>` (required) Hex trace ID. Flags: - `--from <time>` Start time. Default: `now-1h`. - `--to <time>` End time. Default: `now`. ## Time Formats The `--from` and `--to` flags accept three formats: | Format | Example | Notes | |--------|---------|-------| | Relative | `now-1h`, `now-15m`, `now-2d` | Units: `s`, `m`, `h`, `d`, `w` | | RFC 3339 | `2024-01-01T00:00:00Z` | UTC timestamp | | Unix timestamp | `@1704067200` | Prefix with `@`. Accepts 10-digit (seconds) or 13-digit (milliseconds). | No fractional or compound durations. `1h30m` is not valid; use `90m` instead. ## Output Formats ``` -o json Structured JSON envelope (default, best for AI agents) -o table Human-readable table -o csv Comma-separated values ``` JSON responses follow a consistent envelope: ```json { "status": "success", "data": { ... }, "metadata": { "provider": "victoriametrics", "query_language": "MetricsQL", "time_range": { "from": "...", "to": "..." }, "total_count": 42 } } ``` On error, the envelope contains an `error` object instead of `data`: ```json { "status": "error", "error": { "category": "auth", "code": "auth_missing", "message": "...", "recoverable": false, "suggestion": "..." } } ``` ## Provider Support Matrix Run `obz provider list` for a live support matrix. Summary: | Signal | Providers | |--------|-----------| | Metric | vm, sls, dd, prom, mimir | | Log | vl, sls, dd, os, es, loki | | Trace | vt, sls, dd, jg, os, es, tempo | Some providers register extension commands (e.g. `log stats` for vl/loki, `trace services` for vt/jg, `log aggregate` for dd). Run `obz log --help -p <prov>` or `obz trace --help -p <prov>` to see available extensions. ## Configuration Config files live in `~/.config/obz/` (override with `OBZ_CONFIG_DIR`). ### config.yaml ```yaml providers: vm: endpoint: http://localhost:8428 auth: token: ${env:OBZ_VM_TOKEN} sls: endpoint: http://cn-hangzhou.log.aliyuncs.com project: my-project metricstore: my-metricstore logstore: my-logstore auth: access-key-id: ${file:~/.obz/sls-ak.txt} access-key-secret: ${file:~/.obz/sls-sk.txt} dd-prod: provider: dd endpoint: https://api.datadoghq.com auth: api-key: ${env:DD_API_KEY} app-key: ${env:DD_APP_KEY} ``` Each key under `providers` becomes a name for `-p`. If the key is a provider alias (like `vm`), the type is inferred. For custom names (like `dd-prod`), add `provider: dd`. ### Variable references Config values support variable references resolved at load time: - `${env:VAR}` — environment variable (error if unset) - `${env?:VAR}` — environment variable (empty string if unset) - `${file:path}` — file contents (`~` expansion, relative to config dir) ### credential-process External command for dynamic credential retrieval: ```yaml providers: es-prod: provider: es endpoint: https://es.prod:9200 auth: credential-process: command: vault args: ["kv", "get", "-format=json", "secret/es-prod"] timeout: 10s ``` The command must output JSON with `"version": 1` and credential fields (`token`, `username`, `password`, `api-key`, `app-key`, `access-key-id`, `access-key-secret`, `headers`). Results are cached on disk automatically. ### Merge order CLI flags (`--endpoint`, `--timeout`) override credential-process output, which overrides config.yaml values. A fully configured provider needs only `-p <name>`: ```bash obz metric query -p vm -q 'up' obz log search -p sls -q 'error' --from now-1h ``` ## Error Exit Codes | Code | Category | Meaning | |:----:|----------|---------| | 1 | `auth` | Authentication or authorization failure | | 2 | `flag` | Invalid CLI arguments or flags | | 3 | `provider` | Backend returned an error (4xx/5xx) | | 4 | `network` | DNS, timeout, TLS, or connection error | | 5 | `unsupported` | Command not supported by this provider | Error responses include `recoverable` (bool) and often a `suggestion` field with a recommended fix. ## Quick Reference | Task | Command | |------|---------| | Query metrics | `obz metric query -p vm -q 'up'` | | Range query with step | `obz metric query -p vm -q 'rate(http_total[5m])' --from now-1h --step 1m` | | List all metrics | `obz metric list -p vm` | | Filter metric names | `obz metric list -p vm -m 'node_cpu*'` | | Get metric metadata | `obz metric info -p vm node_cpu_seconds_total` | | List label names | `obz metric labels -p vm` | | List label values | `obz metric label-values -p vm job` | | Find matching series | `obz metric series -p vm -m 'up'` | | Search logs | `obz log search -p vl -q 'error' --from now-1h` | | Search traces | `obz trace search -p vt -q 'frontend'` | | Get a trace by ID | `obz trace get -p vt abc123def456` |
Ver en GitHub
Este SKILL.md es muy grande, por eso SkillsMP muestra aqui solo la primera seccion. Ver en GitHub