1
0
Fork 0
forked from mirror/grapevine

tracing: allow configuring service name

This is essential when consuming tracing data from multiple servers.
This commit is contained in:
Lambda 2024-08-24 18:59:36 +00:00
parent c355e2ad39
commit 14afa1357e
2 changed files with 11 additions and 8 deletions

View file

@ -178,6 +178,7 @@ pub(crate) struct OtelTraceConfig {
pub(crate) enable: bool,
pub(crate) filter: EnvFilterClone,
pub(crate) endpoint: Option<String>,
pub(crate) service_name: String,
}
impl Default for OtelTraceConfig {
@ -186,6 +187,7 @@ impl Default for OtelTraceConfig {
enable: false,
filter: default_tracing_filter(),
endpoint: None,
service_name: env!("CARGO_PKG_NAME").to_owned(),
}
}
}

View file

@ -171,8 +171,11 @@ pub(crate) fn init(
let tracer = opentelemetry_otlp::new_pipeline()
.tracing()
.with_trace_config(
opentelemetry_sdk::trace::config()
.with_resource(standard_resource()),
opentelemetry_sdk::trace::config().with_resource(
standard_resource(
config.observability.traces.service_name.clone(),
),
),
)
.with_exporter(exporter)
.install_batch(opentelemetry_sdk::runtime::Tokio)?;
@ -248,11 +251,9 @@ pub(crate) fn init(
}
/// Construct the standard [`Resource`] value to use for this service
fn standard_resource() -> Resource {
Resource::default().merge(&Resource::new([KeyValue::new(
"service.name",
env!("CARGO_PKG_NAME"),
)]))
fn standard_resource(service_name: String) -> Resource {
Resource::default()
.merge(&Resource::new([KeyValue::new("service.name", service_name)]))
}
/// Holds state relating to metrics
@ -306,7 +307,7 @@ impl Metrics {
)
.expect("view should be valid"),
)
.with_resource(standard_resource())
.with_resource(standard_resource(env!("CARGO_PKG_NAME").to_owned()))
.build();
let meter = provider.meter(env!("CARGO_PKG_NAME"));