Skip to content

Commit 02759c5

Browse files
dependabot[bot]jaxxnitt
authored andcommitted
Add publishAverage config and conditional avg publishing for timers/summaries
Signed-off-by: jaxxnitt <[email protected]>
1 parent ba6d18f commit 02759c5

File tree

2 files changed

+39
-13
lines changed

2 files changed

+39
-13
lines changed

implementations/micrometer-registry-datadog/src/main/java/io/micrometer/datadog/DatadogConfig.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,8 @@ default Validated<?> validate() {
7676
checkRequired("uri", DatadogConfig::uri));
7777
}
7878

79+
default boolean publishAverage() {
80+
return getBoolean(this, "publishAverage").orElse(true);
81+
}
82+
7983
}

implementations/micrometer-registry-datadog/src/main/java/io/micrometer/datadog/DatadogMeterRegistry.java

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.util.concurrent.ThreadFactory;
3535
import java.util.concurrent.TimeUnit;
3636
import java.util.stream.Stream;
37+
import java.util.Objects;
3738

3839
import static io.micrometer.core.instrument.util.StringEscapeUtils.escapeJson;
3940
import static java.util.stream.Collectors.joining;
@@ -160,29 +161,44 @@ private Stream<String> writeTimer(FunctionTimer timer, Map<String, DatadogMetric
160161
Meter.Id id = timer.getId();
161162

162163
addToMetadataList(metadata, id, "count", Statistic.COUNT, "occurrence");
163-
addToMetadataList(metadata, id, "avg", Statistic.VALUE, null);
164+
165+
if (config.publishAverage()) {
166+
addToMetadataList(metadata, id, "avg", Statistic.VALUE, null);
167+
}
168+
164169
addToMetadataList(metadata, id, "sum", Statistic.TOTAL_TIME, null);
165170

166171
// we can't know anything about max and percentiles originating from a function
167172
// timer
168173
return Stream.of(writeMetric(id, "count", wallTime, timer.count(), Statistic.COUNT, "occurrence"),
169-
writeMetric(id, "avg", wallTime, timer.mean(getBaseTimeUnit()), Statistic.VALUE, null),
170-
writeMetric(id, "sum", wallTime, timer.totalTime(getBaseTimeUnit()), Statistic.TOTAL_TIME, null));
174+
175+
config.publishAverage()
176+
? writeMetric(id, "avg", wallTime, timer.mean(getBaseTimeUnit()), Statistic.VALUE, null) : null,
177+
178+
writeMetric(id, "sum", wallTime, timer.totalTime(getBaseTimeUnit()), Statistic.TOTAL_TIME, null))
179+
// filter out null avg when disabled
180+
.filter(Objects::nonNull);
171181
}
172182

173183
private Stream<String> writeTimer(Timer timer, Map<String, DatadogMetricMetadata> metadata) {
174184
final long wallTime = clock.wallTime();
175185
final Stream.Builder<String> metrics = Stream.builder();
176186

177187
Meter.Id id = timer.getId();
178-
metrics.add(writeMetric(id, "sum", wallTime, timer.totalTime(getBaseTimeUnit()), Statistic.TOTAL_TIME, null));
179-
metrics.add(writeMetric(id, "count", wallTime, (double) timer.count(), Statistic.COUNT, "occurrence"));
180-
metrics.add(writeMetric(id, "avg", wallTime, timer.mean(getBaseTimeUnit()), Statistic.VALUE, null));
181-
metrics.add(writeMetric(id, "max", wallTime, timer.max(getBaseTimeUnit()), Statistic.MAX, null));
182188

189+
metrics.add(writeMetric(id, "sum", wallTime, timer.totalTime(getBaseTimeUnit()), Statistic.TOTAL_TIME, null));
183190
addToMetadataList(metadata, id, "sum", Statistic.TOTAL_TIME, null);
191+
192+
metrics.add(writeMetric(id, "count", wallTime, (double) timer.count(), Statistic.COUNT, "occurrence"));
184193
addToMetadataList(metadata, id, "count", Statistic.COUNT, "occurrence");
185-
addToMetadataList(metadata, id, "avg", Statistic.VALUE, null);
194+
195+
// publish avg only when enabled
196+
if (config.publishAverage()) {
197+
metrics.add(writeMetric(id, "avg", wallTime, timer.mean(getBaseTimeUnit()), Statistic.VALUE, null));
198+
addToMetadataList(metadata, id, "avg", Statistic.VALUE, null);
199+
}
200+
201+
metrics.add(writeMetric(id, "max", wallTime, timer.max(getBaseTimeUnit()), Statistic.MAX, null));
186202
addToMetadataList(metadata, id, "max", Statistic.MAX, null);
187203

188204
return metrics.build();
@@ -193,14 +209,20 @@ private Stream<String> writeSummary(DistributionSummary summary, Map<String, Dat
193209
final Stream.Builder<String> metrics = Stream.builder();
194210

195211
Meter.Id id = summary.getId();
196-
metrics.add(writeMetric(id, "sum", wallTime, summary.totalAmount(), Statistic.TOTAL, null));
197-
metrics.add(writeMetric(id, "count", wallTime, (double) summary.count(), Statistic.COUNT, "occurrence"));
198-
metrics.add(writeMetric(id, "avg", wallTime, summary.mean(), Statistic.VALUE, null));
199-
metrics.add(writeMetric(id, "max", wallTime, summary.max(), Statistic.MAX, null));
200212

213+
metrics.add(writeMetric(id, "sum", wallTime, summary.totalAmount(), Statistic.TOTAL, null));
201214
addToMetadataList(metadata, id, "sum", Statistic.TOTAL, null);
215+
216+
metrics.add(writeMetric(id, "count", wallTime, (double) summary.count(), Statistic.COUNT, "occurrence"));
202217
addToMetadataList(metadata, id, "count", Statistic.COUNT, "occurrence");
203-
addToMetadataList(metadata, id, "avg", Statistic.VALUE, null);
218+
219+
// avg (only when enabled)
220+
if (config.publishAverage()) {
221+
metrics.add(writeMetric(id, "avg", wallTime, summary.mean(), Statistic.VALUE, null));
222+
addToMetadataList(metadata, id, "avg", Statistic.VALUE, null);
223+
}
224+
225+
metrics.add(writeMetric(id, "max", wallTime, summary.max(), Statistic.MAX, null));
204226
addToMetadataList(metadata, id, "max", Statistic.MAX, null);
205227

206228
return metrics.build();

0 commit comments

Comments
 (0)