2022-02-17 22:28:23 +00:00
|
|
|
use std::time::Duration;
|
|
|
|
|
|
|
|
use opentelemetry::sdk::{
|
2022-02-22 16:34:46 +00:00
|
|
|
trace::{self, IdGenerator, Sampler},
|
2022-02-17 22:28:23 +00:00
|
|
|
Resource,
|
|
|
|
};
|
|
|
|
use opentelemetry::KeyValue;
|
|
|
|
use opentelemetry_otlp::WithExportConfig;
|
|
|
|
|
|
|
|
use garage_util::data::*;
|
|
|
|
use garage_util::error::*;
|
|
|
|
|
|
|
|
pub fn init_tracing(export_to: &str, node_id: Uuid) -> Result<(), Error> {
|
|
|
|
let node_id = hex::encode(&node_id.as_slice()[..8]);
|
|
|
|
|
|
|
|
opentelemetry_otlp::new_pipeline()
|
|
|
|
.tracing()
|
|
|
|
.with_exporter(
|
|
|
|
opentelemetry_otlp::new_exporter()
|
|
|
|
.tonic()
|
|
|
|
.with_endpoint(export_to)
|
|
|
|
.with_timeout(Duration::from_secs(3)),
|
|
|
|
)
|
|
|
|
.with_trace_config(
|
|
|
|
trace::config()
|
|
|
|
.with_id_generator(IdGenerator::default())
|
2022-02-22 16:34:46 +00:00
|
|
|
.with_sampler(Sampler::AlwaysOn)
|
2022-02-17 22:28:23 +00:00
|
|
|
.with_resource(Resource::new(vec![
|
|
|
|
KeyValue::new("service.name", "garage"),
|
|
|
|
KeyValue::new("service.instance.id", node_id),
|
|
|
|
])),
|
|
|
|
)
|
|
|
|
.install_batch(opentelemetry::runtime::Tokio)
|
|
|
|
.ok_or_message("Unable to initialize tracing")?;
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|