Allow disabling the Dynatrace instruments

Since Micrometer version 1.9.0, the Dynatrace registry uses specialized
instruments by default, which ensures data is exported in an optimal
format. By using this new flag, users can switch back to the previous
behavior, which uses the original instruments from Micrometer.

See gh-30637
This commit is contained in:
Georg Pirklbauer 2022-04-07 15:00:25 +02:00 committed by Stephane Nicoll
parent cd8c64e1aa
commit 7a05faf079
3 changed files with 29 additions and 0 deletions

View File

@ -168,6 +168,14 @@ public class DynatraceProperties extends StepRegistryProperties {
*/
private String metricKeyPrefix;
/**
* Since version 1.9.0 of Micrometer, the Dynatrace registry uses specialized
* instruments to make sure data is exported in an optimal format. This behavior
* is the new default. This toggle allows switching back to the original
* implementation.
*/
private boolean useDynatraceSummaryInstruments = true;
public Map<String, String> getDefaultDimensions() {
return this.defaultDimensions;
}
@ -192,6 +200,14 @@ public class DynatraceProperties extends StepRegistryProperties {
this.metricKeyPrefix = metricKeyPrefix;
}
public boolean isUseDynatraceSummaryInstruments() {
return this.useDynatraceSummaryInstruments;
}
public void setUseDynatraceSummaryInstruments(boolean useDynatraceSummaryInstruments) {
this.useDynatraceSummaryInstruments = useDynatraceSummaryInstruments;
}
}
}

View File

@ -90,6 +90,11 @@ class DynatracePropertiesConfigAdapter extends StepRegistryPropertiesConfigAdapt
return get(v2(V2::isEnrichWithDynatraceMetadata), DynatraceConfig.super::enrichWithDynatraceMetadata);
}
@Override
public boolean useDynatraceSummaryInstruments() {
return get(v2(V2::isUseDynatraceSummaryInstruments), DynatraceConfig.super::useDynatraceSummaryInstruments);
}
private <V> Function<DynatraceProperties, V> v1(Function<V1, V> getter) {
return (properties) -> getter.apply(properties.getV1());
}

View File

@ -125,6 +125,13 @@ class DynatracePropertiesConfigAdapterTests {
assertThat(new DynatracePropertiesConfigAdapter(properties).enrichWithDynatraceMetadata()).isTrue();
}
@Test
void whenPropertiesUseDynatraceInstrumentsIsSetAdapterUseDynatraceInstrumentsReturnsIt() {
DynatraceProperties properties = new DynatraceProperties();
properties.getV2().setUseDynatraceSummaryInstruments(false);
assertThat(new DynatracePropertiesConfigAdapter(properties).useDynatraceSummaryInstruments()).isFalse();
}
@Test
void whenPropertiesDefaultDimensionsIsSetAdapterDefaultDimensionsReturnsIt() {
DynatraceProperties properties = new DynatraceProperties();
@ -148,6 +155,7 @@ class DynatracePropertiesConfigAdapterTests {
assertThat(properties.getV2().getMetricKeyPrefix()).isNull();
assertThat(properties.getV2().isEnrichWithDynatraceMetadata()).isTrue();
assertThat(properties.getV2().getDefaultDimensions()).isNull();
assertThat(properties.getV2().isUseDynatraceSummaryInstruments()).isTrue();
assertThat(properties.getDeviceId()).isNull();
assertThat(properties.getTechnologyType()).isEqualTo("java");
assertThat(properties.getGroup()).isNull();