diff --git a/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/DynatraceMeterRegistry.java b/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/DynatraceMeterRegistry.java index 9291e155f7..a727247228 100644 --- a/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/DynatraceMeterRegistry.java +++ b/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/DynatraceMeterRegistry.java @@ -140,6 +140,11 @@ private void registerMinPercentile() { */ @Override public DistributionStatisticConfig configure(Meter.Id id, DistributionStatisticConfig config) { + if (useDynatraceSummaryInstruments && dynatraceInstrumentTypeExists(id)) { + // do not add artificial 0 percentile when using Dynatrace instruments + return config; + } + double[] percentiles; double[] configPercentiles = config.getPercentiles(); @@ -179,6 +184,16 @@ private boolean hasArtificialZerothPercentile(Meter.Id id) { }); } + private boolean dynatraceInstrumentTypeExists(Meter.Id id) { + switch (id.getType()) { + case DISTRIBUTION_SUMMARY: + case TIMER: + return true; + default: + return false; + } + } + public static class Builder { private final DynatraceConfig config; diff --git a/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/types/DynatraceDistributionSummary.java b/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/types/DynatraceDistributionSummary.java index d8b966a87d..005223b7bf 100644 --- a/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/types/DynatraceDistributionSummary.java +++ b/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/types/DynatraceDistributionSummary.java @@ -39,16 +39,20 @@ public final class DynatraceDistributionSummary extends AbstractDistributionSumm // Configuration that will set the Histogram in AbstractDistributionSummary to a // NoopHistogram. private static final DistributionStatisticConfig NOOP_HISTOGRAM_CONFIG = DistributionStatisticConfig.builder() - .percentilesHistogram(false).percentiles().build(); + .percentilesHistogram(false).percentiles().serviceLevelObjectives().build(); private final DynatraceSummary summary = new DynatraceSummary(); public DynatraceDistributionSummary(Id id, Clock clock, DistributionStatisticConfig distributionStatisticConfig, double scale) { - super(id, clock, NOOP_HISTOGRAM_CONFIG, scale, false); - - if (distributionStatisticConfig != DistributionStatisticConfig.NONE) { - LOGGER.warn("Distribution statistic config is currently ignored."); + // make sure the Histogram in AbstractDistributionSummary is always a + // NoopHistogram by disabling the respective config options + super(id, clock, distributionStatisticConfig.merge(NOOP_HISTOGRAM_CONFIG), scale, false); + + if (distributionStatisticConfig.isPublishingPercentiles() + || distributionStatisticConfig.isPublishingHistogram()) { + LOGGER.warn( + "Histogram config on DistributionStatisticConfig is currently ignored. Collecting summary statistics."); } } diff --git a/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/types/DynatraceTimer.java b/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/types/DynatraceTimer.java index 9644f0741f..5cdb151670 100644 --- a/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/types/DynatraceTimer.java +++ b/implementations/micrometer-registry-dynatrace/src/main/java/io/micrometer/dynatrace/types/DynatraceTimer.java @@ -38,7 +38,7 @@ public final class DynatraceTimer extends AbstractTimer implements DynatraceSumm // Configuration that will set the Histogram in AbstractTimer to a NoopHistogram. private static final DistributionStatisticConfig NOOP_HISTOGRAM_CONFIG = DistributionStatisticConfig.builder() - .percentilesHistogram(false).percentiles().build(); + .percentilesHistogram(false).percentiles().serviceLevelObjectives().build(); private final DynatraceSummary summary = new DynatraceSummary(); @@ -46,10 +46,12 @@ public DynatraceTimer(Id id, Clock clock, DistributionStatisticConfig distributi PauseDetector pauseDetector, TimeUnit baseTimeUnit) { // make sure the Histogram in AbstractTimer is always a NoopHistogram by disabling // the respective config options - super(id, clock, NOOP_HISTOGRAM_CONFIG, pauseDetector, baseTimeUnit, false); + super(id, clock, distributionStatisticConfig.merge(NOOP_HISTOGRAM_CONFIG), pauseDetector, baseTimeUnit, false); - if (distributionStatisticConfig != DistributionStatisticConfig.NONE) { - LOGGER.warn("Distribution statistic config is currently ignored."); + if (distributionStatisticConfig.isPublishingPercentiles() + || distributionStatisticConfig.isPublishingHistogram()) { + LOGGER.warn( + "Histogram config on DistributionStatisticConfig is currently ignored. Collecting summary statistics."); } }