Skip to content

Commit d2ac528

Browse files
[Azure Monitor Exporter] Add custom resource support (#53432)
* Add custom resource. * changelog update
1 parent 845f0e4 commit d2ac528

File tree

4 files changed

+21
-4
lines changed

4 files changed

+21
-4
lines changed

sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
### Features Added
66

7+
* Enabled resource metrics export by default.
8+
([#53432](https://github.com/Azure/azure-sdk-for-net/pull/53432))
9+
710
### Breaking Changes
811

912
### Bugs Fixed

sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Internals/ResourceExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ internal static class ResourceExtensions
138138
try
139139
{
140140
var exportResource = platform.GetEnvironmentVariable(EnvironmentVariableConstants.EXPORT_RESOURCE_METRIC);
141-
if (exportResource != null && exportResource.Equals("true", StringComparison.OrdinalIgnoreCase))
141+
if (exportResource == null || exportResource.Equals("true", StringComparison.OrdinalIgnoreCase))
142142
{
143143
shouldReportMetricTelemetry = true;
144144
}

sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/ResourceExtensionsTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public void DefaultResource(string? instrumentationKey, string envVarValue)
4949

5050
Assert.StartsWith("unknown_service", azMonResource?.RoleName);
5151
Assert.Equal(Dns.GetHostName(), azMonResource?.RoleInstance);
52-
if (envVarValue == "true")
52+
if (envVarValue == "true" || envVarValue == null)
5353
{
5454
Assert.Equal(instrumentationKey != null, azMonResource?.MonitorBaseData != null);
5555
}
@@ -338,7 +338,7 @@ public void MetricTelemetryIsAddedToResourceBasedOnEnvVar(string envVarValue)
338338
var resource = ResourceBuilder.CreateDefault().Build();
339339
var azMonResource = resource.CreateAzureMonitorResource(platform: GetMockPlatform(enableResourceMetric: envVarValue), instrumentationKey: InstrumentationKey);
340340

341-
if (envVarValue == "true")
341+
if (envVarValue == "true" || envVarValue == null)
342342
{
343343
Assert.NotNull(azMonResource?.MonitorBaseData);
344344
}

sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/StandardMetricTests.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,21 @@ public void ValidatePerfCounterMetrics()
507507
tracerProvider?.ForceFlush();
508508
WaitForActivityExport(traceTelemetryItems);
509509

510-
standardMetricCustomProcessor._meterProvider?.ForceFlush();
510+
// Wait for performance counter collection cycle to complete
511+
// Performance counters are collected periodically, so we need to wait for at least one collection cycle
512+
var perfCountersCollected = SpinWait.SpinUntil(
513+
condition: () =>
514+
{
515+
standardMetricCustomProcessor._meterProvider?.ForceFlush();
516+
Thread.Sleep(100);
517+
var requestRate = metricTelemetryItems
518+
.Select(ti => (MetricsData)ti.Data.BaseData)
519+
.FirstOrDefault(md => md.Metrics.Count > 0 && md.Metrics[0].Name == PerfCounterConstants.RequestRateMetricIdValue);
520+
return requestRate != null && requestRate.Metrics[0].Value >= 1;
521+
},
522+
timeout: TimeSpan.FromSeconds(5));
523+
524+
Assert.True(perfCountersCollected, "Performance counter metrics were not collected within the timeout period.");
511525

512526
// We expect multiple metric telemetry items now (at least one per perf counter plus request duration histogram).
513527
Assert.True(metricTelemetryItems.Count >= 2, "Expected multiple metric telemetry items including perf counters.");

0 commit comments

Comments
 (0)