Skip to content

Instantly share code, notes, and snippets.

@taqtiqa-mark
Created October 25, 2021 22:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taqtiqa-mark/891256923db0edf357c67fa0a9bda01e to your computer and use it in GitHub Desktop.
Save taqtiqa-mark/891256923db0edf357c67fa0a9bda01e to your computer and use it in GitHub Desktop.
Tracing setup for Tokio+Hyper trace output
```rust
async fn main() {
let addr = std::net::SocketAddr::from(([127, 0, 0, 1], 6831));
// Build a Jaeger batch span processor
let jaeger_processor = opentelemetry::sdk::trace::BatchSpanProcessor::builder(
opentelemetry_jaeger::new_pipeline()
.with_service_name("mre-jaeger")
.with_agent_endpoint(addr)
// Issue #
.with_trace_config(opentelemetry::sdk::trace::config().with_resource(
opentelemetry::sdk::Resource::new(vec![
opentelemetry::KeyValue::new("service.name", "my-service-name"),
opentelemetry::KeyValue::new("service.namespace", "my-namespace"),
]),
))
.init_async_exporter(opentelemetry::runtime::Tokio)
.expect("Jaeger Tokio async exporter"),
opentelemetry::runtime::Tokio,
)
.build();
// Setup Tracer Provider
let provider = opentelemetry::sdk::trace::TracerProvider::builder()
.with_span_processor(jaeger_processor)
.build();
// Get new Tracer from TracerProvider
let tracer = opentelemetry::trace::TracerProvider::tracer(&provider, "my_app", None);
// Create a layer with the configured tracer
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
// Initialize tracing OpenTelemetery output
tracing_subscriber::registry()
.with(telemetry)
.try_init()
.expect("Global default subscriber.");
.... etc
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment