skills/otel-collector/SKILL.md
Expert guidance for configuring and deploying the OpenTelemetry Collector. Use when setting up a Collector pipeline, configuring receivers, exporters, or processors, deploying a Collector to Kubernetes or Docker, or forwarding telemetry to Dash0. Triggers on requests involving collector, pipeline, OTLP receiver, exporter, or Dash0 collector setup.
npx skillsauth add dash0hq/agent-skills otel-collectorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Expert guidance for configuring and deploying the OpenTelemetry Collector to receive, process, and export telemetry.
| Rule | Description | |------|-------------| | receivers | Receivers — OTLP, Prometheus, filelog, hostmetrics | | exporters | Exporters — OTLP/gRPC to Dash0, debug, authentication | | processors | Processors — memory limiter, resource detection, ordering, sending queue | | pipelines | Pipelines — service section, per-signal configuration, connectors | | deployment | Deployment — agent vs gateway patterns, deployment method selection | | dash0-operator | Dash0 Kubernetes Operator — automated instrumentation, Collector management, Dash0 export | | collector-helm-chart | Collector Helm chart — presets, modes, image selection | | opentelemetry-operator | OpenTelemetry Operator — Collector CRD, auto-instrumentation, sidecar | | raw-manifests | Raw Kubernetes manifests — DaemonSet, Deployment, RBAC, Docker Compose | | sampling | Sampling — head, tail, load balancing | | red-metrics | RED metrics — span-derived request rate, error rate, duration histograms | | custom-distributions | Custom distributions — building a stripped-down Collector binary with OCB |
memory_limiter first in every pipeline.
Use the exporter's sending_queue with file_storage instead of the batch processor.
Incorrect ordering causes memory exhaustion or data loss.resourcedetection and k8sattributes to every signal pipeline (traces, metrics, and logs), not just one.
If one pipeline enriches telemetry with k8s.namespace.name or host.name but another does not, correlation between signals is compromised by incomplete metadata.memory_limiter in production.
Without it, a burst of telemetry can cause the Collector to OOM and crash.Minimal working configuration: OTLP receiver → memory limiter → OTLP/gRPC exporter to Dash0.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
processors:
memory_limiter:
check_interval: 1s
limit_mib: 400
spike_limit_mib: 100
exporters:
otlp:
endpoint: ingress.eu-west-1.aws.dash0.com:4317
headers:
Authorization: "Bearer ${env:DASH0_TOKEN}"
sending_queue:
enabled: true
storage: file_storage
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter]
exporters: [otlp]
metrics:
receivers: [otlp]
processors: [memory_limiter]
exporters: [otlp]
logs:
receivers: [otlp]
processors: [memory_limiter]
exporters: [otlp]
See exporters for full authentication and queue configuration, and processors for adding resource detection.
service.pipelines.otelcol validate --config=config.yaml to catch structural errors before deployment.debug exporter to a pipeline temporarily and inspect stdout to confirm telemetry is flowing; then remove it before going to production.| What do you need? | Rule | |--------------------|------| | Accept OTLP telemetry from applications | receivers | | Scrape Prometheus endpoints | receivers | | Collect log files or host metrics | receivers | | Send telemetry to Dash0 | exporters | | Configure retry, queue, or compression | exporters | | Set processor ordering | processors | | Add Kubernetes or cloud metadata | processors | | Wire receivers → processors → exporters | pipelines | | Complete working configuration | pipelines | | Validate the pipeline with the debug exporter | collector-helm-chart, opentelemetry-operator, raw-manifests, or dash0-operator | | Deploy as DaemonSet or Deployment | raw-manifests | | Deploy with Helm | collector-helm-chart | | Deploy with the OTel Operator | opentelemetry-operator | | Deploy with the Dash0 Operator | dash0-operator | | Auto-instrument applications in Kubernetes | opentelemetry-operator or dash0-operator | | Local development with Docker Compose | raw-manifests | | Reduce trace volume | sampling | | Keep errors and slow traces, drop the rest | sampling | | Redact sensitive data in the pipeline | processors | | Generate RED metrics from traces | red-metrics | | Build a custom Collector binary | custom-distributions |
development
OpenTelemetry Semantic Conventions expert. Use when selecting, applying, or reviewing telemetry attributes. Triggers on tasks involving attribute selection, semantic convention compliance, attribute migration, or custom attribute decisions. Covers the attribute registry, naming patterns, attribute placement, and versioning. For span names, span kinds, and span status codes, see the otel-instrumentation skill.
development
OpenTelemetry Transformation Language (OTTL) expert. Use when writing or debugging OTTL expressions for any OpenTelemetry Collector component that supports OTTL (processors, connectors, receivers, exporters). Triggers on tasks involving telemetry transformation, filtering, attribute manipulation, data redaction, sampling policies, routing, or Collector configuration. Covers syntax, contexts, functions, error handling, and performance.
testing
Configures trace spans, defines custom metrics, sets up log exporters, and optimizes sampling strategies for OpenTelemetry instrumentation. Use when instrumenting applications with traces, metrics, or logs. Triggers on requests for observability, telemetry, tracing, metrics collection, logging integration, or OTel setup.
devops
Local text-to-speech via sherpa-onnx (offline, no cloud)