Skip to main content

OTEL-007: Every pipeline must have receivers and exporters

Severity: deny (blocking)

Rule Details

A pipeline is only useful if data can enter it (at least one receiver) and leave it (at least one exporter). A pipeline missing either side is a dead end — it costs memory and config review time while sending nothing downstream. Processors are optional; receivers and exporters are not.

This rule fires when a pipeline in service.pipelines has zero receivers or zero exporters.

Options

This rule has no options.

Examples

Incorrect
service:
pipelines:
traces:
receivers: [otlp]
exporters: [] # no exporters
metrics:
receivers: [] # no receivers
exporters: [otlp/backend]
Correct
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [otlp/backend]
metrics:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [otlp/backend]

When Not To Use It

Never. If a pipeline has no receivers or no exporters, delete it — the config is easier to read without dead code.

Version

Available since augur v0.1.0.

Further Reading

Resources