@@ -5,15 +5,15 @@ use synd_o11y::{
5
5
use tracing:: { error, info} ;
6
6
7
7
use synd_api:: {
8
- args:: { self , Args } ,
8
+ args:: { self , Args , ObservabilityOptions } ,
9
9
config,
10
10
dependency:: Dependency ,
11
11
repository:: kvsd:: ConnectKvsdFailed ,
12
12
serve:: listen_and_serve,
13
13
shutdown:: Shutdown ,
14
14
} ;
15
15
16
- fn init_tracing ( ) -> Option < OpenTelemetryGuard > {
16
+ fn init_tracing ( options : & ObservabilityOptions ) -> Option < OpenTelemetryGuard > {
17
17
use synd_o11y:: {
18
18
opentelemetry:: init_propagation,
19
19
tracing_subscriber:: { audit, otel_log, otel_trace} ,
@@ -27,21 +27,19 @@ fn init_tracing() -> Option<OpenTelemetryGuard> {
27
27
use supports_color:: Stream ;
28
28
supports_color:: on ( Stream :: Stdout ) . is_some ( )
29
29
} ;
30
- let show_src = true ;
31
- let show_target = !show_src ;
30
+ let show_src = options . show_code_location ;
31
+ let show_target = options . show_target ;
32
32
33
33
let ( opentelemetry_layers, guard) = {
34
- match std:: env:: var ( "OTEL_EXPORTER_OTLP_ENDPOINT" ) . ok ( ) {
35
- None => ( None , None ) ,
36
- Some ( endpoint) if endpoint. is_empty ( ) => ( None , None ) ,
34
+ match options. otlp_endpoint . as_deref ( ) {
35
+ None | Some ( "" ) => ( None , None ) ,
37
36
Some ( endpoint) => {
38
37
let resource = synd_o11y:: opentelemetry:: resource ( config:: NAME , config:: VERSION ) ;
39
38
40
- tracing:: info!( endpoint, ?resource, "Export opentelemetry signals" ) ;
41
-
42
- let trace_layer = otel_trace:: layer ( resource. clone ( ) ) ;
39
+ let trace_layer =
40
+ otel_trace:: layer ( endpoint, resource. clone ( ) , options. trace_sampler_ratio ) ;
43
41
let log_layer = otel_log:: layer ( endpoint, resource. clone ( ) ) ;
44
- let metrics_layer = otel_metrics:: layer ( resource) ;
42
+ let metrics_layer = otel_metrics:: layer ( endpoint , resource) ;
45
43
46
44
(
47
45
Some ( trace_layer. and_then ( log_layer) . and_then ( metrics_layer) ) ,
@@ -62,7 +60,7 @@ fn init_tracing() -> Option<OpenTelemetryGuard> {
62
60
. with_filter ( metrics_event_filter ( ) )
63
61
. and_then ( opentelemetry_layers)
64
62
. with_filter (
65
- EnvFilter :: try_from_default_env ( )
63
+ EnvFilter :: try_from_env ( "SYND_LOG" )
66
64
. or_else ( |_| EnvFilter :: try_new ( "info" ) )
67
65
. unwrap ( )
68
66
. add_directive ( audit:: Audit :: directive ( ) ) ,
@@ -77,18 +75,18 @@ fn init_tracing() -> Option<OpenTelemetryGuard> {
77
75
guard
78
76
}
79
77
80
- async fn run ( Args { kvsd, tls } : Args , shutdown : Shutdown ) -> anyhow:: Result < ( ) > {
78
+ async fn run ( Args { kvsd, tls, o11y } : Args , shutdown : Shutdown ) -> anyhow:: Result < ( ) > {
81
79
let dep = Dependency :: new ( kvsd, tls) . await ?;
82
80
83
- info ! ( version = config:: VERSION , "Runinng..." ) ;
81
+ info ! ( version = config:: VERSION , otlp_endpoint=?o11y . otlp_endpoint , "Runinng..." ) ;
84
82
85
83
listen_and_serve ( dep, shutdown) . await
86
84
}
87
85
88
86
#[ tokio:: main]
89
87
async fn main ( ) {
90
88
let args = args:: parse ( ) ;
91
- let _guard = init_tracing ( ) ;
89
+ let _guard = init_tracing ( & args . o11y ) ;
92
90
let shutdown = Shutdown :: watch_signal ( ) ;
93
91
94
92
if let Err ( err) = run ( args, shutdown) . await {
0 commit comments