diff --git a/sdk/monitor/azure-monitor-opentelemetry-autoconfigure/src/main/java/com/azure/monitor/opentelemetry/autoconfigure/implementation/utils/VersionGenerator.java b/sdk/monitor/azure-monitor-opentelemetry-autoconfigure/src/main/java/com/azure/monitor/opentelemetry/autoconfigure/implementation/utils/VersionGenerator.java index 049fea0f0d1c..ab4fe81ff2ac 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-autoconfigure/src/main/java/com/azure/monitor/opentelemetry/autoconfigure/implementation/utils/VersionGenerator.java +++ b/sdk/monitor/azure-monitor-opentelemetry-autoconfigure/src/main/java/com/azure/monitor/opentelemetry/autoconfigure/implementation/utils/VersionGenerator.java @@ -25,8 +25,35 @@ public final class VersionGenerator { artifactName = properties.get("name"); artifactVersion = properties.get("version"); - sdkVersionString = "java" + getJavaVersion() + getJavaRuntime() + ":" + "otel" + getOpenTelemetryApiVersion() - + ":" + "ext" + artifactVersion; + sdkVersionString = getPrefix() + "java" + getJavaVersion() + getJavaRuntime() + ":" + "otel" + + getOpenTelemetryApiVersion() + ":" + "ext" + artifactVersion; + } + + private static String getPrefix() { + return getResourceProvider() + getOs() + "_"; + } + + private static String getResourceProvider() { + if ("java".equals(System.getenv("FUNCTIONS_WORKER_RUNTIME"))) { + return "f"; + } else if (!Strings.isNullOrEmpty(System.getenv("WEBSITE_SITE_NAME"))) { + return "a"; + } else if (!Strings.isNullOrEmpty(System.getenv("APPLICATIONINSIGHTS_SPRINGCLOUD_SERVICE_ID"))) { + // Spring Cloud needs to be checked before AKS since it runs on AKS + return "s"; + } else if (!Strings.isNullOrEmpty(System.getenv("AKS_ARM_NAMESPACE_ID"))) { + return "k"; + } + return "u"; + } + + private static String getOs() { + if (SystemInformation.isWindows()) { + return "w"; + } else if (SystemInformation.isLinux()) { + return "l"; + } + return "u"; } /** diff --git a/sdk/monitor/azure-monitor-opentelemetry-autoconfigure/src/test/java/com/azure/monitor/opentelemetry/autoconfigure/implementation/utils/VersionTest.java b/sdk/monitor/azure-monitor-opentelemetry-autoconfigure/src/test/java/com/azure/monitor/opentelemetry/autoconfigure/implementation/utils/VersionTest.java index 7d1b9effda77..01d79c7776af 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-autoconfigure/src/test/java/com/azure/monitor/opentelemetry/autoconfigure/implementation/utils/VersionTest.java +++ b/sdk/monitor/azure-monitor-opentelemetry-autoconfigure/src/test/java/com/azure/monitor/opentelemetry/autoconfigure/implementation/utils/VersionTest.java @@ -23,6 +23,6 @@ public void testArtifactVersion() { public void testSdkVersion() { // OpenTelemetry added version.properties files in 1.3.0 // but testing against OpenTelemetry 1.0.0, so it's unknown in this test - assertTrue(VersionGenerator.getSdkVersion().matches("java[0-9._]+:otel([0-9.]+|unknown):ext[0-9.]+.*")); + assertTrue(VersionGenerator.getSdkVersion().matches(".._java[0-9._]+:otel([0-9.]+|unknown):ext[0-9.]+.*")); } }