@@ -13,6 +13,9 @@ fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
13
13
let reader = PeriodicReader :: builder ( exporter, opentelemetry_sdk:: runtime:: Tokio ) . build ( ) ;
14
14
15
15
let provider = opentelemetry_sdk:: metrics:: SdkMeterProvider :: builder ( )
16
+ . with_resource ( opentelemetry_sdk:: resource:: Resource :: new ( vec ! [
17
+ KeyValue :: new( "service.name" , "self-diagnostics" ) ,
18
+ ] ) )
16
19
. with_reader ( reader)
17
20
. build ( ) ;
18
21
@@ -26,7 +29,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
26
29
// OpenTelemetry uses `tracing` crate for its internal logging. Unless a
27
30
// tracing subscriber is set, the logs will be discarded. In this example,
28
31
// we configure a `tracing` subscriber to:
29
- // 1. Print logs of level INFO or higher to stdout using tracing's fmt layer.
32
+ // 1. Print logs of level DEBUG or higher to stdout using tracing's fmt layer.
30
33
// 2. Filter logs from OpenTelemetry's dependencies (like tonic, hyper,
31
34
// reqwest etc. which are commonly used by the OTLP exporter) to only print
32
35
// ERROR-level logs. This filtering helps reduce repetitive log messages
@@ -39,7 +42,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
39
42
// Hence, one may use "add_directive("opentelemetry=off".parse().unwrap())"
40
43
// to turn off all logs from OpenTelemetry.
41
44
42
- let filter = EnvFilter :: new ( "info " )
45
+ let filter = EnvFilter :: new ( "debug " )
43
46
. add_directive ( "hyper=error" . parse ( ) . unwrap ( ) )
44
47
. add_directive ( "tonic=error" . parse ( ) . unwrap ( ) )
45
48
. add_directive ( "h2=error" . parse ( ) . unwrap ( ) )
@@ -54,11 +57,14 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
54
57
info ! ( "Starting self-diagnostics example" ) ;
55
58
56
59
let meter = global:: meter ( "example" ) ;
57
- // Create a counter using an invalid name to trigger
58
- // internal log about the same.
59
- let counter = meter. u64_counter ( "my_counter with_space" ) . build ( ) ;
60
+ let counter = meter. u64_counter ( "my_counter" ) . build ( ) ;
60
61
counter. add ( 10 , & [ KeyValue :: new ( "key" , "value" ) ] ) ;
61
62
63
+ let _observable_counter = meter
64
+ . u64_observable_counter ( "my_observable_counter" )
65
+ . with_callback ( |observer| observer. observe ( 10 , & [ KeyValue :: new ( "key" , "value" ) ] ) )
66
+ . build ( ) ;
67
+
62
68
meter_provider. shutdown ( ) ?;
63
69
info ! ( "Shutdown complete. Bye!" ) ;
64
70
Ok ( ( ) )
0 commit comments