diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/src/main/java/com/azure/monitor/opentelemetry/exporter/implementation/pipeline/TelemetryItemExporter.java b/sdk/monitor/azure-monitor-opentelemetry-exporter/src/main/java/com/azure/monitor/opentelemetry/exporter/implementation/pipeline/TelemetryItemExporter.java index 7e4c73b9f58d5..dfd6d21eb3edc 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/src/main/java/com/azure/monitor/opentelemetry/exporter/implementation/pipeline/TelemetryItemExporter.java +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/src/main/java/com/azure/monitor/opentelemetry/exporter/implementation/pipeline/TelemetryItemExporter.java @@ -10,6 +10,7 @@ import com.azure.monitor.opentelemetry.exporter.implementation.logging.OperationLogger; import com.azure.monitor.opentelemetry.exporter.implementation.models.ContextTagKeys; import com.azure.monitor.opentelemetry.exporter.implementation.models.TelemetryItem; +import com.azure.monitor.opentelemetry.exporter.implementation.utils.AksResourceAttributes; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.io.SerializedString; @@ -137,8 +138,10 @@ CompletableResultCode internalSendByBatch(TelemetryItemBatchKey telemetryItemBat List byteBuffers; // Don't send _OTELRESOURCE_ custom metric when OTEL_RESOURCE_ATTRIBUTES env var is empty // Don't send _OTELRESOURCE_ custom metric to Statsbeat yet + // Don't Send _OTELRESOURCE_ when the app is running on other env other than AKS // insert _OTELRESOURCE_ at the beginning of each batch - if (!"Statsbeat".equals(telemetryItems.get(0).getName())) { + // TODO (heya) add a json config for customers to disable _OTELRESOURCE_ metric to the ingestion service when this feature is GA + if (!"Statsbeat".equals(telemetryItems.get(0).getName()) && AksResourceAttributes.isAks(telemetryItemBatchKey.resource)) { telemetryItems.add(0, createOtelResourceMetric(telemetryItemBatchKey)); } try { diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/src/test/java/com/azure/monitor/opentelemetry/exporter/AzureMonitorExportersEndToEndTest.java b/sdk/monitor/azure-monitor-opentelemetry-exporter/src/test/java/com/azure/monitor/opentelemetry/exporter/AzureMonitorExportersEndToEndTest.java index d622eaaa84f72..773e71f30af57 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/src/test/java/com/azure/monitor/opentelemetry/exporter/AzureMonitorExportersEndToEndTest.java +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/src/test/java/com/azure/monitor/opentelemetry/exporter/AzureMonitorExportersEndToEndTest.java @@ -55,7 +55,7 @@ public void testBuildTraceExporter() throws Exception { countDownLatch.await(10, SECONDS); assertThat(customValidationPolicy.getUrl()) .isEqualTo(new URL("https://test.in.applicationinsights.azure.com/v2.1/track")); - assertThat(customValidationPolicy.getActualTelemetryItems().size()).isEqualTo(2); + assertThat(customValidationPolicy.getActualTelemetryItems().size()).isEqualTo(1); // validate span TelemetryItem spanTelemetryItem = @@ -85,19 +85,8 @@ public void testBuildMetricExporter() throws Exception { countDownLatch.await(10, SECONDS); assertThat(customValidationPolicy.getUrl()) .isEqualTo(new URL("https://test.in.applicationinsights.azure.com/v2.1/track")); - assertThat(customValidationPolicy.getActualTelemetryItems().size()).isEqualTo(2); - - // validate metric - TelemetryItem metricTelemetryItem = - customValidationPolicy.getActualTelemetryItems().stream() - .filter(item -> item.getName().equals("Metric")) - .filter(item -> { - MetricsData metricsData = (MetricsData) item.getData().getBaseData(); - return metricsData.getMetrics().stream().noneMatch(metricDataPoint -> metricDataPoint.getName().equals("_OTELRESOURCE_")); - }) - .findFirst() - .get(); - validateMetric(metricTelemetryItem); + assertThat(customValidationPolicy.getActualTelemetryItems().size()).isEqualTo(1); + validateMetric(customValidationPolicy.getActualTelemetryItems().get(0)); } @Test @@ -116,7 +105,7 @@ public void testBuildLogExporter() throws Exception { countDownLatch.await(10, SECONDS); assertThat(customValidationPolicy.getUrl()) .isEqualTo(new URL("https://test.in.applicationinsights.azure.com/v2.1/track")); - assertThat(customValidationPolicy.getActualTelemetryItems().size()).isEqualTo(2); + assertThat(customValidationPolicy.getActualTelemetryItems().size()).isEqualTo(1); // validate log TelemetryItem logTelemetryItem = @@ -149,7 +138,7 @@ public void testBuildTraceMetricLogExportersConsecutively() throws Exception { countDownLatch.await(10, SECONDS); assertThat(customValidationPolicy.getUrl()) .isEqualTo(new URL("https://test.in.applicationinsights.azure.com/v2.1/track")); - assertThat(customValidationPolicy.getActualTelemetryItems().size()).isEqualTo(6); + assertThat(customValidationPolicy.getActualTelemetryItems().size()).isEqualTo(3); // validate telemetry TelemetryItem spanTelemetryItem = @@ -160,10 +149,6 @@ public void testBuildTraceMetricLogExportersConsecutively() throws Exception { TelemetryItem metricTelemetryItem = customValidationPolicy.getActualTelemetryItems().stream() .filter(item -> item.getName().equals("Metric")) - .filter(item -> { - MetricsData metricsData = (MetricsData) item.getData().getBaseData(); - return metricsData.getMetrics().stream().noneMatch(metricDataPoint -> metricDataPoint.getName().equals("_OTELRESOURCE_")); - }) .findFirst() .get(); TelemetryItem logTelemetryItem =