For the complete documentation index, see llms.txt. Markdown versions are available by appending .md to documentation URLs.

Reduce Trace Volume with Sampling Strategies

SigNoz Cloud - This page applies to SigNoz Cloud editions.
Self-Host - This page applies to self-hosted SigNoz editions.

This guide covers the primary approaches to reducing trace ingestion volume in SigNoz.

Trace volume is measured in Gigabytes (GB) ingested. High-frequency, low-latency successful requests (health checks, background polling, routine CRUD operations) generate disproportionate span volume relative to their diagnostic utility.

Identify which span operations are generating the highest volume, assess whether they have operational value, and apply the appropriate solution below.

Solution 1: Head-Based Sampling

Head-based sampling makes the keep/drop decision at trace creation time in the SDK, before any span data is serialized or transmitted. It requires no Collector memory and no gateway Collector.

Configure the ParentBased(TraceIdRatioBased) sampler via environment variable:

export OTEL_TRACES_SAMPLER=parentbased_traceidratio
export OTEL_TRACES_SAMPLER_ARG=0.1  # Retain 10% of all traces

Sampling strategies and trade-offs: covers ParentBased(TraceIdRatioBased), reservoir sampling, adaptive sampling, and byte-rate limiting.

Solution 2: Tail-Based Sampling

Tail sampling buffers the complete trace in Collector memory before making a sampling decision. This lets you retain 100% of error traces and slow traces while dropping healthy traffic, a guarantee head-based sampling cannot provide.

A typical cost-saving policy set keeps every error trace, keeps every slow trace above a latency threshold, and applies a low-percentage sample to everything else. Policies are OR-ed: a trace is kept if it matches any policy. Add this to your existing otel-collector-config.yaml and enable tail_sampling in the traces pipeline:

processors:
  tail_sampling:
    decision_wait: 10s
    policies:
      - name: keep-errors
        type: status_code
        status_code:
          status_codes: [ERROR]
      - name: keep-slow-traces
        type: latency
        latency:
          threshold_ms: 2000
      - name: sample-the-rest
        type: probabilistic
        probabilistic:
          sampling_percentage: 3

Adjust threshold_ms and sampling_percentage to your own latency SLO and cost target. For full setup instructions, policy reference, memory and topology requirements, and APM metrics impact, see Tail Sampling.

Solution 3: Pre-Filter Before Sampling

Two common drop patterns based on what you found in Trace Explorer:

By span operation name (the name field surfaced in Step 4 of the analysis guide):

processors:
  filter/drop_noise:
    error_mode: ignore
    traces:
      span:
        - 'name == "grpc.health.v1.Health/Check"'
        - 'IsMatch(name, "GET /internal/.*")'

By URL path attribute (for HTTP spans where the operation name alone is too broad):

processors:
  filter/drop_noise:
    error_mode: ignore
    traces:
      span:
        - 'IsMatch(attributes["url.path"], ".*health.*")'
        # Adjust the pattern to match your actual endpoint paths before deploying

Both patterns can be combined in a single filter/drop_noise processor block. Pipeline ordering is critical: filter/drop_noise must execute before tail_sampling:

service:
  pipelines:
    traces:
      processors: [filter/drop_noise, tail_sampling]

Read more: How to configure Drop Spans & Tail Sampling

Validate Your Changes

To confirm the volume reduction:

  1. Navigate to Traces, swap to the Table tab. Filter by your target service, group by name (span operation name), and sort by count. Verify the high-volume operations you targeted have reduced.
  2. Check the Cost Meter Dashboard after an hour, filtered by your target service, to confirm the span GB trend has dropped.

Next Steps

  • Configure Cost Meter Alert to be notified when trace volume crosses your expected threshold.

Get Help

If you need help with the steps in this topic, please reach out to us on SigNoz Community Slack. If you are a SigNoz Cloud user, please use in product chat support located at the bottom right corner of your SigNoz instance or contact us at cloud-support@signoz.io.

Is this page helpful

Last updated—August 14, 2026

Edit on GitHub