From d4c4a09d14e1b9fb98e353e09fc6110098e61a40 Mon Sep 17 00:00:00 2001 From: Sampras Lopes Date: Wed, 11 Jan 2023 16:02:57 +0530 Subject: [PATCH] feat(router_env): add sampling_rate for traces (#335) --- config/config.example.toml | 5 +++++ crates/router_env/src/logger/config.rs | 2 ++ crates/router_env/src/logger/setup.rs | 3 +++ 3 files changed, 10 insertions(+) diff --git a/config/config.example.toml b/config/config.example.toml index f21b49ca4a..e0bc4f54e7 100644 --- a/config/config.example.toml +++ b/config/config.example.toml @@ -63,6 +63,11 @@ log_format = "default" # Log format. "default" or "json" # defaults to "WARN" level = "DEBUG" +# Telemetry configuration for traces +[log.telemetry] +enabled = false # boolean [true or false] +sampling_rate = 0.1 # decimal rate between 0.0 - 1.0 + # This section provides configuration details for using AWS KMS to encrypt # data like payment method details being sent over a network. [keys] diff --git a/crates/router_env/src/logger/config.rs b/crates/router_env/src/logger/config.rs index a823aef47b..6687d2f7f3 100644 --- a/crates/router_env/src/logger/config.rs +++ b/crates/router_env/src/logger/config.rs @@ -90,6 +90,8 @@ pub struct LogConsole { pub struct LogTelemetry { /// Whether tracing/telemetry is enabled. pub enabled: bool, + /// Sampling rate for traces + pub sampling_rate: Option, } /// Telemetry / tracing. diff --git a/crates/router_env/src/logger/setup.rs b/crates/router_env/src/logger/setup.rs index 011d5c88ab..35c7a91034 100644 --- a/crates/router_env/src/logger/setup.rs +++ b/crates/router_env/src/logger/setup.rs @@ -42,6 +42,9 @@ pub fn setup>( let telemetry = if conf.telemetry.enabled { let trace_config = trace::config() + .with_sampler(trace::Sampler::TraceIdRatioBased( + conf.telemetry.sampling_rate.unwrap_or(1.0), + )) .with_resource(Resource::new(vec![KeyValue::new("service.name", "router")])); let tracer = opentelemetry_otlp::new_pipeline() .tracing()