Skip to content

Commit e2b7c99

Browse files
authored
Disable span collector by default (#1853)
* Add the span collector to tracing only when there is a exporter. Ignore the configuration if there is no exporter to send the spans to. * Add task to boot jaeger locally in a docker container.
1 parent 7a9d4fe commit e2b7c99

File tree

2 files changed

+60
-38
lines changed

2 files changed

+60
-38
lines changed

.justfile

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,21 @@ lint-rust:
108108
[doc('Try to automatically fix Clippy problems')]
109109
lint-fix:
110110
cargo clippy --no-deps --fix --allow-dirty
111+
112+
[doc('Run Jaeger to collect traces locally')]
113+
run-jaeger:
114+
docker run -d --name jaeger \
115+
-e COLLECTOR_OTLP_ENABLED=true \
116+
-e COLLECTOR_OTLP_GRPC_HOST_PORT=0.0.0.0:4317 \
117+
-p 6831:6831/udp \
118+
-p 6832:6832/udp \
119+
-p 5778:5778 \
120+
-p 16686:16686 \
121+
-p 4317:4317 \
122+
-p 4318:4318 \
123+
-p 14250:14250 \
124+
-p 14268:14268 \
125+
-p 14269:14269 \
126+
-p 9411:9411 \
127+
jaegertracing/all-in-one:latest \
128+
--set=receivers.otlp.protocols.grpc.endpoint="0.0.0.0:4317"

server/src/tracing.rs

Lines changed: 42 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -48,48 +48,52 @@ where
4848
}
4949

5050
pub fn setup_tracing(config: &ServerConfig) -> Result<()> {
51-
let mut tracer_provider = TracerProviderBuilder::default().with_resource(
52-
Resource::builder_empty()
53-
.with_service_name("indexify-server")
54-
.build(),
55-
);
56-
match &config.telemetry.tracing_exporter {
57-
Some(TracingExporter::Otlp) => {
58-
let mut otlp = OtlpSpanExporter::builder().with_tonic();
59-
if let Some(endpoint) = &config.telemetry.endpoint {
60-
otlp = otlp.with_endpoint(endpoint);
51+
let env_filter_layer = get_env_filter();
52+
53+
let base = tracing_subscriber::Registry::default();
54+
55+
let subscriber: Box<dyn tracing::Subscriber + Send + Sync> =
56+
if let Some(tracing_exporter) = &config.telemetry.tracing_exporter {
57+
let mut tracer_provider = TracerProviderBuilder::default().with_resource(
58+
Resource::builder_empty()
59+
.with_service_name("indexify-server")
60+
.build(),
61+
);
62+
match tracing_exporter {
63+
TracingExporter::Otlp => {
64+
let mut otlp = OtlpSpanExporter::builder().with_tonic();
65+
if let Some(endpoint) = &config.telemetry.endpoint {
66+
otlp = otlp.with_endpoint(endpoint);
67+
}
68+
let exporter = otlp.build()?;
69+
tracer_provider = tracer_provider.with_batch_exporter(exporter)
70+
}
71+
TracingExporter::Stdout => {
72+
tracer_provider =
73+
tracer_provider.with_simple_exporter(StdoutSpanExporter::default());
74+
}
6175
}
62-
let exporter = otlp.build()?;
63-
tracer_provider = tracer_provider.with_batch_exporter(exporter)
64-
}
65-
Some(TracingExporter::Stdout) => {
66-
tracer_provider = tracer_provider.with_simple_exporter(StdoutSpanExporter::default());
67-
}
68-
_ => {}
69-
}
7076

71-
let sdk_tracer = tracer_provider.build();
77+
let sdk_tracer = tracer_provider.build();
7278

73-
let tracer = sdk_tracer.tracer("indexify-server");
74-
let tracing_span_layer = tracing_opentelemetry::layer()
75-
.with_tracer(tracer)
76-
.with_filter(SlateDBFilter);
79+
let tracer = sdk_tracer.tracer("indexify-server");
80+
let span_layer = tracing_opentelemetry::layer()
81+
.with_tracer(tracer)
82+
.with_filter(SlateDBFilter);
7783

78-
let env_filter_layer = get_env_filter();
79-
let log_layer = get_log_layer(config).with_filter(env_filter_layer);
80-
#[cfg(feature = "console-subscriber")]
81-
let subscriber: Box<dyn tracing::Subscriber + Send + Sync> = Box::new(
82-
tracing_subscriber::Registry::default()
83-
.with(console_subscriber::spawn())
84-
.with(tracing_span_layer)
85-
.with(log_layer),
86-
);
87-
#[cfg(not(feature = "console-subscriber"))]
88-
let subscriber: Box<dyn tracing::Subscriber + Send + Sync> = Box::new(
89-
tracing_subscriber::Registry::default()
90-
.with(tracing_span_layer)
91-
.with(log_layer),
92-
);
84+
let base = base.with(span_layer);
85+
#[cfg(feature = "console-subscriber")]
86+
let base = base.with(console_subscriber::spawn());
87+
88+
let log_layer = get_log_layer(config).with_filter(env_filter_layer.clone());
89+
Box::new(base.with(log_layer))
90+
} else {
91+
#[cfg(feature = "console-subscriber")]
92+
let base = base.with(console_subscriber::spawn());
93+
94+
let log_layer = get_log_layer(config).with_filter(env_filter_layer.clone());
95+
Box::new(base.with(log_layer))
96+
};
9397

9498
tracing::subscriber::set_global_default(subscriber)?;
9599
Ok(())

0 commit comments

Comments
 (0)