← ClaudeAtlas

otel-collector-configlisted

Use when authoring, debugging, or reviewing an OpenTelemetry Collector (otelcol) configuration — defining receivers/processors/exporters/connectors, wiring service pipelines, choosing between the core and contrib distributions, or exporting to OTLP/Prometheus/Loki/Tempo/Mimir. Also use when a Collector starts but no data arrives, a component is rejected at startup, or metrics lack expected labels. Triggers on "otelcol", "otel collector config", "collector pipeline", "receivers/processors/exporters", "memory_limiter", "otlp exporter", "prometheusremotewrite", "spanmetrics", "tail_sampling".
s3onghyun/otelcol-doctor · ★ 7 · Data & Documents · score 76
Install: claude install-skill s3onghyun/otelcol-doctor
# OpenTelemetry Collector config — doctor Generate correct configs from a plain-English description, and diagnose broken ones. The Collector is a small set of concepts with a lot of sharp edges; this skill encodes the edges so the output validates on the first try. ## Mental model (get this right and everything follows) A Collector config has four component blocks plus a `service` block that wires them: ``` receivers: # where data comes IN (otlp, prometheus, hostmetrics, filelog, kafka…) processors: # what happens in the MIDDLE, in order (memory_limiter, batch, transform…) exporters: # where data goes OUT (otlp, otlphttp, debug, prometheus, prometheusremotewrite…) connectors: # bridge one pipeline's OUTPUT into another's INPUT (spanmetrics, routing…) extensions: # collector-level features, not in the data path (health_check, pprof, zpages…) service: extensions: [health_check] pipelines: traces: { receivers: [...], processors: [...], exporters: [...] } metrics: { receivers: [...], processors: [...], exporters: [...] } logs: { receivers: [...], processors: [...], exporters: [...] } telemetry: { ... } # the Collector's OWN logs/metrics ``` **The #1 rule everyone violates:** defining a component under `receivers:` / `processors:` / `exporters:` does **nothing** on its own. A component only runs if it is referenced inside a `service.pipelines.<signal>` list. A config can be "valid" yet do nothing because a pipeline was never wired. Always che