1use opentelemetry::trace::TraceId;
2
3pub fn get_trace_id() -> TraceId {
5 use opentelemetry::trace::TraceContextExt as _; use tracing_opentelemetry::OpenTelemetrySpanExt as _; tracing::Span::current()
9 .context()
10 .span()
11 .span_context()
12 .trace_id()
13}
14
15#[cfg(feature = "telemetry")]
16pub async fn init_tracer() -> opentelemetry::sdk::trace::Tracer {
17 let otlp_endpoint =
18 std::env::var("OPENTELEMETRY_ENDPOINT_URL").expect("Need a otel tracing collector configured");
19
20 let channel = tonic::transport::Channel::from_shared(otlp_endpoint)
21 .unwrap()
22 .connect()
23 .await
24 .unwrap();
25
26 opentelemetry_otlp::new_pipeline()
27 .tracing()
28 .with_exporter(opentelemetry_otlp::new_exporter().tonic().with_channel(channel))
29 .with_trace_config(opentelemetry::sdk::trace::config().with_resource(
30 opentelemetry::sdk::Resource::new(vec![opentelemetry::KeyValue::new(
31 "service.name",
32 "cdb-controller",
33 )]),
34 ))
35 .install_batch(opentelemetry::runtime::Tokio)
36 .unwrap()
37}