Skip to content

Commit

Permalink
Pull sampling probability from env var OTEL_TRACES_SAMPLER_ARG in t…
Browse files Browse the repository at this point in the history
…he default sdk config

Signed-off-by: jbtrystram <jbtrystram@redhat.com>
  • Loading branch information
jbtrystram committed Feb 16, 2022
1 parent ed71d80 commit 7c73589
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions opentelemetry/src/sdk/trace/config.rs
Expand Up @@ -123,6 +123,66 @@ impl Default for Config {
config.span_limits.max_links_per_span = max_links_per_span;
}

let sampler_arg = env::var("OTEL_TRACES_SAMPLER_ARG").ok();
if let Ok(sampler) = env::var("OTEL_TRACES_SAMPLER") {
config.sampler = match sampler.as_str() {
"always_on" => Box::new(Sampler::AlwaysOn),
"always_off" => Box::new(Sampler::AlwaysOff),
"traceidratio" => {
let ratio = sampler_arg.and_then(|r| r.parse::<f64>().ok());
if let Some(r) = ratio {
Box::new(Sampler::TraceIdRatioBased(r))
} else {
eprintln!(
"WARNING: Missing or invalid OTEL_TRACES_SAMPLER_ARG value. Ignoring."
);
Box::new(Sampler::TraceIdRatioBased(1.0))
}
}
"parentbased_always_on" => {
Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn)))
}
"parentbased_always_off" => {
Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOff)))
}
"parentbased_traceidratio" => {
let ratio = sampler_arg.and_then(|r| r.parse::<f64>().ok());
if let Some(r) = ratio {
Box::new(Sampler::ParentBased(Box::new(Sampler::TraceIdRatioBased(
r,
))))
} else {
eprintln!(
"WARNING: Missing or invalid OTEL_TRACES_SAMPLER_ARG value. Ignoring."
);
Box::new(Sampler::ParentBased(Box::new(Sampler::TraceIdRatioBased(
1.0,
))))
}
}
"parentbased_jaeger_remote" => {
eprintln!("WARNING: Unimplemented parentbased_jaeger_remote sampler. Ignoring."
);
Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn)))
}
"jaeger_remote" => {
eprintln!( "WARNING: Unimplemented jaeger_remote sampler. Ignoring."
);
Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn)))
}
"xray" => {
eprintln!("WARNING: Unimplemented xray sampler. Ignoring.");
Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn)))
}
s => {
eprintln!( "WARNING: Unrecognised OTEL_TRACES_SAMPLER value: {}. Ignoring.",
s
);
Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn)))
}
}
}

config
}
}

0 comments on commit 7c73589

Please sign in to comment.