otel-collector
Skill99 starsChanged 13 days agoApache-2.0View on GitHub
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.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- o11ika/skillstheir own version, first seen Oct 17, 2026
- radra23/otel-as-code-plugintheir own version, first seen Oct 9, 2026
- ollygarden/opentelemetry-agent-skillstheir own version, first seen Jul 13, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- ollygarden/opentelemetry-agent-skills★ 125same name
- o11ika/skills★ 1same name
- radra23/otel-as-code-plugin★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- otel-instrumentationSkill
- otel-ottlSkill
- otel-semantic-conventionsSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 1 is distinctive, and 4 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 38
Place memory_limiter first in every pipeline.
- Very specific: line 48
If one pipeline enriches telemetry with k8s.namespace.name or host.name but another does not, correlation between signals is compromised by …
- Very specific: line 50
Write otlp_grpc, otlp_http, load_balancing, span_metrics, log_dedup, signal_to_metrics, k8s_attributes, and resource_detection as config …
- Distinctive: line 55
When you pin an image, pin the version the examples are written against, v0.163.1.
- Very specific: line 57
Always configure memory_limiter in production.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
OpenTelemetry Collector configuration guide
Expert guidance for configuring and deploying the OpenTelemetry Collector to receive, process, and export telemetry.
Rules
| 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 |
Key principles
- Processor ordering matters.
Place
memory_limiterfirst in every pipeline. Enable exporter batching withsending_queue: { batch: {} }and persist the queue withfile_storageinstead of using thebatchprocessor. Incorrect ordering causes memory exhaustion or data loss. - One pipeline per signal type. Define separate pipelines for traces, metrics, and logs. Mixing signals in a single pipeline breaks processing and causes runtime errors.
- Every declared component must appear in a pipeline. The Collector ignores components that no pipeline references, without an error or warning, so an unwired component does nothing.
- Consistent resource enrichment across pipelines.
Apply processors that enrich resource attributes like
resource_detectionandk8s_attributesto every signal pipeline (traces, metrics, and logs), not just one. If one pipeline enriches telemetry withk8s.namespace.nameorhost.namebut another does not, correlation between signals is compromised by incomplete metadata. - Use canonical component names.
Write
otlp_grpc,otlp_http,load_balancing,span_metrics,log_dedup,signal_to_metrics,k8s_attributes, andresource_detectionas config keys. The older namesotlp(exporter only),otlphttp,loadbalancing,spanmetrics,logdedup,signaltometrics,k8sattributes, andresourcedetectionstill work as deprecated aliases and log a deprecation warning at startup. - Run Collector v0.153.0 or later.
The configs in this skill need it:
load_balancingandresource_detectionexist only from v0.153.0, andsending_queue.batch: {}only from v0.138.0. An older Collector rejects them at startup:unknown typefor a new name, and forbatch: {}either'sending_queue' has invalid keys: batchor`batch` supports only `items` or `bytes` sizer. When you pin an image, pin the version the examples are written against, v0.163.1. - Memory safety is non-negotiable.
Always configure
memory_limiterin production. Without it, a burst of telemetry can cause the Collector to OOM and crash.
Quick start
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_grpc:
endpoint: ingress.eu-west-1.aws.dash0.com:4317
headers:
Authorization: "Bearer ${env:DASH0_TOKEN}"
sending_queue:
enabled: true
storage: file_storage
batch: {}
extensions:
file_storage:
directory: /var/lib/otelcol/queue
create_directory: true
service:
extensions: [file_storage]
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter]
exporters: [otlp_grpc]
metrics:
receivers: [otlp]
processors: [memory_limiter]
exporters: [otlp_grpc]
logs:
receivers: [otlp]
processors: [memory_limiter]
exporters: [otlp_grpc]The Collector user must be able to write to the file_storage directory; in a container, mount a persistent volume at /var/lib/otelcol.
See exporters for full authentication and queue configuration, and processors for adding resource detection.
Configuration workflow
- Write config — define receivers, processors, and exporters; wire them in
service.pipelines. - Validate locally — run
otelcol validate --config=config.yamlto catch structural errors before deployment. - Deploy — choose a deployment method from the deployment rule (Helm, Operator, raw manifests, or Docker Compose).
- Verify — add the
debugexporter to a pipeline temporarily and inspect stdout to confirm telemetry is flowing; then remove it before going to production.
Quick reference
| 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 |
Official documentation
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

