From otel-cli
Inspects OpenTelemetry traces, logs, and metrics from a local OTLP server. Use when the user needs to debug distributed traces, inspect application logs, check metrics, or troubleshoot observability issues during development.
How this skill is triggered — by the user, by Claude, or both
Slash command
/otel-cli:otel-cliThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
An in-memory OTLP server with SQL querying. Start a local collector, ingest traces/logs/metrics, and query with standard SQL.
An in-memory OTLP server with SQL querying. Start a local collector, ingest traces/logs/metrics, and query with standard SQL.
# 1. Start server (background)
otel-cli server --no-tui &
# 2. App exports to localhost:4317 (gRPC) or localhost:4318 (HTTP)
# 3. Query
otel-cli sql "SELECT span_name, duration_ns FROM traces WHERE service_name = 'myapp'"
# 4. Cleanup
otel-cli shutdown
Use otel-cli sql for all querying. Powered by DataFusion (standard SQL). Use --format jsonl for programmatic processing.
otel-cli sql "SELECT * FROM traces WHERE service_name = 'myapp'" --format jsonl
otel-cli sql "SELECT * FROM traces WHERE attributes['http.method'] = 'GET'"
otel-cli sql "SELECT service_name, COUNT(*), AVG(duration_ns) FROM traces GROUP BY service_name"
otel-cli sql "SELECT * FROM logs WHERE severity = 'ERROR'"
otel-cli sql "SELECT * FROM metrics WHERE metric_name = 'http.duration'"
otel-cli sql -f "SELECT * FROM traces" # Follow mode (real-time)
Shorthand wrappers around SQL. Use otel-cli sql for anything beyond simple filtering.
otel-cli traces --service myapp --limit 50
otel-cli traces -f --service myapp # Follow
otel-cli logs --severity ERROR --since 5m
otel-cli metrics --name http_requests_total
otel-cli status # Show counts
otel-cli clear --traces --logs --metrics # Reset state
otel-cli shutdown # Stop server
| Column | Type |
|---|---|
trace_id, span_id, parent_span_id | Utf8 |
span_name, service_name, status_message | Utf8 |
kind, status_code | Int32 |
start_time, end_time, duration_ns | UInt64 |
attributes, resource | Map<Utf8, Utf8> |
| Column | Type |
|---|---|
timestamp | UInt64 |
severity | Utf8 |
severity_number | Int32 |
body, service_name, trace_id, span_id | Utf8 |
attributes, resource | Map<Utf8, Utf8> |
| Column | Type |
|---|---|
timestamp | UInt64 |
metric_name, metric_type, service_name | Utf8 |
value, sum | Float64 |
count | UInt64 |
attributes, resource | Map<Utf8, Utf8> |
--no-tui when starting the server--format jsonl for programmatic processingotel-cli clear between test runs to reset stateotel-cli sql over convenience subcommands — it supports full SQL (aggregation, joins, subqueries)attributes['http.method'], resource['service.name']--max-traces (default 1000), --max-spans, --max-logs, --max-metricsnpx claudepluginhub hrntknr/otel-cli --plugin otel-cliInstruments applications with OpenTelemetry for distributed tracing: auto/manual instrumentation, context propagation, sampling, integration with Jaeger or Tempo. Debug latency in distributed systems.
Guides OpenTelemetry SDK setup, custom instrumentation (spans, attributes, events, links), sampling, OTel Collector config, and OTLP export to Honeycomb for Go, Python, Node.js, Java, Ruby, .NET, Rust.
Instrument apps with OpenTelemetry and send telemetry to Grafana Cloud via OTLP. Covers SDK setup, Alloy collector, sampling, and migration from other observability tools.