#[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§

source§

impl Sampler

source

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>,

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

Trait Implementations§

source§

impl Clone for Sampler

source§

fn clone(&self) -> Sampler

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Sampler

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl ShouldSample for Sampler

source§

fn should_sample( &self, parent_context: Option<&Context>, trace_id: TraceId, name: &str, span_kind: &SpanKind, attributes: &OrderMap<Key, Value>, links: &[Link], instrumentation_library: &InstrumentationLibrary ) -> SamplingResult

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

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FutureExt for T

source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

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

fn with_current_context(self) -> WithContext<Self>

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

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V