|
111 | 111 | import static datadog.trace.api.ConfigDefaults.DEFAULT_JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_LIMIT; |
112 | 112 | import static datadog.trace.api.ConfigDefaults.DEFAULT_LLM_OBS_AGENTLESS_ENABLED; |
113 | 113 | import static datadog.trace.api.ConfigDefaults.DEFAULT_LOGS_INJECTION_ENABLED; |
| 114 | +import static datadog.trace.api.ConfigDefaults.DEFAULT_METRICS_OTEL_CARDINALITY_LIMIT; |
114 | 115 | import static datadog.trace.api.ConfigDefaults.DEFAULT_METRICS_OTEL_ENABLED; |
115 | 116 | import static datadog.trace.api.ConfigDefaults.DEFAULT_METRICS_OTEL_INTERVAL; |
116 | 117 | import static datadog.trace.api.ConfigDefaults.DEFAULT_METRICS_OTEL_TIMEOUT; |
|
444 | 445 | import static datadog.trace.api.config.JmxFetchConfig.JMX_TAGS; |
445 | 446 | import static datadog.trace.api.config.LlmObsConfig.LLMOBS_AGENTLESS_ENABLED; |
446 | 447 | import static datadog.trace.api.config.LlmObsConfig.LLMOBS_ML_APP; |
| 448 | +import static datadog.trace.api.config.OtlpConfig.METRICS_OTEL_CARDINALITY_LIMIT; |
447 | 449 | import static datadog.trace.api.config.OtlpConfig.METRICS_OTEL_ENABLED; |
448 | 450 | import static datadog.trace.api.config.OtlpConfig.METRICS_OTEL_INTERVAL; |
449 | 451 | import static datadog.trace.api.config.OtlpConfig.METRICS_OTEL_TIMEOUT; |
@@ -913,6 +915,7 @@ public static String getHostName() { |
913 | 915 | private final boolean metricsOtelEnabled; |
914 | 916 | private final int metricsOtelInterval; |
915 | 917 | private final int metricsOtelTimeout; |
| 918 | + private final int metricsOtelCardinalityLimit; |
916 | 919 | private final String otlpMetricsEndpoint; |
917 | 920 | private final Map<String, String> otlpMetricsHeaders; |
918 | 921 | private final OtlpConfig.Protocol otlpMetricsProtocol; |
@@ -1887,6 +1890,17 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins |
1887 | 1890 | metricsOtelEnabled = |
1888 | 1891 | configProvider.getBoolean(METRICS_OTEL_ENABLED, DEFAULT_METRICS_OTEL_ENABLED); |
1889 | 1892 |
|
| 1893 | + int cardinalityLimit = |
| 1894 | + configProvider.getInteger( |
| 1895 | + METRICS_OTEL_CARDINALITY_LIMIT, DEFAULT_METRICS_OTEL_CARDINALITY_LIMIT); |
| 1896 | + if (cardinalityLimit < 0) { |
| 1897 | + log.warn( |
| 1898 | + "Invalid OTel metrics cardinality limit: {}. The value must be positive", |
| 1899 | + cardinalityLimit); |
| 1900 | + cardinalityLimit = DEFAULT_METRICS_OTEL_CARDINALITY_LIMIT; |
| 1901 | + } |
| 1902 | + metricsOtelCardinalityLimit = cardinalityLimit; |
| 1903 | + |
1890 | 1904 | int otelInterval = |
1891 | 1905 | configProvider.getInteger(METRICS_OTEL_INTERVAL, DEFAULT_METRICS_OTEL_INTERVAL); |
1892 | 1906 | if (otelInterval < 0) { |
@@ -5189,6 +5203,10 @@ public boolean isMetricsOtelEnabled() { |
5189 | 5203 | return metricsOtelEnabled; |
5190 | 5204 | } |
5191 | 5205 |
|
| 5206 | + public int getMetricsOtelCardinalityLimit() { |
| 5207 | + return metricsOtelCardinalityLimit; |
| 5208 | + } |
| 5209 | + |
5192 | 5210 | public int getMetricsOtelInterval() { |
5193 | 5211 | return metricsOtelInterval; |
5194 | 5212 | } |
@@ -6232,6 +6250,8 @@ public String toString() { |
6232 | 6250 | + metricsOtelInterval |
6233 | 6251 | + ", metricsOtelTimeout=" |
6234 | 6252 | + metricsOtelTimeout |
| 6253 | + + ", metricsOtelCardinalityLimit=" |
| 6254 | + + metricsOtelCardinalityLimit |
6235 | 6255 | + ", otlpMetricsEndpoint=" |
6236 | 6256 | + otlpMetricsEndpoint |
6237 | 6257 | + ", otlpMetricsHeaders=" |
|
0 commit comments