Skip to content

Commit

Permalink
docs: Fix tracing grpc example (#2710)
Browse files Browse the repository at this point in the history
  • Loading branch information
cijothomas authored Feb 26, 2025
1 parent 08a1f52 commit 11ed8e0
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 9 deletions.
2 changes: 1 addition & 1 deletion examples/tracing-grpc/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["rt-tokio"]
opentelemetry-stdout = { workspace = true, features = ["trace"] }
prost = { workspace = true }
tokio = { workspace = true, features = ["full"] }
tonic = { workspace = true, features = ["server"] }
tonic = { workspace = true, features = ["server", "codegen", "channel", "prost"] }

[build-dependencies]
tonic-build = { workspace = true }
23 changes: 17 additions & 6 deletions examples/tracing-grpc/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ fn init_tracer() -> sdktrace::SdkTracerProvider {
global::set_text_map_propagator(TraceContextPropagator::new());
// Install stdout exporter pipeline to be able to retrieve the collected spans.
let provider = sdktrace::SdkTracerProvider::builder()
.with_batch_exporter(SpanExporter::default())
.with_simple_exporter(SpanExporter::default())
.build();

global::set_tracer_provider(provider.clone());
Expand Down Expand Up @@ -43,10 +43,14 @@ async fn greet() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static
let span = tracer
.span_builder("Greeter/client")
.with_kind(SpanKind::Client)
.with_attributes([KeyValue::new("component", "grpc")])
.with_attributes([
KeyValue::new("rpc.system", "grpc"),
KeyValue::new("server.port", 50052),
KeyValue::new("rpc.method", "say_hello"),
])
.start(&tracer);
let cx = Context::current_with_span(span);
let mut client = GreeterClient::connect("http://[::1]:50051").await?;
let mut client = GreeterClient::connect("http://[::1]:50052").await?;

let mut request = tonic::Request::new(HelloRequest {
name: "Tonic".into(),
Expand All @@ -58,16 +62,23 @@ async fn greet() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static

let response = client.say_hello(request).await;

let span = cx.span();
let status = match response {
Ok(_res) => "OK".to_string(),
Ok(_res) => {
span.set_attribute(KeyValue::new("response", "OK"));
"OK".to_string()
}
Err(status) => {
// Access the status code
let status_code = status.code();
span.set_attribute(KeyValue::new(
"response_code_desc",
status_code.description(),
));
status_code.to_string()
}
};
cx.span()
.add_event("Got response!", vec![KeyValue::new("status", status)]);
span.add_event("Got response!", vec![KeyValue::new("status", status)]);

Ok(())
}
Expand Down
10 changes: 8 additions & 2 deletions examples/tracing-grpc/src/server.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use hello_world::greeter_server::{Greeter, GreeterServer};
use hello_world::{HelloReply, HelloRequest};
use opentelemetry::KeyValue;
use opentelemetry::{
global,
propagation::Extractor,
Expand All @@ -13,7 +14,7 @@ fn init_tracer() -> SdkTracerProvider {
global::set_text_map_propagator(TraceContextPropagator::new());
// Install stdout exporter pipeline to be able to retrieve the collected spans.
let provider = SdkTracerProvider::builder()
.with_batch_exporter(SpanExporter::default())
.with_simple_exporter(SpanExporter::default())
.build();

global::set_tracer_provider(provider.clone());
Expand Down Expand Up @@ -65,6 +66,11 @@ impl Greeter for MyGreeter {
let mut span = tracer
.span_builder("Greeter/server")
.with_kind(SpanKind::Server)
.with_attributes([
KeyValue::new("rpc.system", "grpc"),
KeyValue::new("server.port", 50052),
KeyValue::new("rpc.method", "say_hello"),
])
.start_with_context(&tracer, &parent_cx);

let name = request.into_inner().name;
Expand All @@ -83,7 +89,7 @@ impl Greeter for MyGreeter {
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
let provider = init_tracer();

let addr = "[::1]:50051".parse()?;
let addr = "[::1]:50052".parse()?;
let greeter = MyGreeter::default();

Server::builder()
Expand Down

0 comments on commit 11ed8e0

Please sign in to comment.