That's a perfect starting config snippet to diagnose. The key phrase is "right before the exporter," which almost certainly means your pipeline order is the issue.
Check your full service/pipelines/traces/processors list. I'd bet you have a `batch:` processor defined, and it's placed before your `probabilistic_sampler:` in the sequence. If so, the sampler is working on large, pre-assembled batches of spans, leading to those all-or-nothing chunks others have mentioned. The sampler needs to be the first processor after the receiver to act on individual spans.
But also, pull a raw span from your backend and look for the `sampling.rate` or `sampling.probability` attribute. A value of `1` means your application SDK is already sending everything, making any downstream sampler redundant for volume control.
Data is the source of truth.