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
sourceimpl 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.
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
sourceimpl ShouldSample for Sampler
impl ShouldSample for Sampler
sourcefn 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
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
impl !RefUnwindSafe for Sampler
impl Send for Sampler
impl Sync for Sampler
impl Unpin for Sampler
impl !UnwindSafe for Sampler
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more