@@ -80,18 +80,22 @@ where
8080}
8181
8282/// Initializes an OpenTelemetry tracing subscriber with a OTLP backend.
83- pub fn init_tracing ( service_name : & ' static str ) -> anyhow:: Result < ( ) > {
84- let tracer_provider = opentelemetry_otlp:: new_pipeline ( )
85- . tracing ( )
86- . with_batch_config ( opentelemetry_sdk:: trace:: BatchConfig :: default ( ) )
87- . with_exporter ( opentelemetry_otlp:: new_exporter ( ) . tonic ( ) )
88- . with_trace_config ( opentelemetry_sdk:: trace:: Config :: default ( ) . with_resource (
89- opentelemetry_sdk:: Resource :: new ( [ opentelemetry:: KeyValue :: new (
90- opentelemetry_semantic_conventions:: resource:: SERVICE_NAME ,
91- service_name,
92- ) ] ) ,
93- ) )
94- . install_batch ( opentelemetry_sdk:: runtime:: Tokio ) ?;
83+ pub fn init_tracing (
84+ service_name : & ' static str ,
85+ ) -> anyhow:: Result < opentelemetry_sdk:: trace:: SdkTracerProvider > {
86+ let tracer_provider = opentelemetry_sdk:: trace:: SdkTracerProvider :: builder ( )
87+ . with_resource (
88+ opentelemetry_sdk:: Resource :: builder ( )
89+ . with_service_name ( service_name)
90+ . build ( ) ,
91+ )
92+ . with_batch_exporter (
93+ opentelemetry_otlp:: SpanExporter :: builder ( )
94+ . with_tonic ( )
95+ . build ( )
96+ . unwrap ( ) ,
97+ )
98+ . build ( ) ;
9599 opentelemetry:: global:: set_tracer_provider ( tracer_provider. clone ( ) ) ;
96100 let tracer = tracer_provider. tracer ( service_name) ;
97101
@@ -101,7 +105,7 @@ pub fn init_tracing(service_name: &'static str) -> anyhow::Result<()> {
101105 . with ( tracing_opentelemetry:: layer ( ) . with_tracer ( tracer) )
102106 . try_init ( ) ?;
103107
104- Ok ( ( ) )
108+ Ok ( tracer_provider )
105109}
106110
107111async fn listen_on_random_port < Item , SinkItem > ( ) -> anyhow:: Result < (
@@ -148,7 +152,7 @@ where
148152
149153#[ tokio:: main]
150154async fn main ( ) -> anyhow:: Result < ( ) > {
151- init_tracing ( "tarpc_tracing_example" ) ?;
155+ let tracer_provider = init_tracing ( "tarpc_tracing_example" ) ?;
152156
153157 let ( add_listener1, addr1) = listen_on_random_port ( ) . await ?;
154158 let ( add_listener2, addr2) = listen_on_random_port ( ) . await ?;
@@ -195,7 +199,7 @@ async fn main() -> anyhow::Result<()> {
195199 tracing:: info!( "{:?}" , double_client. double( ctx, 1 ) . await ?) ;
196200 }
197201
198- opentelemetry :: global :: shutdown_tracer_provider ( ) ;
202+ tracer_provider . shutdown ( ) ? ;
199203
200204 Ok ( ( ) )
201205}
0 commit comments