Skip to content

Commit 1c7641c

Browse files
committed
docs: fix the gRPC Transport quickstart guide
1 parent 9cdc931 commit 1c7641c

File tree

1 file changed

+44
-4
lines changed

1 file changed

+44
-4
lines changed

opentelemetry-otlp/src/lib.rs

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,31 +62,71 @@
6262
//! $ docker run -p 4317:4317 otel/opentelemetry-collector:latest
6363
//! ```
6464
//!
65-
//! Configure your application to export traces via gRPC:
65+
//! Configure your application to export traces via gRPC (the tonic client requires a Tokio runtime):
66+
//!
67+
//! - With `[tokio::main]`
6668
//!
6769
//! ```no_run
6870
//! # #[cfg(all(feature = "trace", feature = "grpc-tonic"))]
6971
//! # {
70-
//! use opentelemetry::global;
71-
//! use opentelemetry::trace::Tracer;
72+
//! use opentelemetry::{global, trace::Tracer};
7273
//!
74+
//! #[tokio::main]
7375
//! fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
7476
//! // Initialize OTLP exporter using gRPC (Tonic)
7577
//! let otlp_exporter = opentelemetry_otlp::SpanExporter::builder()
7678
//! .with_tonic()
7779
//! .build()?;
7880
//!
7981
//! // Create a tracer provider with the exporter
80-
//! let _ = opentelemetry_sdk::trace::SdkTracerProvider::builder()
82+
//! let tracer_provider = opentelemetry_sdk::trace::SdkTracerProvider::builder()
8183
//! .with_simple_exporter(otlp_exporter)
8284
//! .build();
8385
//!
86+
//! // Set it as the global provider
87+
//! global::set_tracer_provider(tracer_provider);
88+
//!
89+
//! // Get a tracer and create spans
90+
//! let tracer = global::tracer("my_tracer");
91+
//! tracer.in_span("doing_work", |_cx| {
92+
//! // Your application logic here...
93+
//! });
94+
//!
95+
//! Ok(())
96+
//! # }
97+
//! }
98+
//! ```
99+
//!
100+
//! - Without `[tokio::main]`
101+
//!
102+
//! ```no_run
103+
//! # #[cfg(all(feature = "trace", feature = "grpc-tonic"))]
104+
//! # {
105+
//! use opentelemetry::{global, trace::Tracer};
106+
//!
107+
//! fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
108+
//! // Initialize OTLP exporter using gRPC (Tonic)
109+
//! let rt = tokio::runtime::Runtime::new()?;
110+
//! let tracer_provider = rt.block_on(async {
111+
//! let exporter = opentelemetry_otlp::SpanExporter::builder()
112+
//! .with_tonic()
113+
//! .build()
114+
//! .expect("Failed to create span exporter");
115+
//! opentelemetry_sdk::trace::SdkTracerProvider::builder()
116+
//! .with_simple_exporter(exporter)
117+
//! .build()
118+
//! });
119+
//!
120+
//! // Set it as the global provider
121+
//! global::set_tracer_provider(tracer_provider);
122+
//!
84123
//! // Get a tracer and create spans
85124
//! let tracer = global::tracer("my_tracer");
86125
//! tracer.in_span("doing_work", |_cx| {
87126
//! // Your application logic here...
88127
//! });
89128
//!
129+
//! // Ensure the runtime (`rt`) remains active until the program ends
90130
//! Ok(())
91131
//! # }
92132
//! }

0 commit comments

Comments
 (0)