1
0
mirror of https://github.com/matrix-org/matrix-authentication-service.git synced 2025-08-06 06:02:40 +03:00

Propagate parent trace context

This commit is contained in:
Quentin Gliech
2021-10-14 17:39:49 +02:00
parent f9036aecd4
commit e630279b54
5 changed files with 117 additions and 16 deletions

View File

@@ -18,12 +18,19 @@ use futures::stream::{Stream, StreamExt};
use mas_config::{MetricsConfig, TelemetryConfig, TracingConfig};
use opentelemetry::{
global,
sdk::{self, trace::Tracer, Resource},
propagation::TextMapPropagator,
sdk::{
self,
propagation::{BaggagePropagator, TextMapCompositePropagator, TraceContextPropagator},
trace::Tracer,
Resource,
},
};
use opentelemetry_semantic_conventions as semcov;
pub fn setup(config: &TelemetryConfig) -> anyhow::Result<Option<Tracer>> {
global::set_error_handler(|e| tracing::error!("{}", e))?;
global::set_text_map_propagator(propagator());
let tracer = tracer(&config.tracing)?;
meter(&config.metrics)?;
@@ -34,6 +41,17 @@ pub fn shutdown() {
global::shutdown_tracer_provider();
}
fn propagator() -> impl TextMapPropagator {
// TODO: make this configurable
let baggage_propagator = BaggagePropagator::new();
let trace_context_propagator = TraceContextPropagator::new();
TextMapCompositePropagator::new(vec![
Box::new(baggage_propagator),
Box::new(trace_context_propagator),
])
}
#[cfg(feature = "otlp")]
fn otlp_tracer(endpoint: &Option<url::Url>) -> anyhow::Result<Tracer> {
use opentelemetry_otlp::WithExportConfig;