Skip to content

Commit 4971f73

Browse files
committed
add DD_TRACE_STATS_ADDITIONAL_TAGS_CARDINALITY_LIMIT
1 parent bf96688 commit 4971f73

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

crates/datadog-trace-agent/src/config.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,10 @@ pub struct Config {
115115
pub proxy_url: Option<String>,
116116
pub env: String,
117117
pub peer_tags: Vec<String>,
118+
/// Tag keys extracted from spans and used as additional aggregation dimensions in stats.
118119
pub additional_metric_tags: Vec<String>,
120+
/// Configures the per-bucket cardinality limit for additional_metric_tags stat entries.
121+
pub additional_metric_tags_cardinality_limit: Option<usize>,
119122
/// Whether the agent should compute trace stats
120123
pub agent_stats_computation_enabled: bool,
121124
}
@@ -268,6 +271,12 @@ impl Config {
268271
.filter(|s| !s.is_empty())
269272
.map(|s| s.split(',').map(str::to_owned).collect())
270273
.unwrap_or_default(),
274+
additional_metric_tags_cardinality_limit: env::var(
275+
"DD_TRACE_STATS_ADDITIONAL_TAGS_CARDINALITY_LIMIT",
276+
)
277+
.ok()
278+
.and_then(|s| s.parse::<usize>().ok())
279+
.filter(|&n| n > 0),
271280
agent_stats_computation_enabled: env::var("DD_AGENT_STATS_COMPUTATION_ENABLED")
272281
.map(|val| val.to_lowercase() == "true")
273282
.unwrap_or(false),
@@ -789,6 +798,7 @@ pub mod test_helpers {
789798
env: "none".to_string(),
790799
peer_tags: peer_tag_keys().unwrap(),
791800
additional_metric_tags: vec![],
801+
additional_metric_tags_cardinality_limit: None,
792802
agent_stats_computation_enabled: false,
793803
}
794804
}

crates/datadog-trace-agent/src/stats_concentrator_service.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,9 @@ impl StatsConcentratorService {
8484
fn new_span_concentrator(
8585
peer_tags: Vec<String>,
8686
additional_metric_tags: Vec<String>,
87+
additional_metric_tags_cardinality_limit: Option<usize>,
8788
) -> SpanConcentrator {
88-
SpanConcentrator::new(
89+
let mut concentrator = SpanConcentrator::new(
8990
Duration::from_nanos(BUCKET_DURATION_NS),
9091
SystemTime::now(),
9192
SPAN_KINDS_STATS_COMPUTED
@@ -94,7 +95,11 @@ impl StatsConcentratorService {
9495
.collect(),
9596
peer_tags,
9697
additional_metric_tags,
97-
)
98+
);
99+
if let Some(limit) = additional_metric_tags_cardinality_limit {
100+
concentrator.set_additional_metric_tags_cardinality_limit(limit);
101+
}
102+
concentrator
98103
}
99104

100105
pub async fn run(mut self) {
@@ -114,6 +119,7 @@ impl StatsConcentratorService {
114119
Self::new_span_concentrator(
115120
config.peer_tags.clone(),
116121
config.additional_metric_tags.clone(),
122+
config.additional_metric_tags_cardinality_limit,
117123
)
118124
});
119125

0 commit comments

Comments
 (0)