Otel Collector logo

Otel Collector

Organization
ollygarden
otel-collector

OpenTelemetry Collector component configuration. Use when authoring, reviewing, or debugging Collector YAML for a specific receiver, processor, exporter, connector, or extension — config keys, defaults, validation rules, signal support, stability levels, and component-level gotchas. Triggers on Collector component questions including receivers, processors, exporters, connectors, extensions, component renames, signal support, and pipeline wiring.

Overview

Publisherollygarden
Repositoryopentelemetry-agent-skills
Skill nameotel-collector
Stars
119
Forks
13
Bundled files
90
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 90 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by ollygarden on GitHub. Read the source before you install it.

Installation

Install the Otel Collector AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/ollygarden/opentelemetry-agent-skills/tree/main/skills/otel-collector
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/ollygarden/opentelemetry-agent-skills.git /tmp/opentelemetry-agent-skills
mkdir -p .claude/skills
cp -r /tmp/opentelemetry-agent-skills/skills/otel-collector .claude/skills/otel-collector
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Otel Collector in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Otel Collector on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Otel Collector is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

OpenTelemetry Collector

This skill covers the configuration surface of individual OpenTelemetry Collector components. It targets opentelemetry-collector and opentelemetry-collector-contrib.

It does not cover OTTL expressions (see otel-ottl), declarative SDK configuration (otel-declarative-config), deploying the eBPF profiler or other profiles producers (otel-profiles), or end-to-end pipeline design choices. Reach for those skills when the question is about transformation language, SDK setup, or pipeline composition.

Workflow

  1. Identify the component. Find the type in the user's config or question (log_dedup, interval, otlp, …). Note that many components have been renamed to snake_case since v0.146.0 with deprecated aliases preserved — see Recent renames.
  2. Load the component page before answering. If the component is in the Component index, always read components/<type>/README.md first — the top-level index is only a routing aid, not enough evidence for an answer. Follow its Details index to the smallest relevant file: read configuration.md for versioned keys, defaults, or validation; quirks.md for stability, availability, failure behavior, or migration traps; and the other detail files only as the question requires. Do not infer exact configuration or status from the summary row or memory.
  3. If the component is not indexed, say so explicitly and fall back to the upstream README under processor/<name>/, receiver/<name>/, exporter/<name>/, connector/<name>/, or extension/<name>/ in opentelemetry-collector-contrib. Don't invent config keys from memory — Collector components evolve quickly.
  4. Apply Collector-wide conventions. Named instances (type/name), stability levels, and pipeline placement rules in Collector-wide conventions apply to every component.
  5. Verify. Run the component page's Verification recipe — telemetrygen (see the otel-telemetrygen skill) plus a debug or file exporter — to confirm the component behaves as the docs claim. Alpha- and Development-stability components are common here, and behavior changes between releases. See Verification harness for how to run a recipe end-to-end.

Component index

Each component is a directory under components/<type>/. The File column points at the lean README.md (metadata, description, main use-cases, and a Details index); the full config reference, verification recipe, advanced use-cases, and quirks live in on-demand detail files linked from that README.

Coverage is intentionally selective. If a component is not indexed here, fall back to the upstream component README for the user's Collector version.

Verified 2026-10-25: Stability cells here and in component README headers match metadata.yaml at core and contrib v0.163.0; rename and "since" versions match metadata.yaml at the named tag and the one before. Offline, cite that release and date, not current stability.

TypeFileKindSignalsStabilitySummary
log_dedupcomponents/log_dedup/README.mdprocessorlogsAlphaDeduplicates identical log records over a time window; emits one aggregated log with a count. Renamed from logdedup in v0.151.0; alias preserved.
intervalcomponents/interval/README.mdprocessormetricsAlphaBuffers metrics and emits one point per series per interval: latest value for cumulative monotonic series, gauges, and summaries; the summed value for delta series. Non-monotonic sums pass through unchanged.
tail_samplingcomponents/tail_sampling/README.mdprocessortracesBetaBuffers whole traces and makes a single keep/drop decision after a wait window via policies. Supports in-process concurrency through num_shards; scaling across Collector instances still requires a load_balancing layer. v0.160 adds tracestate-aware thresholds for rate/bytes limiting.
draincomponents/drain/README.mdprocessorlogsAlphaClusters log bodies and annotates each record with a template. v0.158 replaced extract_parameters / params_attribute with masking_rules + parameter_key_prefix for named values and emit_wildcards + wildcards_attribute for remaining <*> positions.
redactioncomponents/redaction/README.mdprocessortraces, logs, metricsBeta (traces), Alpha (logs/metrics)Allow/block-list masking or removal of sensitive attribute keys and values, with hashing and URL/DB sanitizers.
filtercomponents/filter/README.mdprocessortraces, metrics, logs, profilesAlpha (traces/metrics/logs), Development (profiles)Drops spans, metric data points, log records, and profiles that match OTTL conditions (or legacy metric-name / severity filters). The most direct telemetry-volume lever.
transformcomponents/transform/README.mdprocessortraces, metrics, logs, profilesBeta (traces/metrics/logs), Development (profiles)Applies OTTL statements to mutate spans, metric data points, log records, and profiles in place (rename/redact/convert/aggregate attributes). The OTTL language itself lives in the otel-ottl skill.
probabilistic_samplercomponents/probabilistic_sampler/README.mdprocessortraces, logsBeta (traces), Alpha (logs)Head sampling — deterministically keeps a configured percentage of traces/logs by hashing the trace ID (or an attribute). The cheaper, stateless counterpart to tail_sampling.
attributescomponents/attributes/README.mdprocessortraces, metrics, logsBetaModifies span/log/datapoint attributes via an ordered action list (insert/update/upsert/delete/hash/extract/convert), scoped by include/exclude matching.
resourcecomponents/resource/README.mdprocessortraces, metrics, logs, profilesBeta (traces/metrics/logs), Development (profiles)Modifies the resource attributes of telemetry via the same action grammar as attributes (e.g. set service.name, drop noisy resource keys). No include/exclude matching.
k8s_attributescomponents/k8s_attributes/README.mdprocessortraces, metrics, logs, profilesStable (traces/metrics/logs, since v0.161), Development (profiles)Enriches telemetry with Kubernetes pod/namespace/node/workload metadata, associating each record to a pod by IP or resource attribute. v0.161 enables the v1 semconv gates by default (singular k8s.pod.label.*, container.image.tags).
routingcomponents/routing/README.mdconnectortraces, metrics, logsAlphaRoutes same-signal telemetry to different pipelines by OTTL condition/statement per context; ordered table, first match wins, default_pipelines fallback. Replaces the deprecated routingprocessor.
memory_limitercomponents/memory_limiter/README.mdprocessortraces, metrics, logs, profilesBeta (traces/metrics/logs), Alpha (profiles)Safety valve against OOM: refuses data with backpressure when Go heap exceeds a soft/hard limit. Its receiver-middleware extension reached Beta in v0.158 but is absent from stock distributions; the bundled processor remains the standard form.
load_balancingcomponents/load_balancing/README.mdexportertraces, logs, metricsBeta (traces/logs), Alpha (metrics)Distributes telemetry across downstream Collectors via a consistent-hash ring keyed on trace ID / service.name / (v0.162+) OTel randomness, etc., pinning related records to one backend. The standard way to scale tail_sampling/span_metrics. Renamed from loadbalancing in v0.153.0; alias preserved.
otlp (receiver)components/otlp/README.mdreceivertraces, metrics, logs, profilesStable (traces/metrics/logs), Alpha (profiles)The canonical OTLP ingress over gRPC (4317) and/or HTTP (4318, protobuf + JSON). protocols: block, at least one required. Default endpoint is localhost, not 0.0.0.0 — must be set explicitly to receive containerized traffic.
otlp_grpc (exporter)components/otlp_exporter/README.mdexportertraces, metrics, logs, profilesStable (traces/metrics/logs), Alpha (profiles)Sends OTLP over gRPC to a downstream endpoint; gzip, sending queue, and retry are enabled by default. Exporter-side sending_queue.batch is opt-in unless the pkg.exporterhelper.queueBatchEnabled gate is enabled. Renamed from otlp in core v1.50.0; alias preserved.
file_log (receiver)components/file_log/README.mdreceiverlogsBetaTails log files (glob include), turns each line/entry into a log record, and parses it via a stanza operators pipeline. Fingerprint + offset tracking across rotation; storage for durable offsets. v0.160 adds opt-in skip_unmodified_files.
resource_detectioncomponents/resource_detection/README.mdprocessortraces, metrics, logs, profilesBeta (traces/metrics/logs), Development (profiles)Auto-detects resource attributes via an ordered detectors list with global retry settings. Includes Azure Container Apps, Azure App Service (v0.160+), and Azure Functions (v0.162+) detectors. Renamed from resourcedetection in v0.153.0; alias preserved.
file_storagecomponents/file_storage/README.mdextension— (not pipeline-scoped)BetaPersists component state to local disk (bbolt) so it survives a Collector restart: receiver read offsets (storage:), exporter persistent send queues (sending_queue.storage:), and stateful-processor decision caches. One bbolt file per consumer; directory must exist unless create_directory: true. Not placed in a pipeline — listed under service.extensions: and referenced by other components.
prometheus (receiver)components/prometheus/README.mdreceivermetricsBetaScrapes Prometheus-format HTTP endpoints and converts them to OTLP metrics, embedding prometheus/prometheus's scrape manager — the config: block is the same YAML as prometheus.yml (global, scrape_configs, scrape_config_files, service discovery, relabeling). Extra keys: trim_metric_suffixes, target_allocator (sharded targets from the OTel Operator), api_server (debug API). Scrape-only: rejects remote_write/remote_read/rule_files/alerting. Stateful, does not auto-shard across replicas.
prometheus (exporter)components/prometheus_exporter/README.mdexportermetricsBetaExposes pipeline metrics for Prometheus to scrape. In-memory accumulator expires stale series after 5m. v0.160 adds resource_constant_labels and deprecates resource_to_telemetry_conversion; add_metric_suffixes remains deprecated in favor of translation_strategy.
prometheus_remote_write (exporter)components/prometheus_remote_write/README.mdexportermetricsBetaPushes OTLP metrics as Prometheus Remote Write. Nests HTTP client settings under http; uses remote_write_queue (not sending_queue). v0.160 adds resource_constant_labels and deprecates resource_to_telemetry_conversion; RW2 remains gated and in development.

Collector-wide conventions

Named instances

Every component type supports the type/name pattern so the same type can be configured more than once. The pipeline references the named form:

yaml
processors:
  log_dedup/health-checks:
    interval: 30s
    conditions:
      - 'log.attributes["log.type"] == "health_check"'
  log_dedup/access-logs:
    interval: 10s

service:
  pipelines:
    logs/health:
      processors: [log_dedup/health-checks]
    logs/access:
      processors: [log_dedup/access-logs]

Stability levels

Components publish a stability level per signal. Treat these as load-bearing when recommending production use:

LevelUse in
DevelopmentTests and prototypes only — breaking changes expected.
AlphaLimited, non-critical workloads — config keys can still change.
BetaProduction viable — breaking changes rare.
StableProduction — backward compatibility guaranteed.

Stability now varies per component — and per signal for multi-signal components (e.g. redaction is Beta for traces but Alpha for logs/metrics). Don't assume a single level for the indexed set: check each component's README header metadata table for the authoritative stability and surface it when the user asks about production readiness.

Recent renames

Many components have been renamed to snake_case since v0.146.0, and renames are still landing (e.g. the awss3 receiver → aws_s3 in v0.162.0, sqlserver → sql_server in v0.163.0; receivers and exporters of one family rename separately, so check the component's metadata.yaml type). The legacy names remain as deprecated aliases — old configs keep working but new configs should use the new names. Check the upstream component README for the exact rename version before flagging a config as broken.

Examples: logdedup → log_dedup, hostmetrics → host_metrics, spanmetrics → span_metrics, servicegraph → service_graph, k8sattributes → k8s_attributes, plus several _log and _check receivers.

Pipeline placement

Two rules of thumb that apply across components:

  • memory_limiter belongs first in any processor list, before anything that allocates buffers (log_dedup, transform, tail_sampling, …).
  • The otlp_grpc exporter's sending queue is enabled by default, but its sending_queue.batch sub-block is opt-in. Enable exporter-side batching explicitly (or with the alpha pkg.exporterhelper.queueBatchEnabled migration gate). The separate batch processor remains Beta and supported; use it when pipeline-level batching is needed and place it after data-dropping processors.

Verification harness

Each component page's Verification section gives a config, a telemetrygen command, and the expected output. To run any of them:

  1. Save the YAML to a file and start a collector that bundles the component — for components in the contrib/k8s distributions, otelcol-contrib --config <file>.yaml; for components not in any distribution, build a custom collector with the OpenTelemetry Collector Builder (OCB) first.
  2. Send telemetry with telemetrygen (see the otel-telemetrygen skill).
  3. Watch the debug exporter's stdout (or the file exporter's output) for the expected result.

The Verification configs are minimal repros: they omit memory_limiter and other production scaffolding on purpose, to isolate the component under test. Don't copy them verbatim into production.

Adding a new component to this skill

When extending coverage:

  1. Create the directory components/<type>/. Files carry no frontmatter — only SKILL.md has frontmatter.
  2. Write a lean README.md — always loaded, kept small:
    • Header metadata table — kind, type name, signals, per-signal stability, distributions, Go module, upstream README link, and a rename note if the component was renamed.
    • Description — what the component does and the mechanism, in 1–2 tight paragraphs (push detailed mechanism/reference into configuration.md).
    • Main use-cases — "Use when" / "Avoid when".
    • Related components — cross-links.
    • Details index — a bullet list where each item links a detail file followed by an em dash and a short description of its contents (e.g. - [Configuration](configuration.md) — config keys, defaults, validation), so the reader loads only what a question needs.
  3. Split the rest into on-demand detail files under the same directory:
    • configuration.md — full config-reference table (key, type, default, validation) plus any mechanism/reference tables.
    • verification.md — a telemetrygen + debug/file exporter recipe that proves the documented behavior; cross-reference the otel-telemetrygen skill. Verify every telemetrygen flag against that skill — never assert a flag that doesn't exist. If telemetrygen can't produce the input the component needs, say so and point to an alternative (OTTL/transform, a custom emitter). Keep the config a minimal repro (see Verification harness).
    • advanced.md — named instances, multi-pipeline setups, combinations, and edge configs.
    • quirks.md — gotchas, stability caveats, memory model, a validation-error→fix table, anti-patterns, and troubleshooting.
    • Split a heavy section into its own file when it's large (e.g. policies.md for a big policy catalog); merge trivial sections into a sibling rather than create a stub. Repoint any in-page anchor links that now cross files.
  4. Use components/log_dedup/ and components/interval/ as reference implementations of this structure.
  5. Add a row to the Component index above (the File column points at components/<type>/README.md).
  6. Update the description trigger phrases in this file's frontmatter if the new component introduces a clearly distinct user-facing keyword.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

and 30 more files.

Frequently asked questions

What does the Otel Collector AI skill do?

OpenTelemetry Collector component configuration. Use when authoring, reviewing, or debugging Collector YAML for a specific receiver, processor, exporter, connector, or extension — config keys, defaults, validation rules, signal support, stability levels, and component-level gotchas. Triggers on Collector component questions including receivers, processors, exporters, connectors, extensions, component renames, signal support, and pipeline wiring.

Why use Otel Collector on TypingMind?

Because you install it once and use it with any model. Otel Collector is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Otel Collector in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/ollygarden/opentelemetry-agent-skills/tree/main/skills/otel-collector. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Otel Collector?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Otel Collector?

As many as you like. As long as a model supports skills, you can use Otel Collector with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Otel Collector AI skill free?

Yes. It is published on GitHub by ollygarden under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇