diff --git a/example-service/Cargo.toml b/example-service/Cargo.toml index 6f16169b..5f918d30 100644 --- a/example-service/Cargo.toml +++ b/example-service/Cargo.toml @@ -18,16 +18,16 @@ anyhow = "1.0" clap = { version = "4.4.18", features = ["derive"] } log = "0.4" futures = "0.3" -opentelemetry = { version = "0.26.0" } -opentelemetry-otlp = "0.26.0" +opentelemetry = { version = "0.30.0" } +opentelemetry-otlp = { version = "0.30.0", features = ["grpc-tonic"] } rand = "0.8" tarpc = { version = "0.36", path = "../tarpc", features = ["full"] } tokio = { version = "1", features = ["macros", "net", "rt-multi-thread"] } tracing = { version = "0.1" } -tracing-opentelemetry = "0.27.0" +tracing-opentelemetry = "0.31.0" tracing-subscriber = { version = "0.3", features = ["env-filter"] } -opentelemetry_sdk = { version = "0.26.0", features = ["rt-tokio"] } -opentelemetry-semantic-conventions = "0.16.0" +opentelemetry_sdk = { version = "0.30.0", features = ["rt-tokio"] } +opentelemetry-semantic-conventions = "0.30.0" [lib] name = "service" diff --git a/example-service/src/client.rs b/example-service/src/client.rs index 2877c815..acf31770 100644 --- a/example-service/src/client.rs +++ b/example-service/src/client.rs @@ -24,7 +24,7 @@ struct Flags { #[tokio::main] async fn main() -> anyhow::Result<()> { let flags = Flags::parse(); - init_tracing("Tarpc Example Client")?; + let tracer_provider = init_tracing("Tarpc Example Client")?; let mut transport = tarpc::serde_transport::tcp::connect(flags.server_addr, Json::default); transport.config_mut().max_frame_length(usize::MAX); @@ -50,7 +50,7 @@ async fn main() -> anyhow::Result<()> { // Let the background span processor finish. sleep(Duration::from_micros(1)).await; - opentelemetry::global::shutdown_tracer_provider(); + tracer_provider.shutdown()?; Ok(()) } diff --git a/example-service/src/lib.rs b/example-service/src/lib.rs index e810d8de..26b49e2a 100644 --- a/example-service/src/lib.rs +++ b/example-service/src/lib.rs @@ -16,18 +16,22 @@ pub trait World { } /// Initializes an OpenTelemetry tracing subscriber with a OTLP backend. -pub fn init_tracing(service_name: &'static str) -> anyhow::Result<()> { - let tracer_provider = opentelemetry_otlp::new_pipeline() - .tracing() - .with_trace_config(opentelemetry_sdk::trace::Config::default().with_resource( - opentelemetry_sdk::Resource::new([opentelemetry::KeyValue::new( - opentelemetry_semantic_conventions::resource::SERVICE_NAME, - service_name, - )]), - )) - .with_batch_config(opentelemetry_sdk::trace::BatchConfig::default()) - .with_exporter(opentelemetry_otlp::new_exporter().tonic()) - .install_batch(opentelemetry_sdk::runtime::Tokio)?; +pub fn init_tracing( + service_name: &'static str, +) -> anyhow::Result { + let tracer_provider = opentelemetry_sdk::trace::SdkTracerProvider::builder() + .with_resource( + opentelemetry_sdk::Resource::builder() + .with_service_name(service_name) + .build(), + ) + .with_batch_exporter( + opentelemetry_otlp::SpanExporter::builder() + .with_tonic() + .build() + .unwrap(), + ) + .build(); opentelemetry::global::set_tracer_provider(tracer_provider.clone()); let tracer = tracer_provider.tracer(service_name); @@ -37,5 +41,5 @@ pub fn init_tracing(service_name: &'static str) -> anyhow::Result<()> { .with(tracing_opentelemetry::layer().with_tracer(tracer)) .try_init()?; - Ok(()) + Ok(tracer_provider) } diff --git a/tarpc/Cargo.toml b/tarpc/Cargo.toml index 736cabd8..268f714d 100644 --- a/tarpc/Cargo.toml +++ b/tarpc/Cargo.toml @@ -58,9 +58,9 @@ tracing = { version = "0.1", default-features = false, features = [ "attributes", "log", ] } -tracing-opentelemetry = { version = "0.27.0", default-features = false } -opentelemetry = { version = "0.26.0", default-features = false } -opentelemetry-semantic-conventions = "0.16.0" +tracing-opentelemetry = { version = "0.31.0", default-features = false } +opentelemetry = { version = "0.30.0", default-features = false } +opentelemetry-semantic-conventions = "0.30.0" [dev-dependencies] assert_matches = "1.4" @@ -68,9 +68,9 @@ bincode = "1.3" bytes = { version = "1", features = ["serde"] } flate2 = "1.0" futures-test = "0.3" -opentelemetry = { version = "0.26.0", default-features = false } -opentelemetry-otlp = "0.26.0" -opentelemetry_sdk = { version = "0.26.0", features = ["rt-tokio"] } +opentelemetry = { version = "0.30.0", default-features = false } +opentelemetry-otlp = "0.30.0" +opentelemetry_sdk = { version = "0.30.0", features = ["rt-tokio"] } pin-utils = "0.1.0" serde_bytes = "0.11" tracing-subscriber = { version = "0.3", features = ["env-filter"] } diff --git a/tarpc/examples/pubsub.rs b/tarpc/examples/pubsub.rs index 61257386..4e1d7905 100644 --- a/tarpc/examples/pubsub.rs +++ b/tarpc/examples/pubsub.rs @@ -284,18 +284,22 @@ impl publisher::Publisher for Publisher { } /// Initializes an OpenTelemetry tracing subscriber with a OTLP backend. -pub fn init_tracing(service_name: &'static str) -> anyhow::Result<()> { - let tracer_provider = opentelemetry_otlp::new_pipeline() - .tracing() - .with_batch_config(opentelemetry_sdk::trace::BatchConfig::default()) - .with_exporter(opentelemetry_otlp::new_exporter().tonic()) - .with_trace_config(opentelemetry_sdk::trace::Config::default().with_resource( - opentelemetry_sdk::Resource::new([opentelemetry::KeyValue::new( - opentelemetry_semantic_conventions::resource::SERVICE_NAME, - service_name, - )]), - )) - .install_batch(opentelemetry_sdk::runtime::Tokio)?; +pub fn init_tracing( + service_name: &'static str, +) -> anyhow::Result { + let tracer_provider = opentelemetry_sdk::trace::SdkTracerProvider::builder() + .with_resource( + opentelemetry_sdk::Resource::builder() + .with_service_name(service_name) + .build(), + ) + .with_batch_exporter( + opentelemetry_otlp::SpanExporter::builder() + .with_tonic() + .build() + .unwrap(), + ) + .build(); opentelemetry::global::set_tracer_provider(tracer_provider.clone()); let tracer = tracer_provider.tracer(service_name); @@ -305,12 +309,12 @@ pub fn init_tracing(service_name: &'static str) -> anyhow::Result<()> { .with(tracing_opentelemetry::layer().with_tracer(tracer)) .try_init()?; - Ok(()) + Ok(tracer_provider) } #[tokio::main] async fn main() -> anyhow::Result<()> { - init_tracing("Pub/Sub")?; + let tracer_provider = init_tracing("Pub/Sub")?; let addrs = Publisher { clients: Arc::new(Mutex::new(HashMap::new())), @@ -363,7 +367,7 @@ async fn main() -> anyhow::Result<()> { ) .await?; - opentelemetry::global::shutdown_tracer_provider(); + tracer_provider.shutdown()?; info!("done."); Ok(()) diff --git a/tarpc/examples/tracing.rs b/tarpc/examples/tracing.rs index 8d28451d..c92365d5 100644 --- a/tarpc/examples/tracing.rs +++ b/tarpc/examples/tracing.rs @@ -80,18 +80,22 @@ where } /// Initializes an OpenTelemetry tracing subscriber with a OTLP backend. -pub fn init_tracing(service_name: &'static str) -> anyhow::Result<()> { - let tracer_provider = opentelemetry_otlp::new_pipeline() - .tracing() - .with_batch_config(opentelemetry_sdk::trace::BatchConfig::default()) - .with_exporter(opentelemetry_otlp::new_exporter().tonic()) - .with_trace_config(opentelemetry_sdk::trace::Config::default().with_resource( - opentelemetry_sdk::Resource::new([opentelemetry::KeyValue::new( - opentelemetry_semantic_conventions::resource::SERVICE_NAME, - service_name, - )]), - )) - .install_batch(opentelemetry_sdk::runtime::Tokio)?; +pub fn init_tracing( + service_name: &'static str, +) -> anyhow::Result { + let tracer_provider = opentelemetry_sdk::trace::SdkTracerProvider::builder() + .with_resource( + opentelemetry_sdk::Resource::builder() + .with_service_name(service_name) + .build(), + ) + .with_batch_exporter( + opentelemetry_otlp::SpanExporter::builder() + .with_tonic() + .build() + .unwrap(), + ) + .build(); opentelemetry::global::set_tracer_provider(tracer_provider.clone()); let tracer = tracer_provider.tracer(service_name); @@ -101,7 +105,7 @@ pub fn init_tracing(service_name: &'static str) -> anyhow::Result<()> { .with(tracing_opentelemetry::layer().with_tracer(tracer)) .try_init()?; - Ok(()) + Ok(tracer_provider) } async fn listen_on_random_port() -> anyhow::Result<( @@ -148,7 +152,7 @@ where #[tokio::main] async fn main() -> anyhow::Result<()> { - init_tracing("tarpc_tracing_example")?; + let tracer_provider = init_tracing("tarpc_tracing_example")?; let (add_listener1, addr1) = listen_on_random_port().await?; let (add_listener2, addr2) = listen_on_random_port().await?; @@ -195,7 +199,7 @@ async fn main() -> anyhow::Result<()> { tracing::info!("{:?}", double_client.double(ctx, 1).await?); } - opentelemetry::global::shutdown_tracer_provider(); + tracer_provider.shutdown()?; Ok(()) }