OTEL-064: Both probabilistic_sampler and tail_sampling in same pipeline
Severity: warn (advisory)
Rule Details
probabilistic_sampler is a head sampler (decision based on trace ID at ingestion); tail_sampling is a tail sampler (decision based on the whole trace). Running both means the effective sample rate is the product of the two, and the tail sampler can only see the traces that already survived the head sampler — so latency and error policies miss data. Pick one model for the pipeline and stick with it.
This rule fires when a pipeline contains both a probabilistic_sampler and a tail_sampling processor.
Options
This rule has no options.
Examples
service:
pipelines:
traces:
receivers: [otlp]
processors:
- memory_limiter
- probabilistic_sampler
- groupbytrace
- tail_sampling
- batch
exporters: [otlp/backend]
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, groupbytrace, tail_sampling, batch]
exporters: [otlp/backend]
When Not To Use It
Two-stage sampling pipelines (rare, advanced) where you have measured the combined rate and accepted the trace blind spot. Disable the rule for that pipeline and document the reasoning.
Related Rules
Version
Available since augur v0.1.0.
Further Reading
- OpenTelemetry Collector Contrib — tail_sampling processor
- OpenTelemetry Collector Contrib — probabilistic_sampler processor
Resources
- Rule source:
policy/main/reliability.rego