Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions server/svix-server/src/cfg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,8 @@ pub struct ConfigurationInner {
pub opentelemetry_sample_ratio: Option<f64>,
/// The service name to use for OpenTelemetry. If not provided, it defaults to "svix_server".
pub opentelemetry_service_name: String,
/// The deployment environment to use for OpenTelemetry. It will be translated to "deployment.environment" resource if provided
pub opentelemetry_deployment_env: Option<String>,
/// Whether to enable the logging of the databases at the configured log level. This may be
/// useful for analyzing their response times.
pub db_tracing: bool,
Expand Down
53 changes: 36 additions & 17 deletions server/svix-server/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,19 @@ pub fn setup_tracing(
.tonic()
.with_endpoint(addr);

let resources: Vec<opentelemetry::KeyValue> = [
Some(opentelemetry::KeyValue::new(
"service.name",
cfg.opentelemetry_service_name.clone(),
)),
cfg.opentelemetry_deployment_env
.as_ref()
.map(|name| opentelemetry::KeyValue::new("deployment.environment", name.clone())),
]
.into_iter()
.flatten()
.collect();

let provider = opentelemetry_otlp::new_pipeline()
.tracing()
.with_exporter(exporter)
Expand All @@ -285,12 +298,7 @@ pub fn setup_tracing(
.map(opentelemetry_sdk::trace::Sampler::TraceIdRatioBased)
.unwrap_or(opentelemetry_sdk::trace::Sampler::AlwaysOn),
)
.with_resource(opentelemetry_sdk::Resource::new(vec![
opentelemetry::KeyValue::new(
"service.name",
cfg.opentelemetry_service_name.clone(),
),
])),
.with_resource(opentelemetry_sdk::Resource::new(resources)),
)
.install_batch(Tokio)
.unwrap();
Expand Down Expand Up @@ -352,21 +360,32 @@ pub fn setup_metrics(cfg: &ConfigurationInner) -> Option<SdkMeterProvider> {
.tonic()
.with_endpoint(addr);

let resources: Vec<opentelemetry::KeyValue> = [
Some(opentelemetry::KeyValue::new(
"service.name",
cfg.opentelemetry_service_name.clone(),
)),
cfg.opentelemetry_deployment_env
.as_ref()
.map(|name| opentelemetry::KeyValue::new("deployment.environment", name.clone())),
Some(opentelemetry::KeyValue::new(
"instance_id",
INSTANCE_ID.to_owned(),
)),
Some(opentelemetry::KeyValue::new(
"service.version",
option_env!("GITHUB_SHA").unwrap_or("unknown"),
)),
]
.into_iter()
.flatten()
.collect();

opentelemetry_otlp::new_pipeline()
.metrics(Tokio)
.with_delta_temporality()
.with_exporter(exporter)
.with_resource(opentelemetry_sdk::Resource::new(vec![
opentelemetry::KeyValue::new(
"service.name",
cfg.opentelemetry_service_name.clone(),
),
opentelemetry::KeyValue::new("instance_id", INSTANCE_ID.to_owned()),
opentelemetry::KeyValue::new(
"service.version",
option_env!("GITHUB_SHA").unwrap_or("unknown"),
),
]))
.with_resource(opentelemetry_sdk::Resource::new(resources))
.build()
.unwrap()
})
Expand Down
Loading