logo
#[non_exhaustive]
pub enum Sampler {
    AlwaysOn,
    AlwaysOff,
    ParentBased(Box<dyn ShouldSample>),
    TraceIdRatioBased(f64),
    JaegerRemote(JaegerRemoteSampler),
}
Available on crate feature 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
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.

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)

Available on crate feature 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

Available on crate feature jaeger_remote_sampler only.

Create a jaeger remote sampler.

user needs to provide

  • a runtime to run the http client
  • a http client to query the sampling endpoint
  • a default sampler to make sampling decision when the remote is unavailable or before the SDK receive the first response,
  • the service name. This is a required parameter to query the sampling endpoint.

See here for an example.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the SamplingDecision for a Span to be created. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Attaches the provided Context to this type, returning a WithContext wrapper. Read more

Attaches the current Context to this type, returning a WithContext wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.