Enum opentelemetry_sdk::trace::Sampler
source · #[non_exhaustive]
pub enum Sampler {
AlwaysOn,
AlwaysOff,
ParentBased(Box<dyn ShouldSample>),
TraceIdRatioBased(f64),
JaegerRemote(JaegerRemoteSampler),
}
trace
only.Expand description
Default Sampling options
The built-in samplers allow for simple decisions. For more complex scenarios consider
implementing your own sampler using ShouldSample
trait.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
AlwaysOn
Always sample the trace
AlwaysOff
Never sample the trace
ParentBased(Box<dyn ShouldSample>)
Respects the parent span’s sampling decision or delegates a delegate sampler for root spans.
TraceIdRatioBased(f64)
Sample a given fraction of traces. Fractions >= 1 will always sample. If the parent span is
sampled, then it’s child spans will automatically be sampled. Fractions < 0 are treated as
zero, but spans may still be sampled if their parent is.
Note: If this is used then all Spans in a trace will become sampled assuming that the
first span is sampled as it is based on the trace_id
not the span_id
JaegerRemote(JaegerRemoteSampler)
jaeger_remote_sampler
only.Jaeger remote sampler supports any remote service that implemented the jaeger remote sampler protocol. The proto definition can be found here
Jaeger remote sampler allows remotely controlling the sampling configuration for the SDKs. The sampling is typically configured at the collector and the SDKs actively poll for changes. The sampler uses TraceIdRatioBased or rate-limited sampler under the hood. These samplers can be configured per whole service (a.k.a default), or per span name in a given service (a.k.a per operation).
Implementations§
source§impl Sampler
impl Sampler
sourcepub fn jaeger_remote<C, Sampler, R, Svc>(
runtime: R,
http_client: C,
default_sampler: Sampler,
service_name: Svc
) -> JaegerRemoteSamplerBuilder<C, Sampler, R>where
C: HttpClient + 'static,
Sampler: ShouldSample,
R: TraceRuntime,
Svc: Into<String>,
Available on crate feature jaeger_remote_sampler
only.
pub fn jaeger_remote<C, Sampler, R, Svc>( runtime: R, http_client: C, default_sampler: Sampler, service_name: Svc ) -> JaegerRemoteSamplerBuilder<C, Sampler, R>where C: HttpClient + 'static, Sampler: ShouldSample, R: TraceRuntime, Svc: Into<String>,
jaeger_remote_sampler
only.Create a jaeger remote sampler builder.
Arguments
runtime
- A runtime to run the HTTP client.http_client
- An HTTP client to query the sampling endpoint.default_sampler
- A default sampler to make a sampling decision when the remote is unavailable or before the SDK receives the first response from remote.service_name
- The name of the service. This is a required parameter to query the sampling endpoint.
See here for an example.