Skip to content

Commit 11ed8e0

Browse files
authored
docs: Fix tracing grpc example (#2710)
1 parent 08a1f52 commit 11ed8e0

File tree

3 files changed

+26
-9
lines changed

3 files changed

+26
-9
lines changed

examples/tracing-grpc/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["rt-tokio"]
1919
opentelemetry-stdout = { workspace = true, features = ["trace"] }
2020
prost = { workspace = true }
2121
tokio = { workspace = true, features = ["full"] }
22-
tonic = { workspace = true, features = ["server"] }
22+
tonic = { workspace = true, features = ["server", "codegen", "channel", "prost"] }
2323

2424
[build-dependencies]
2525
tonic-build = { workspace = true }

examples/tracing-grpc/src/client.rs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ fn init_tracer() -> sdktrace::SdkTracerProvider {
1313
global::set_text_map_propagator(TraceContextPropagator::new());
1414
// Install stdout exporter pipeline to be able to retrieve the collected spans.
1515
let provider = sdktrace::SdkTracerProvider::builder()
16-
.with_batch_exporter(SpanExporter::default())
16+
.with_simple_exporter(SpanExporter::default())
1717
.build();
1818

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

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

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

65+
let span = cx.span();
6166
let status = match response {
62-
Ok(_res) => "OK".to_string(),
67+
Ok(_res) => {
68+
span.set_attribute(KeyValue::new("response", "OK"));
69+
"OK".to_string()
70+
}
6371
Err(status) => {
6472
// Access the status code
6573
let status_code = status.code();
74+
span.set_attribute(KeyValue::new(
75+
"response_code_desc",
76+
status_code.description(),
77+
));
6678
status_code.to_string()
6779
}
6880
};
69-
cx.span()
70-
.add_event("Got response!", vec![KeyValue::new("status", status)]);
81+
span.add_event("Got response!", vec![KeyValue::new("status", status)]);
7182

7283
Ok(())
7384
}

examples/tracing-grpc/src/server.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use hello_world::greeter_server::{Greeter, GreeterServer};
22
use hello_world::{HelloReply, HelloRequest};
3+
use opentelemetry::KeyValue;
34
use opentelemetry::{
45
global,
56
propagation::Extractor,
@@ -13,7 +14,7 @@ fn init_tracer() -> SdkTracerProvider {
1314
global::set_text_map_propagator(TraceContextPropagator::new());
1415
// Install stdout exporter pipeline to be able to retrieve the collected spans.
1516
let provider = SdkTracerProvider::builder()
16-
.with_batch_exporter(SpanExporter::default())
17+
.with_simple_exporter(SpanExporter::default())
1718
.build();
1819

1920
global::set_tracer_provider(provider.clone());
@@ -65,6 +66,11 @@ impl Greeter for MyGreeter {
6566
let mut span = tracer
6667
.span_builder("Greeter/server")
6768
.with_kind(SpanKind::Server)
69+
.with_attributes([
70+
KeyValue::new("rpc.system", "grpc"),
71+
KeyValue::new("server.port", 50052),
72+
KeyValue::new("rpc.method", "say_hello"),
73+
])
6874
.start_with_context(&tracer, &parent_cx);
6975

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

86-
let addr = "[::1]:50051".parse()?;
92+
let addr = "[::1]:50052".parse()?;
8793
let greeter = MyGreeter::default();
8894

8995
Server::builder()

0 commit comments

Comments
 (0)