OTEL-002: memory_limiter must be included in every pipeline
Severity: deny (blocking)
Rule Details
Declaring memory_limiter under processors only defines it — it does nothing until a pipeline actually includes it in its processors: list. A pipeline that skips memory_limiter has no back-pressure, so it keeps accepting data even when the Collector is already over its memory budget.
This rule fires when the memory_limiter processor is declared but at least one pipeline in service.pipelines does not include it.
Options
This rule has no options.
Examples
Incorrect
processors:
memory_limiter:
check_interval: 5s
limit_percentage: 80
batch:
timeout: 1s
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch] # missing memory_limiter
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]
logs:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [otlp/backend]
When Not To Use It
There is no meaningful exception. If you are running multiple pipelines, every one of them should push back under memory pressure — otherwise the pipelines that skip the limiter will keep consuming and starve the ones that honor it.
Related Rules
- OTEL-001 —
memory_limiterprocessor must be configured - OTEL-014 —
memory_limitershould be first processor - OTEL-022 — unused processor
Version
Available since augur v0.1.0.
Further Reading
Resources
- Rule source:
policy/main/main.rego