From 6e249c1a59a3d6ce117e242036bfae5eed064fb0 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Tue, 8 Aug 2023 16:06:08 -0700 Subject: [PATCH 1/9] Use upstream micrometer instrumentation --- .../exporter/AgentMetricExporter.java | 13 ++- .../exporter/BackCompatMetricData.java | 74 ++++++++++++ .../internal/init/AiConfigCustomizer.java | 7 +- .../ai/MicrometerInstrumentationModule.java | 10 ++ settings.gradle.kts | 1 + .../smoketest/ActuatorMetricsTest.java | 4 +- smoke-tests/apps/Micrometer/build.gradle.kts | 2 +- .../MicrometerOldVersion/build.gradle.kts | 8 ++ .../smoketestapp/SpringBootApp.java | 16 +++ .../smoketestapp/TestController.java | 30 +++++ .../src/main/resources/application.properties | 1 + .../smoketest/MicrometerDisabledTest.java | 31 +++++ .../smoketest/MicrometerNamespaceTest.java | 49 ++++++++ .../smoketest/MicrometerTest.java | 106 ++++++++++++++++++ .../resources/applicationinsights.json | 32 ++++++ .../disabled_applicationinsights.json | 15 +++ .../src/smokeTest/resources/logback-test.xml | 11 ++ .../namespace_applicationinsights.json | 15 +++ 18 files changed, 418 insertions(+), 7 deletions(-) create mode 100644 agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/BackCompatMetricData.java create mode 100644 smoke-tests/apps/MicrometerOldVersion/build.gradle.kts create mode 100644 smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java create mode 100644 smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java create mode 100644 smoke-tests/apps/MicrometerOldVersion/src/main/resources/application.properties create mode 100644 smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerDisabledTest.java create mode 100644 smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerNamespaceTest.java create mode 100644 smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java create mode 100644 smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/applicationinsights.json create mode 100644 smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/disabled_applicationinsights.json create mode 100644 smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/logback-test.xml create mode 100644 smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/namespace_applicationinsights.json diff --git a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java index 5c496c1e384..3a2b02f8b38 100644 --- a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java +++ b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java @@ -22,6 +22,7 @@ import java.util.Collection; import java.util.List; import java.util.function.Consumer; +import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -58,7 +59,17 @@ public CompletableResultCode export(Collection metrics) { logger.debug("exporter is not active"); return CompletableResultCode.ofSuccess(); } - for (MetricData metricData : metrics) { + List backCompatMetrics = metrics.stream() + .map(metricData -> { + if (metricData.getInstrumentationScopeInfo().getName() + .equals("io.opentelemetry.micrometer-1.5")) { + return new BackCompatMetricData(metricData); + } + return metricData; + }) + .collect(Collectors.toList()); + + for (MetricData metricData : backCompatMetrics) { if (MetricFilter.shouldSkip(metricData.getName(), metricFilters)) { continue; } diff --git a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/BackCompatMetricData.java b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/BackCompatMetricData.java new file mode 100644 index 00000000000..50028bf1dc2 --- /dev/null +++ b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/BackCompatMetricData.java @@ -0,0 +1,74 @@ +package com.microsoft.applicationinsights.agent.internal.exporter; + +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.metrics.data.Data; +import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.metrics.data.MetricDataType; +import io.opentelemetry.sdk.resources.Resource; +import java.util.Arrays; +import java.util.Objects; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +class BackCompatMetricData implements MetricData { + + private static final Pattern NAME_AND_TAG_KEY_PATTERN = Pattern.compile("[^a-zA-Z0-9\\-]"); + + private final MetricData delegate; + private final String name; + + BackCompatMetricData(MetricData delegate) { + this.delegate = delegate; + this.name = backCompatName(delegate.getName()); + } + + private static String backCompatName(String name) { + return NAME_AND_TAG_KEY_PATTERN.matcher(toSnakeCase(name)).replaceAll("_"); + } + + private static String toSnakeCase(String value) { + // same logic as micrometer's NamingConvention.snakeCase + return Arrays.stream(value.split("\\.")).filter(Objects::nonNull) + .collect(Collectors.joining("_")); + } + + @Override + public Resource getResource() { + return delegate.getResource(); + } + + @Override + public InstrumentationScopeInfo getInstrumentationScopeInfo() { + return delegate.getInstrumentationScopeInfo(); + } + + @Override + public String getName() { + return name; + } + + @Override + public String getDescription() { + return delegate.getDescription(); + } + + @Override + public String getUnit() { + return delegate.getUnit(); + } + + @Override + public MetricDataType getType() { + return delegate.getType(); + } + + @Override + public Data getData() { + return delegate.getData(); + } + + @Override + public boolean isEmpty() { + return delegate.isEmpty(); + } +} diff --git a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/AiConfigCustomizer.java b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/AiConfigCustomizer.java index a9c3bd191e1..64ef0f4e953 100644 --- a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/AiConfigCustomizer.java +++ b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/AiConfigCustomizer.java @@ -189,11 +189,12 @@ private static void enableInstrumentations( properties.put("otel.instrumentation.undertow.enabled", "true"); if (config.instrumentation.micrometer.enabled) { - // TODO (heya) replace with below when updating to upstream micrometer + // ai micrometer instrumentation is still used for micrometer versions prior to 1.5 properties.put("otel.instrumentation.ai-micrometer.enabled", "true"); properties.put("otel.instrumentation.ai-actuator-metrics.enabled", "true"); - // properties.put("otel.instrumentation.micrometer.enabled", "true"); - // properties.put("otel.instrumentation.spring-boot-actuator-autoconfigure.enabled", "true"); + // upstream micrometer instrumentation is used for micrometer versions 1.5+ + properties.put("otel.instrumentation.micrometer.enabled", "true"); + properties.put("otel.instrumentation.spring-boot-actuator-autoconfigure.enabled", "true"); } String namespace = config.instrumentation.micrometer.namespace; if (namespace != null) { diff --git a/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/MicrometerInstrumentationModule.java b/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/MicrometerInstrumentationModule.java index 69410f2425e..0276400f85a 100644 --- a/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/MicrometerInstrumentationModule.java +++ b/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/MicrometerInstrumentationModule.java @@ -3,11 +3,15 @@ package io.opentelemetry.javaagent.instrumentation.micrometer.ai; +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; +import static net.bytebuddy.matcher.ElementMatchers.not; + import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import java.util.Arrays; import java.util.List; +import net.bytebuddy.matcher.ElementMatcher; @AutoService(InstrumentationModule.class) public class MicrometerInstrumentationModule extends InstrumentationModule { @@ -17,6 +21,12 @@ public MicrometerInstrumentationModule() { super("ai-micrometer"); } + @Override + public ElementMatcher.Junction classLoaderMatcher() { + // added in 1.5 + return not(hasClassesNamed("io.micrometer.core.instrument.config.validate.Validated")); + } + @Override public List typeInstrumentations() { return Arrays.asList(new MetricsInstrumentation(), new CompositeMeterRegistryInstrumentation()); diff --git a/settings.gradle.kts b/settings.gradle.kts index c3e8d0ed4df..ca6b0fc91db 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -120,6 +120,7 @@ hideFromDependabot(":smoke-tests:apps:Log4j1") hideFromDependabot(":smoke-tests:apps:Log4j2") hideFromDependabot(":smoke-tests:apps:Logback") hideFromDependabot(":smoke-tests:apps:Micrometer") +hideFromDependabot(":smoke-tests:apps:MicrometerOldVersion") hideFromDependabot(":smoke-tests:apps:MongoDB") hideFromDependabot(":smoke-tests:apps:NonDaemonThreads") hideFromDependabot(":smoke-tests:apps:OpenTelemetryApiSupport") diff --git a/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java b/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java index ca38415c0db..e3aeff1cae5 100644 --- a/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java +++ b/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java @@ -47,8 +47,8 @@ void doMostBasicTest() throws Exception { assertThat(point.getCount()).isEqualTo(1); assertThat(point.getName()).isEqualTo("http_server_requests"); - // this isn't desired, but see https://github.com/micrometer-metrics/micrometer/issues/457 - assertThat(point.getMin()).isNull(); + // actuator test is running with micrometer 1.5+ and so is using upstream micrometer instrumentation + assertThat(point.getMin()).isNotNull(); assertThat(point.getMax()).isNotNull(); assertThat(point.getStdDev()).isNull(); diff --git a/smoke-tests/apps/Micrometer/build.gradle.kts b/smoke-tests/apps/Micrometer/build.gradle.kts index edfe5ad3e3d..b5555fdc071 100644 --- a/smoke-tests/apps/Micrometer/build.gradle.kts +++ b/smoke-tests/apps/Micrometer/build.gradle.kts @@ -4,5 +4,5 @@ plugins { dependencies { implementation("org.springframework.boot:spring-boot-starter-web:2.5.12") - implementation("io.micrometer:micrometer-core:1.4.1") + implementation("io.micrometer:micrometer-core:1.5.0") } diff --git a/smoke-tests/apps/MicrometerOldVersion/build.gradle.kts b/smoke-tests/apps/MicrometerOldVersion/build.gradle.kts new file mode 100644 index 00000000000..edfe5ad3e3d --- /dev/null +++ b/smoke-tests/apps/MicrometerOldVersion/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + id("ai.smoke-test-jar") +} + +dependencies { + implementation("org.springframework.boot:spring-boot-starter-web:2.5.12") + implementation("io.micrometer:micrometer-core:1.4.1") +} diff --git a/smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java b/smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java new file mode 100644 index 00000000000..cee97c97990 --- /dev/null +++ b/smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.microsoft.applicationinsights.smoketestapp; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringBootApp { + + public static void main(String[] args) { + + SpringApplication.run(SpringBootApp.class, args); + } +} diff --git a/smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java b/smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java new file mode 100644 index 00000000000..9c4963568bf --- /dev/null +++ b/smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.microsoft.applicationinsights.smoketestapp; + +import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.Metrics; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class TestController { + + private final Counter counter = Metrics.counter("test.counter", "tag1", "value1"); + private final Counter excludedCounter = Metrics.counter("test.counter.exclude.me"); + private final Counter anotherExcludedCounter = Metrics.counter("exclude.me.test.counter"); + + @GetMapping("/") + public String root() { + return "OK"; + } + + @GetMapping("/test") + public String test() { + excludedCounter.increment(); + anotherExcludedCounter.increment(); + counter.increment(); + return "OK!"; + } +} diff --git a/smoke-tests/apps/MicrometerOldVersion/src/main/resources/application.properties b/smoke-tests/apps/MicrometerOldVersion/src/main/resources/application.properties new file mode 100644 index 00000000000..a33fa659021 --- /dev/null +++ b/smoke-tests/apps/MicrometerOldVersion/src/main/resources/application.properties @@ -0,0 +1 @@ +management.metrics.export.azuremonitor.instrumentation-key=00000000-0000-0000-0000-000000000000 diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerDisabledTest.java b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerDisabledTest.java new file mode 100644 index 00000000000..7660bc3a226 --- /dev/null +++ b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerDisabledTest.java @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.microsoft.applicationinsights.smoketest; + +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_8; +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +@Environment(JAVA_8) +@UseAgent("disabled_applicationinsights.json") +class MicrometerDisabledTest { + + @RegisterExtension static final SmokeTestExtension testing = SmokeTestExtension.create(); + + @Test + @TargetUri("/test") + void doMostBasicTest() throws Exception { + Telemetry telemetry = testing.getTelemetry(0); + + assertThat(telemetry.rd.getName()).isEqualTo("GET /test"); + assertThat(telemetry.rd.getSuccess()).isTrue(); + + // sleep a bit and make sure no micrometer metrics are reported + Thread.sleep(10000); + assertThat(testing.mockedIngestion.getItemsEnvelopeDataType("MetricData")) + .noneMatch(MicrometerTest::isMicrometerMetricWithValueOne); + } +} diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerNamespaceTest.java b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerNamespaceTest.java new file mode 100644 index 00000000000..f2a976f8f9c --- /dev/null +++ b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerNamespaceTest.java @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.microsoft.applicationinsights.smoketest; + +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_8; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.data.MapEntry.entry; + +import com.microsoft.applicationinsights.smoketest.schemav2.Data; +import com.microsoft.applicationinsights.smoketest.schemav2.DataPoint; +import com.microsoft.applicationinsights.smoketest.schemav2.Envelope; +import com.microsoft.applicationinsights.smoketest.schemav2.MetricData; +import java.util.List; +import java.util.concurrent.TimeUnit; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +@Environment(JAVA_8) +@UseAgent("namespace_applicationinsights.json") +class MicrometerNamespaceTest { + + @RegisterExtension static final SmokeTestExtension testing = SmokeTestExtension.create(); + + @Test + @TargetUri("/test") + void doMostBasicTest() throws Exception { + Telemetry telemetry = testing.getTelemetry(0); + + assertThat(telemetry.rd.getName()).isEqualTo("GET /test"); + assertThat(telemetry.rd.getUrl()).matches("http://localhost:[0-9]+/test"); + assertThat(telemetry.rd.getResponseCode()).isEqualTo("200"); + assertThat(telemetry.rd.getSuccess()).isTrue(); + assertThat(telemetry.rd.getProperties()) + .containsExactly(entry("_MS.ProcessedByMetricExtractors", "True")); + assertThat(telemetry.rd.getMeasurements()).isEmpty(); + + List metricItems = + testing.mockedIngestion.waitForItems( + MicrometerTest::isMicrometerMetricWithValueOne, 1, 10, TimeUnit.SECONDS); + + MetricData data = (MetricData) ((Data) metricItems.get(0).getData()).getBaseData(); + List points = data.getMetrics(); + assertThat(points).hasSize(1); + + DataPoint point = points.get(0); + assertThat(point.getMetricNamespace()).isEqualTo("testNamespace"); + } +} diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java new file mode 100644 index 00000000000..bdef57b10bd --- /dev/null +++ b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.microsoft.applicationinsights.smoketest; + +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_11; +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_11_OPENJ9; +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_17; +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_17_OPENJ9; +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_18_OPENJ9; +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_19; +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_20; +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_8; +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_8_OPENJ9; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.data.MapEntry.entry; + +import com.microsoft.applicationinsights.smoketest.schemav2.Data; +import com.microsoft.applicationinsights.smoketest.schemav2.DataPoint; +import com.microsoft.applicationinsights.smoketest.schemav2.Envelope; +import com.microsoft.applicationinsights.smoketest.schemav2.MetricData; +import java.util.List; +import java.util.concurrent.TimeUnit; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +@UseAgent +abstract class MicrometerTest { + + @RegisterExtension static final SmokeTestExtension testing = SmokeTestExtension.create(); + + @Test + @TargetUri("/test") + void doMostBasicTest() throws Exception { + Telemetry telemetry = testing.getTelemetry(0); + + assertThat(telemetry.rd.getName()).isEqualTo("GET /test"); + assertThat(telemetry.rd.getUrl()).matches("http://localhost:[0-9]+/test"); + assertThat(telemetry.rd.getResponseCode()).isEqualTo("200"); + assertThat(telemetry.rd.getSuccess()).isTrue(); + assertThat(telemetry.rd.getSource()).isNull(); + assertThat(telemetry.rd.getProperties()) + .containsExactly(entry("_MS.ProcessedByMetricExtractors", "True")); + assertThat(telemetry.rd.getMeasurements()).isEmpty(); + + List metricItems = + testing.mockedIngestion.waitForItems( + MicrometerTest::isMicrometerMetricWithValueOne, 1, 10, TimeUnit.SECONDS); + + MetricData data = (MetricData) ((Data) metricItems.get(0).getData()).getBaseData(); + List points = data.getMetrics(); + assertThat(points).hasSize(1); + + DataPoint point = points.get(0); + + assertThat(point.getValue()).isEqualTo(1); // (this was verified above in Predicate also) + assertThat(point.getName()).isEqualTo("test_counter"); + assertThat(point.getCount()).isNull(); + assertThat(point.getMin()).isNull(); + assertThat(point.getMax()).isNull(); + assertThat(point.getStdDev()).isNull(); + assertThat(point.getMetricNamespace()).isNull(); + assertThat(data.getProperties()).hasSize(1); + assertThat(data.getProperties()).containsEntry("tag1", "value1"); + } + + static boolean isMicrometerMetricWithValueOne(Envelope input) { + if (!input.getData().getBaseType().equals("MetricData")) { + return false; + } + MetricData data = (MetricData) ((Data) input.getData()).getBaseData(); + for (DataPoint point : data.getMetrics()) { + if (point.getName().contains("test_counter") && point.getValue() == 1) { + return true; + } + } + return false; + } + + @Environment(JAVA_8) + static class Java8Test extends MicrometerTest {} + + @Environment(JAVA_8_OPENJ9) + static class Java8OpenJ9Test extends MicrometerTest {} + + @Environment(JAVA_11) + static class Java11Test extends MicrometerTest {} + + @Environment(JAVA_11_OPENJ9) + static class Java11OpenJ9Test extends MicrometerTest {} + + @Environment(JAVA_17) + static class Java17Test extends MicrometerTest {} + + @Environment(JAVA_17_OPENJ9) + static class Java17OpenJ9Test extends MicrometerTest {} + + @Environment(JAVA_19) + static class Java18Test extends MicrometerTest {} + + @Environment(JAVA_18_OPENJ9) + static class Java18OpenJ9Test extends MicrometerTest {} + + @Environment(JAVA_20) + static class Java19Test extends MicrometerTest {} +} diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/applicationinsights.json b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/applicationinsights.json new file mode 100644 index 00000000000..d1c5f01d8e1 --- /dev/null +++ b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/applicationinsights.json @@ -0,0 +1,32 @@ +{ + "role": { + "name": "testrolename", + "instance": "testroleinstance" + }, + "sampling": { + "percentage": 100 + }, + "metricIntervalSeconds": 5, + "preview": { + "processors": [ + { + "type": "metric-filter", + "exclude": { + "matchType": "strict", + "metricNames": [ + "test_counter_exclude_me" + ] + } + }, + { + "type": "metric-filter", + "exclude": { + "matchType": "regexp", + "metricNames": [ + "exclude_me_.*" + ] + } + } + ] + } +} diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/disabled_applicationinsights.json b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/disabled_applicationinsights.json new file mode 100644 index 00000000000..7fef75f9532 --- /dev/null +++ b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/disabled_applicationinsights.json @@ -0,0 +1,15 @@ +{ + "role": { + "name": "testrolename", + "instance": "testroleinstance" + }, + "sampling": { + "percentage": 100 + }, + "instrumentation": { + "micrometer": { + "enabled": false + } + }, + "metricIntervalSeconds": 5 +} diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/logback-test.xml b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/logback-test.xml new file mode 100644 index 00000000000..0cbbecd57ce --- /dev/null +++ b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/logback-test.xml @@ -0,0 +1,11 @@ + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n + + + + + + diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/namespace_applicationinsights.json b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/namespace_applicationinsights.json new file mode 100644 index 00000000000..b2357b641e2 --- /dev/null +++ b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/namespace_applicationinsights.json @@ -0,0 +1,15 @@ +{ + "role": { + "name": "testrolename", + "instance": "testroleinstance" + }, + "sampling": { + "percentage": 100 + }, + "instrumentation": { + "micrometer": { + "namespace": "testNamespace" + } + }, + "metricIntervalSeconds": 5 +} From 7f277c48a579c68bf89229196654f43a2735254b Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 9 Aug 2023 09:00:59 -0700 Subject: [PATCH 2/9] Spotless --- .../exporter/AgentMetricExporter.java | 22 +++++++++++-------- .../exporter/BackCompatMetricData.java | 6 ++++- .../smoketest/ActuatorMetricsTest.java | 3 ++- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java index 3a2b02f8b38..3c240a35d6b 100644 --- a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java +++ b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java @@ -59,15 +59,19 @@ public CompletableResultCode export(Collection metrics) { logger.debug("exporter is not active"); return CompletableResultCode.ofSuccess(); } - List backCompatMetrics = metrics.stream() - .map(metricData -> { - if (metricData.getInstrumentationScopeInfo().getName() - .equals("io.opentelemetry.micrometer-1.5")) { - return new BackCompatMetricData(metricData); - } - return metricData; - }) - .collect(Collectors.toList()); + List backCompatMetrics = + metrics.stream() + .map( + metricData -> { + if (metricData + .getInstrumentationScopeInfo() + .getName() + .equals("io.opentelemetry.micrometer-1.5")) { + return new BackCompatMetricData(metricData); + } + return metricData; + }) + .collect(Collectors.toList()); for (MetricData metricData : backCompatMetrics) { if (MetricFilter.shouldSkip(metricData.getName(), metricFilters)) { diff --git a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/BackCompatMetricData.java b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/BackCompatMetricData.java index 50028bf1dc2..eeba10af0e6 100644 --- a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/BackCompatMetricData.java +++ b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/BackCompatMetricData.java @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + package com.microsoft.applicationinsights.agent.internal.exporter; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; @@ -28,7 +31,8 @@ private static String backCompatName(String name) { private static String toSnakeCase(String value) { // same logic as micrometer's NamingConvention.snakeCase - return Arrays.stream(value.split("\\.")).filter(Objects::nonNull) + return Arrays.stream(value.split("\\.")) + .filter(Objects::nonNull) .collect(Collectors.joining("_")); } diff --git a/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java b/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java index e3aeff1cae5..9c35bd9459f 100644 --- a/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java +++ b/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java @@ -47,7 +47,8 @@ void doMostBasicTest() throws Exception { assertThat(point.getCount()).isEqualTo(1); assertThat(point.getName()).isEqualTo("http_server_requests"); - // actuator test is running with micrometer 1.5+ and so is using upstream micrometer instrumentation + // actuator test is running with micrometer 1.5+ and so is using upstream micrometer + // instrumentation assertThat(point.getMin()).isNotNull(); assertThat(point.getMax()).isNotNull(); From 7192e69ceb30deffa177c21df1449018b99bd3f5 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 9 Aug 2023 10:16:13 -0700 Subject: [PATCH 3/9] Handle micrometer metric namespace --- .../exporter/AgentMetricExporter.java | 26 +++++++++++++++++-- .../agent/internal/init/SecondEntryPoint.java | 5 +++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java index 3c240a35d6b..5233005da07 100644 --- a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java +++ b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentMetricExporter.java @@ -7,6 +7,8 @@ import com.azure.monitor.opentelemetry.exporter.implementation.MetricDataMapper; import com.azure.monitor.opentelemetry.exporter.implementation.logging.OperationLogger; +import com.azure.monitor.opentelemetry.exporter.implementation.models.MetricsData; +import com.azure.monitor.opentelemetry.exporter.implementation.models.MonitorDomain; import com.azure.monitor.opentelemetry.exporter.implementation.models.TelemetryItem; import com.azure.monitor.opentelemetry.exporter.implementation.utils.Strings; import com.microsoft.applicationinsights.agent.internal.telemetry.BatchItemProcessor; @@ -23,6 +25,7 @@ import java.util.List; import java.util.function.Consumer; import java.util.stream.Collectors; +import javax.annotation.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,14 +38,17 @@ public class AgentMetricExporter implements MetricExporter { private final List metricFilters; private final MetricDataMapper mapper; + @Nullable private final String micrometerMetricNamespace; private final Consumer telemetryItemConsumer; public AgentMetricExporter( List metricFilters, MetricDataMapper mapper, - BatchItemProcessor batchItemProcessor) { + BatchItemProcessor batchItemProcessor, + @Nullable String micrometerMetricNamespace) { this.metricFilters = metricFilters; this.mapper = mapper; + this.micrometerMetricNamespace = micrometerMetricNamespace; this.telemetryItemConsumer = telemetryItem -> { TelemetryObservers.INSTANCE @@ -79,7 +85,23 @@ public CompletableResultCode export(Collection metrics) { } logger.debug("exporting metric: {}", metricData); try { - mapper.map(metricData, telemetryItemConsumer); + mapper.map( + metricData, + telemetryItem -> { + if (micrometerMetricNamespace != null + && metricData + .getInstrumentationScopeInfo() + .getName() + .equals("io.opentelemetry.micrometer-1.5")) { + MonitorDomain baseData = telemetryItem.getData().getBaseData(); + if (baseData instanceof MetricsData) { + ((MetricsData) baseData) + .getMetrics() + .forEach(md -> md.setNamespace(micrometerMetricNamespace)); + } + } + telemetryItemConsumer.accept(telemetryItem); + }); exportingMetricLogger.recordSuccess(); } catch (Throwable t) { exportingMetricLogger.recordFailure(t.getMessage(), t, EXPORTER_MAPPING_ERROR); diff --git a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/SecondEntryPoint.java b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/SecondEntryPoint.java index dc2de18e91a..a8f23c49f3b 100644 --- a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/SecondEntryPoint.java +++ b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/SecondEntryPoint.java @@ -744,7 +744,10 @@ private static SdkMeterProviderBuilder configureMetrics( PeriodicMetricReaderBuilder readerBuilder = PeriodicMetricReader.builder( new AgentMetricExporter( - metricFilters, mapper, telemetryClient.getMetricsBatchItemProcessor())); + metricFilters, + mapper, + telemetryClient.getMetricsBatchItemProcessor(), + configuration.instrumentation.micrometer.namespace)); int intervalMillis = Integer.getInteger( "applicationinsights.testing.metric-reader-interval-millis", From cc800f7bc80a9dfba57e78447adce95a4794a4b2 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 9 Aug 2023 11:24:12 -0700 Subject: [PATCH 4/9] fix --- .../micrometer/ai/ActuatorInstrumentationModule.java | 5 ++++- .../applicationinsights/smoketest/ActuatorMetricsTest.java | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/ActuatorInstrumentationModule.java b/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/ActuatorInstrumentationModule.java index 5a3bad3491e..ceaf38f2632 100644 --- a/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/ActuatorInstrumentationModule.java +++ b/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/ActuatorInstrumentationModule.java @@ -5,6 +5,7 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static java.util.Collections.singletonList; +import static net.bytebuddy.matcher.ElementMatchers.not; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.HelperResourceBuilder; @@ -24,7 +25,9 @@ public ActuatorInstrumentationModule() { @Override public ElementMatcher.Junction classLoaderMatcher() { - return hasClassesNamed("io.micrometer.core.instrument.Metrics"); + return hasClassesNamed("io.micrometer.core.instrument.Metrics").and( + // added in micrometer 1.5 + not(hasClassesNamed("io.micrometer.core.instrument.config.validate.Validated"))); } @Override diff --git a/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java b/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java index 9c35bd9459f..dae2a6d0303 100644 --- a/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java +++ b/smoke-tests/apps/ActuatorMetrics/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/ActuatorMetricsTest.java @@ -47,8 +47,7 @@ void doMostBasicTest() throws Exception { assertThat(point.getCount()).isEqualTo(1); assertThat(point.getName()).isEqualTo("http_server_requests"); - // actuator test is running with micrometer 1.5+ and so is using upstream micrometer - // instrumentation + // running with micrometer 1.5+ and so using upstream micrometer instrumentation assertThat(point.getMin()).isNotNull(); assertThat(point.getMax()).isNotNull(); From 6a1251ddf71f999d60e6aa957cc9c655ae7b56e0 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 9 Aug 2023 11:35:32 -0700 Subject: [PATCH 5/9] Spotless --- .../micrometer/ai/ActuatorInstrumentationModule.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/ActuatorInstrumentationModule.java b/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/ActuatorInstrumentationModule.java index ceaf38f2632..53a5fa4117a 100644 --- a/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/ActuatorInstrumentationModule.java +++ b/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/ActuatorInstrumentationModule.java @@ -25,9 +25,10 @@ public ActuatorInstrumentationModule() { @Override public ElementMatcher.Junction classLoaderMatcher() { - return hasClassesNamed("io.micrometer.core.instrument.Metrics").and( - // added in micrometer 1.5 - not(hasClassesNamed("io.micrometer.core.instrument.config.validate.Validated"))); + return hasClassesNamed("io.micrometer.core.instrument.Metrics") + .and( + // added in micrometer 1.5 + not(hasClassesNamed("io.micrometer.core.instrument.config.validate.Validated"))); } @Override From 963ae41097324db236c0e6bb7fe22e5bfcdd81ac Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Mon, 11 Sep 2023 12:25:56 -0700 Subject: [PATCH 6/9] comment --- .../agent/internal/init/AiConfigCustomizer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/AiConfigCustomizer.java b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/AiConfigCustomizer.java index 64ef0f4e953..41e5edb882e 100644 --- a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/AiConfigCustomizer.java +++ b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/AiConfigCustomizer.java @@ -189,7 +189,8 @@ private static void enableInstrumentations( properties.put("otel.instrumentation.undertow.enabled", "true"); if (config.instrumentation.micrometer.enabled) { - // ai micrometer instrumentation is still used for micrometer versions prior to 1.5 + // upstream micrometer instrumentation only supports micrometer 1.5 and later + // so ai micrometer instrumentation is (still) used for micrometer versions prior to 1.5 properties.put("otel.instrumentation.ai-micrometer.enabled", "true"); properties.put("otel.instrumentation.ai-actuator-metrics.enabled", "true"); // upstream micrometer instrumentation is used for micrometer versions 1.5+ From d3475a49b41e08ff3d2d01e297cfe0deffac6538 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 17 Sep 2023 11:10:42 -0700 Subject: [PATCH 7/9] fix --- .../applicationinsights/smoketest/MicrometerTest.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java index bdef57b10bd..1df9c6ebbd0 100644 --- a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java +++ b/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java @@ -7,9 +7,8 @@ import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_11_OPENJ9; import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_17; import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_17_OPENJ9; -import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_18_OPENJ9; -import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_19; import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_20; +import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_20_OPENJ9; import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_8; import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.JAVA_8_OPENJ9; import static org.assertj.core.api.Assertions.assertThat; @@ -95,10 +94,10 @@ static class Java17Test extends MicrometerTest {} @Environment(JAVA_17_OPENJ9) static class Java17OpenJ9Test extends MicrometerTest {} - @Environment(JAVA_19) + @Environment(JAVA_20) static class Java18Test extends MicrometerTest {} - @Environment(JAVA_18_OPENJ9) + @Environment(JAVA_20_OPENJ9) static class Java18OpenJ9Test extends MicrometerTest {} @Environment(JAVA_20) From df1bb680abbc8b2864a81bba7d71d63d9840da40 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Tue, 19 Sep 2023 18:23:40 -0700 Subject: [PATCH 8/9] rename --- settings.gradle.kts | 2 +- .../build.gradle.kts | 0 .../applicationinsights/smoketestapp/SpringBootApp.java | 0 .../applicationinsights/smoketestapp/TestController.java | 0 .../src/main/resources/application.properties | 0 .../applicationinsights/smoketest/MicrometerDisabledTest.java | 0 .../applicationinsights/smoketest/MicrometerNamespaceTest.java | 0 .../microsoft/applicationinsights/smoketest/MicrometerTest.java | 0 .../src/smokeTest/resources/applicationinsights.json | 0 .../src/smokeTest/resources/disabled_applicationinsights.json | 0 .../src/smokeTest/resources/logback-test.xml | 0 .../src/smokeTest/resources/namespace_applicationinsights.json | 0 12 files changed, 1 insertion(+), 1 deletion(-) rename smoke-tests/apps/{MicrometerOldVersion => MicrometerPriorTo1_5}/build.gradle.kts (100%) rename smoke-tests/apps/{MicrometerOldVersion => MicrometerPriorTo1_5}/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java (100%) rename smoke-tests/apps/{MicrometerOldVersion => MicrometerPriorTo1_5}/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java (100%) rename smoke-tests/apps/{MicrometerOldVersion => MicrometerPriorTo1_5}/src/main/resources/application.properties (100%) rename smoke-tests/apps/{MicrometerOldVersion => MicrometerPriorTo1_5}/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerDisabledTest.java (100%) rename smoke-tests/apps/{MicrometerOldVersion => MicrometerPriorTo1_5}/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerNamespaceTest.java (100%) rename smoke-tests/apps/{MicrometerOldVersion => MicrometerPriorTo1_5}/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java (100%) rename smoke-tests/apps/{MicrometerOldVersion => MicrometerPriorTo1_5}/src/smokeTest/resources/applicationinsights.json (100%) rename smoke-tests/apps/{MicrometerOldVersion => MicrometerPriorTo1_5}/src/smokeTest/resources/disabled_applicationinsights.json (100%) rename smoke-tests/apps/{MicrometerOldVersion => MicrometerPriorTo1_5}/src/smokeTest/resources/logback-test.xml (100%) rename smoke-tests/apps/{MicrometerOldVersion => MicrometerPriorTo1_5}/src/smokeTest/resources/namespace_applicationinsights.json (100%) diff --git a/settings.gradle.kts b/settings.gradle.kts index ca6b0fc91db..aa10e1dce79 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -120,7 +120,7 @@ hideFromDependabot(":smoke-tests:apps:Log4j1") hideFromDependabot(":smoke-tests:apps:Log4j2") hideFromDependabot(":smoke-tests:apps:Logback") hideFromDependabot(":smoke-tests:apps:Micrometer") -hideFromDependabot(":smoke-tests:apps:MicrometerOldVersion") +hideFromDependabot(":smoke-tests:apps:MicrometerPriorTo1_5") hideFromDependabot(":smoke-tests:apps:MongoDB") hideFromDependabot(":smoke-tests:apps:NonDaemonThreads") hideFromDependabot(":smoke-tests:apps:OpenTelemetryApiSupport") diff --git a/smoke-tests/apps/MicrometerOldVersion/build.gradle.kts b/smoke-tests/apps/MicrometerPriorTo1_5/build.gradle.kts similarity index 100% rename from smoke-tests/apps/MicrometerOldVersion/build.gradle.kts rename to smoke-tests/apps/MicrometerPriorTo1_5/build.gradle.kts diff --git a/smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java b/smoke-tests/apps/MicrometerPriorTo1_5/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java similarity index 100% rename from smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java rename to smoke-tests/apps/MicrometerPriorTo1_5/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java diff --git a/smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java b/smoke-tests/apps/MicrometerPriorTo1_5/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java similarity index 100% rename from smoke-tests/apps/MicrometerOldVersion/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java rename to smoke-tests/apps/MicrometerPriorTo1_5/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java diff --git a/smoke-tests/apps/MicrometerOldVersion/src/main/resources/application.properties b/smoke-tests/apps/MicrometerPriorTo1_5/src/main/resources/application.properties similarity index 100% rename from smoke-tests/apps/MicrometerOldVersion/src/main/resources/application.properties rename to smoke-tests/apps/MicrometerPriorTo1_5/src/main/resources/application.properties diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerDisabledTest.java b/smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerDisabledTest.java similarity index 100% rename from smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerDisabledTest.java rename to smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerDisabledTest.java diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerNamespaceTest.java b/smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerNamespaceTest.java similarity index 100% rename from smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerNamespaceTest.java rename to smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerNamespaceTest.java diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java b/smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java similarity index 100% rename from smoke-tests/apps/MicrometerOldVersion/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java rename to smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/MicrometerTest.java diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/applicationinsights.json b/smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/resources/applicationinsights.json similarity index 100% rename from smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/applicationinsights.json rename to smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/resources/applicationinsights.json diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/disabled_applicationinsights.json b/smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/resources/disabled_applicationinsights.json similarity index 100% rename from smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/disabled_applicationinsights.json rename to smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/resources/disabled_applicationinsights.json diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/logback-test.xml b/smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/resources/logback-test.xml similarity index 100% rename from smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/logback-test.xml rename to smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/resources/logback-test.xml diff --git a/smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/namespace_applicationinsights.json b/smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/resources/namespace_applicationinsights.json similarity index 100% rename from smoke-tests/apps/MicrometerOldVersion/src/smokeTest/resources/namespace_applicationinsights.json rename to smoke-tests/apps/MicrometerPriorTo1_5/src/smokeTest/resources/namespace_applicationinsights.json From 7538b192a3d1b7f0846716cd6d29d1aa7716f455 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 20 Sep 2023 10:51:51 -0700 Subject: [PATCH 9/9] comment --- .../micrometer/ai/MicrometerInstrumentationModule.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/MicrometerInstrumentationModule.java b/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/MicrometerInstrumentationModule.java index 0276400f85a..5f07b47e1d2 100644 --- a/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/MicrometerInstrumentationModule.java +++ b/agent/instrumentation/micrometer-1.0/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/ai/MicrometerInstrumentationModule.java @@ -16,7 +16,8 @@ @AutoService(InstrumentationModule.class) public class MicrometerInstrumentationModule extends InstrumentationModule { - // this instrumentation name is important since it is used to disable micrometer instrumentation + // this instrumentation name is important since it is used when disabling micrometer + // instrumentation public MicrometerInstrumentationModule() { super("ai-micrometer"); }