OpenTelemetry Collector Config Generator
Generate OpenTelemetry Collector YAML from OTLP receiver protocols, signal pipelines, exporters, memory guard settings, batch rules, and audit checks.{{ analysis.summaryTitle }}
{{ analysis.yaml }}
| Signal | Pipeline | Receivers | Processor order | Exporters | Rollout note | Copy |
|---|---|---|---|---|---|---|
| {{ row.signal }} | {{ row.pipeline }} | {{ row.receivers }} | {{ row.processors }} | {{ row.exporters }} | {{ row.note }} |
| Severity | Check | Finding | Action | Copy |
|---|---|---|---|---|
| {{ row.severity }} | {{ row.check }} | {{ row.finding }} | {{ row.action }} |
Introduction:
OpenTelemetry Collector configuration describes how telemetry enters a Collector, how it is handled inside the process, and where it is sent next. A small YAML mistake can leave traces, metrics, or logs without an active pipeline, point clients at the wrong OTLP endpoint, or remove memory protection from a busy deployment.
The Collector works as a vendor-neutral hop between instrumented services and observability backends. Its configuration usually declares receivers, processors, exporters, extensions, and a service section that activates the selected pipelines. That structure is compact, but it is easy to mix transport details, processor order, endpoint syntax, and rollout safeguards when a team is preparing an agent, gateway, or local debug Collector.
A generated Collector file is a starting point for review, not proof that a deployment is ready. Each Collector distribution decides which components are available, and each environment decides whether an endpoint, TLS setting, auth header, memory budget, or diagnostic extension is safe to expose. The safest rollout pairs generated YAML with distribution-specific validation and a small traffic test before changing production ingestion.
Technical Details:
An OpenTelemetry Collector pipeline is activated only when configured components are referenced from the service pipelines section. Declaring a receiver, processor, exporter, or extension by itself is not enough. Traces, metrics, and logs each need a signal pipeline that names the receiver list, ordered processor list, and exporter list to use for that signal.
OTLP uses separate common defaults for its two transports. OTLP/gRPC normally listens on port 4317, while OTLP/HTTP normally listens on port 4318. A gRPC exporter endpoint is typically written as host:port. An OTLP HTTP exporter uses an HTTP or HTTPS base URL, with signal-specific paths handled by the protocol behavior rather than typed into this config.
Processor order changes Collector behavior. The memory limiter belongs early because it can refuse data and let receivers apply backpressure before downstream processors allocate more memory. Resource enrichment can add common attributes after that, and batching is usually placed later so data drops, memory checks, and enrichment happen before records are grouped for export.
Rule Core
The generated YAML follows a fixed component path. Optional settings change which components appear, but the service pipelines still connect the same component classes.
| Config area | Generated rule | Why it matters |
|---|---|---|
receivers.otlp |
Creates OTLP gRPC on bind:4317, OTLP HTTP on bind:4318, or both. |
Client SDKs and agents must send to a listener that actually exists. |
processors |
Emits memory_limiter when enabled, optional resource/common, and batch for every selected signal. |
The processor sequence controls memory pressure, common attributes, and export batching. |
exporters |
Emits otlp, otlphttp, debug, or otlp plus debug based on the selected target. |
The selected exporter decides whether telemetry goes to a remote backend, local debug output, or both. |
extensions |
Adds health_check, pprof, and zpages only when their switches are enabled. |
Diagnostics can help rollout checks, but they also expose endpoints that need careful network placement. |
service.pipelines |
Creates one pipeline for each enabled signal among traces, metrics, and logs. |
At least one signal must be enabled, and each referenced component must support that signal in the chosen distribution. |
The memory limiter has two sizing modes. Percentage mode targets a share of available host or container memory. Fixed mode writes explicit MiB values. In both cases the spike setting reserves the gap between the soft limit and the hard limit; if traffic can grow faster than that gap between checks, the process can still cross the hard limit temporarily.
| Check | Boundary | Result meaning |
|---|---|---|
| Signal coverage | At least one of traces, metrics, or logs must be enabled. |
No signal means the service section has no useful telemetry pipeline. |
| Endpoint syntax | OTLP gRPC rejects URL schemes, while OTLP HTTP expects http:// or https://. |
Wrong syntax can make a valid-looking YAML file fail during Collector validation. |
| Memory spike | Spike percentage must be below limit percentage, and fixed spike MiB must be below fixed limit MiB. | The soft limit must remain below the hard limit. |
| Batch size | send_batch_max_size is omitted at 0; otherwise it must be at least send_batch_size. |
The max setting splits large batches only when an upper bound is requested. |
| Resource attributes | Each non-comment line must use key=value, with keys limited to letters, numbers, dots, dashes, and underscores. |
Bad attribute lines block readiness rather than producing ambiguous enrichment. |
| Auth header | A remote exporter header needs both a token-safe header name and a value. | Half-entered credentials are caught before the YAML is copied. |
The batch processor uses timeout and send_batch_size as send triggers. The size trigger is not a hard cap. A positive send_batch_max_size is needed when the next component or backend requires an upper batch size. Remote exporters can also include a sending queue and retry flag, which gives the Collector a better chance to ride through short backend stalls without immediately dropping telemetry.
Everyday Use & Decision Guide:
Start from the preset closest to the deployment shape. Edge agent to OTLP gateway fits a host or sidecar collector that forwards all three signals to a gRPC gateway. Gateway to OTLP HTTP backend widens the receiver bind address and prepares a vendor-style HTTPS exporter. Local debug collector keeps output local to the debug exporter, while Logs pipeline to OTLP HTTP narrows the service section to logs.
Use localhost when producers run on the same host and no remote clients need to connect. Choose 0.0.0.0 only when a container, pod, or network service must accept traffic from elsewhere, then place the Collector behind the intended service, firewall, or authentication control. The audit row for Receiver exposure is the main stop-and-check cue for this decision.
- Choose
gRPC and HTTPwhen clients may use either OTLP transport. Pick one protocol when the sender fleet is known. - Use
Verified TLSfor ordinary remote OTLP gRPC export. UseInsecure / local plaintextonly for trusted local endpoints. - Keep
Memory guardenabled for production-like traffic. Turning it off is best reserved for small local smoke tests. - Use environment references in
Exporter auth headervalues instead of literal secrets. - Add
Resource attributesonly for stable deployment-wide values, such as environment or namespace. - Enable
pprofandzpagesonly when diagnostic access is intentionally exposed and protected.
The most useful first result is the summary line. It names the selected signals, OTLP protocols, processor sequence, and exporter target. Then read Pipeline Ledger to confirm every enabled signal uses the expected receiver, processor order, and exporter list. Config Audit is the review checklist before copying the YAML into a real Collector.
A clean readiness state does not mean the config will load in every Collector distribution. Run the generated YAML through otelcol validate --config collector.yaml with the same Collector binary or container image that will run it, then send a small trace, metric, or log sample before widening traffic.
Step-by-Step Guide:
Build the config from the traffic path first, then tune safeguards and diagnostics.
- Select
Config preset. The form updates the signal switches, receiver protocols, exporter type, memory mode, and common advanced defaults. - Confirm
Signal pipelines. If all three switches are off, the summary changes toNeeds inputand the error list asks for at least one pipeline. - Set
OTLP receiver protocolsandReceiver bind address. Use the audit row to catch unintended0.0.0.0exposure. - Choose
Exporter target. For OTLP gRPC, enter ahost:portendpoint. For OTLP HTTP, enter an HTTP or HTTPS base URL. - Set
Exporter securityfor gRPC exporters. If a backend requires a header, openAdvancedand fill both header fields. - Choose
Memory guard. In percentage mode, keep the spike percentage below the limit percentage. In fixed mode, keep the spike MiB below the hard limit. - Review
Batch timeout,Batch send size, andMax batch size. If the max is positive and below the send size, the error list blocks readiness. - Add resource attributes and diagnostic extensions only when they match the rollout plan, then read
Config Auditfor warnings about memory, listeners, buffering, or debug output. - Use
Collector YAMLfor the config text,Pipeline Ledgerfor human review, andJSONwhen another workflow needs the same inputs and audit rows.
When the page reports an input issue, fix that field before copying the YAML. The generated config text may still be visible, but the readiness state is the safer gate.
Interpreting Results:
Collector config ready means the entered values pass the generator checks and the YAML includes the required component sections. It does not confirm that a Collector image includes every referenced component, that the backend accepts the endpoint, or that the chosen bind address is safe in your network.
YAML readinessis the main copy gate. Fix blocking issues before using the generated config.Signal coveragetells you which oftraces,metrics, andlogswill have service pipelines.Processor ordershould showmemory_limiterfirst for production-like traffic.Memory limiterdeserves review when it is omitted or sized without regard to container or host memory.Remote exporter bufferingwarns when a remote exporter has no sending queue.Debug exportershould be treated carefully when verbosity is high because payload content may appear in Collector output.
The false sense of safety to avoid is treating generated YAML as a live compatibility test. The follow-up check is external to the page: validate with the target Collector distribution, confirm the selected components support the selected signals, and send a small payload through the exact endpoint and exporter path.
Worked Examples:
Edge agent forwarding all signals
An edge Collector uses Edge agent to OTLP gateway, leaves traces, metrics, and logs enabled, accepts both OTLP transports on localhost, and exports to otel-gateway.example.com:4317 with verified TLS. The summary should show 3 pipelines, grpc+http, otlp, and memory first. Pipeline Ledger should list the same processor sequence for every signal.
HTTP gateway with a remote vendor endpoint
A gateway starts from Gateway to OTLP HTTP backend, binds the receiver to 0.0.0.0, and sends to https://otlp.vendor.example.com with an Authorization header value such as Bearer ${env:OTEL_EXPORTER_OTLP_TOKEN}. The audit should warn about receiver exposure while keeping remote exporter buffering ready when sending queue and retry are enabled.
Local debug Collector for a smoke test
A developer chooses Local debug collector, keeps the bind address at localhost, uses the debug exporter, and enables pprof plus zpages. The YAML should omit a remote exporter endpoint and include the debug verbosity setting. This is useful for local payload inspection, but it is not a production export path.
Troubleshooting a bad endpoint entry
If OTLP gRPC exporter is selected and the endpoint is entered as https://otel-gateway.example.com, the error list reports that the gRPC endpoint should be host:port without a URL scheme. Changing it to otel-gateway.example.com:4317 clears that blocking issue. For OTLP HTTP exporter, the opposite applies: the endpoint should start with http:// or https://.
FAQ:
Does this validate against my Collector distribution?
No. It checks form values and generates YAML from the selected components. Use otelcol validate --config collector.yaml with the same Collector distribution that will run the config.
Why is my gRPC endpoint rejected when it has HTTPS?
The OTLP gRPC exporter field expects a host:port value such as otel-gateway.example.com:4317. Use the OTLP HTTP exporter when the backend gives you an HTTP or HTTPS base URL.
When should I turn off the memory guard?
Use Omit memory_limiter only for small local tests or when another rollout control deliberately handles memory risk. For production-like traffic, keep the memory limiter first and coordinate the limit with host or container memory.
What happens if I enable no signals?
The readiness state fails and the error list asks you to enable at least one of traces, metrics, or logs. A Collector service section needs at least one signal pipeline to carry telemetry.
Do resource attributes replace existing service identity?
The generated resource processor uses upsert actions, so a common attribute can overwrite an existing value with the same key. Review shared attributes such as environment and namespace before applying them to every signal.
Does the page contact my Collector or backend?
No. It generates YAML, ledger rows, audit rows, and JSON from values entered on the page. It does not connect to a Collector, send telemetry, or test backend credentials.
Glossary:
- Collector
- The OpenTelemetry process that receives, processes, and exports telemetry data.
- OTLP
- OpenTelemetry Protocol, the telemetry transport used here over gRPC, HTTP, or both.
- Receiver
- A Collector component that accepts telemetry from SDKs, agents, or other senders.
- Processor
- A Collector component that handles telemetry between receiving and exporting.
- Exporter
- A Collector component that sends telemetry to a backend or debug output.
- Memory limiter
- A processor that checks Collector memory usage and can refuse data when configured limits are crossed.
- Batch processor
- A processor that groups spans, metric points, or log records before export.
- Service pipeline
- The service entry that activates receivers, processors, and exporters for traces, metrics, or logs.
References:
- OpenTelemetry Collector, OpenTelemetry documentation.
- OpenTelemetry Collector Configuration, OpenTelemetry documentation.
- OTLP Specification 1.10.0, OpenTelemetry specification.
- memorylimiterprocessor package, Go package documentation for OpenTelemetry Collector.
- batchprocessor package, Go package documentation for OpenTelemetry Collector.