From 391b37806f676002cdb59f9e2ac94429242b4920 Mon Sep 17 00:00:00 2001 From: Rajkumar Rangaraj Date: Wed, 3 Apr 2024 19:12:47 -0700 Subject: [PATCH 1/6] [AzureMonitorExporter][AzureMonitorDistro] update otel packages to 1.8.0 --- eng/Packages.Data.props | 8 ++-- .../CHANGELOG.md | 4 ++ .../src/OpenTelemetryBuilderExtensions.cs | 44 ++++++++----------- .../CHANGELOG.md | 4 ++ .../src/LiveMetricsExtensions.cs | 43 ++++++++++-------- 5 files changed, 54 insertions(+), 49 deletions(-) diff --git a/eng/Packages.Data.props b/eng/Packages.Data.props index 002f38fb427a..e1eb5bdc4242 100644 --- a/eng/Packages.Data.props +++ b/eng/Packages.Data.props @@ -168,9 +168,9 @@ - - - + + + @@ -334,7 +334,7 @@ - + diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md index 445e7fa8229d..990ac55b2e91 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +* Update OpenTelemetry dependencies + ([#](https://github.com/Azure/azure-sdk-for-net/pull/)) + - OpenTelemetry 1.8.0 + ## 1.2.0-beta.2 (2024-03-12) ### Features Added diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/OpenTelemetryBuilderExtensions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/OpenTelemetryBuilderExtensions.cs index e4e836eb367c..95f6a55bf877 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/OpenTelemetryBuilderExtensions.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/OpenTelemetryBuilderExtensions.cs @@ -49,7 +49,12 @@ public static class OpenTelemetryBuilderExtensions /// SQL Client. /// /// +#pragma warning disable CS0618 // Type or member is obsolete + // Note: OpenTelemetryBuilder is obsolete because users should target + // IOpenTelemetryBuilder for extensions but this method is valid and + // expected to be called to obtain a root builder. public static OpenTelemetryBuilder UseAzureMonitor(this OpenTelemetryBuilder builder) +#pragma warning restore CS0618 // Type or member is obsolete { builder.Services.TryAddSingleton, DefaultAzureMonitorOptions>(); @@ -76,7 +81,12 @@ public static OpenTelemetryBuilder UseAzureMonitor(this OpenTelemetryBuilder bui /// SQL Client. /// /// +#pragma warning disable CS0618 // Type or member is obsolete + // Note: OpenTelemetryBuilder is obsolete because users should target + // IOpenTelemetryBuilder for extensions but this method is valid and + // expected to be called to obtain a root builder. public static OpenTelemetryBuilder UseAzureMonitor(this OpenTelemetryBuilder builder, Action configureAzureMonitor) +#pragma warning restore CS0618 // Type or member is obsolete { if (builder.Services == null) { @@ -126,10 +136,6 @@ public static OpenTelemetryBuilder UseAzureMonitor(this OpenTelemetryBuilder bui { logging.AddOpenTelemetry(builderOptions => { - var resourceBuilder = ResourceBuilder.CreateDefault(); - configureResource(resourceBuilder); - builderOptions.SetResourceBuilder(resourceBuilder); - builderOptions.IncludeFormattedMessage = true; }); }); @@ -205,30 +211,16 @@ public static OpenTelemetryBuilder UseAzureMonitor(this OpenTelemetryBuilder bui private static TracerProviderBuilder AddVendorInstrumentationIfPackageNotReferenced(this TracerProviderBuilder tracerProviderBuilder) { - var vendorInstrumentationActions = new Dictionary + try { - { SqlClientInstrumentationPackageName, () => tracerProviderBuilder.AddSqlClientInstrumentation() }, - }; - - foreach (var packageActionPair in vendorInstrumentationActions) + var instrumentationAssembly = Assembly.Load(SqlClientInstrumentationPackageName); + AzureMonitorAspNetCoreEventSource.Log.FoundInstrumentationPackageReference(SqlClientInstrumentationPackageName); + } + catch { - Assembly? instrumentationAssembly = null; - - try - { - instrumentationAssembly = Assembly.Load(packageActionPair.Key); - AzureMonitorAspNetCoreEventSource.Log.FoundInstrumentationPackageReference(packageActionPair.Key); - } - catch - { - AzureMonitorAspNetCoreEventSource.Log.NoInstrumentationPackageReference(packageActionPair.Key); - } - - if (instrumentationAssembly == null) - { - packageActionPair.Value.Invoke(); - AzureMonitorAspNetCoreEventSource.Log.VendorInstrumentationAdded(packageActionPair.Key); - } + AzureMonitorAspNetCoreEventSource.Log.NoInstrumentationPackageReference(SqlClientInstrumentationPackageName); + tracerProviderBuilder.AddSqlClientInstrumentation(); + AzureMonitorAspNetCoreEventSource.Log.VendorInstrumentationAdded(SqlClientInstrumentationPackageName); } return tracerProviderBuilder; diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md index 692572933b3d..4b12d01e6aa6 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md @@ -14,6 +14,10 @@ ### Other Changes +* Update OpenTelemetry dependencies + ([#](https://github.com/Azure/azure-sdk-for-net/pull/)) + - OpenTelemetry 1.8.0 + ## 1.3.0-beta.1 (2024-02-08) ### Bugs Fixed diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsExtensions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsExtensions.cs index 22784012e929..3b7d8035becd 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsExtensions.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsExtensions.cs @@ -45,29 +45,34 @@ public static TracerProviderBuilder AddLiveMetrics( // configuration delegate into options pipeline. services.Configure(finalOptionsName, configure); } - }); - - return builder.AddProcessor(sp => - { - // SETUP OPTIONS - LiveMetricsExporterOptions exporterOptions; - if (name == null) + // Register Manager as a singleton + services.AddSingleton(sp => { - exporterOptions = sp.GetRequiredService>().Create(finalOptionsName); + LiveMetricsExporterOptions exporterOptions; - // Configuration delegate is executed inline on the fresh instance. - configure?.Invoke(exporterOptions); - } - else - { - // When using named options we can properly utilize Options - // API to create or reuse an instance. - exporterOptions = sp.GetRequiredService>().Get(finalOptionsName); - } + if (name == null) + { + exporterOptions = sp.GetRequiredService>().Create(finalOptionsName); + + // Configuration delegate is executed inline on the fresh instance. + configure?.Invoke(exporterOptions); + } + else + { + // When using named options we can properly utilize Options + // API to create or reuse an instance. + exporterOptions = sp.GetRequiredService>().Get(finalOptionsName); + } + + // INITIALIZE INTERNALS + return new Manager(exporterOptions, new DefaultPlatform()); + }); + }); - // INITIALIZE INTERNALS - var manager = new Manager(exporterOptions, new DefaultPlatform()); + return builder.AddProcessor(sp => + { + var manager = sp.GetRequiredService(); return new LiveMetricsActivityProcessor(manager); }); } From d9ab692c7e07f433e436e6a723a6d159509340ec Mon Sep 17 00:00:00 2001 From: Rajkumar Rangaraj Date: Thu, 4 Apr 2024 10:45:17 -0700 Subject: [PATCH 2/6] Update changelog --- .../CHANGELOG.md | 14 +++++++++++--- .../CHANGELOG.md | 4 +++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md index 990ac55b2e91..e93969f66242 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md @@ -11,8 +11,16 @@ ### Other Changes * Update OpenTelemetry dependencies - ([#](https://github.com/Azure/azure-sdk-for-net/pull/)) + ([#43197](https://github.com/Azure/azure-sdk-for-net/pull/43197)) - OpenTelemetry 1.8.0 + - OpenTelemetry.Extensions.Hosting 1.8.0 + - OpenTelemetry.Exporter.InMemory 1.8.0 + +* Removed the necessity for custom resource attributes configuration in + OpenTelemetry logging setup, as the OpenTelemetry .NET SDK's enhancements to + the builder.ConfigureResource method now uniformly set resource attributes + across logs, metrics, and traces. + ([#43197](https://github.com/Azure/azure-sdk-for-net/pull/43197)) ## 1.2.0-beta.2 (2024-03-12) @@ -29,7 +37,7 @@ documentation. ([#42307](https://github.com/Azure/azure-sdk-for-net/pull/42307)) -- Enabled support for log collection from Azure SDKs via `Microsoft.Extensions.Logging`. See [Logging with the Azure SDK for .NET](https://learn.microsoft.com/dotnet/azure/sdk/logging) +* Enabled support for log collection from Azure SDKs via `Microsoft.Extensions.Logging`. See [Logging with the Azure SDK for .NET](https://learn.microsoft.com/dotnet/azure/sdk/logging) for the details. ([#42374](https://github.com/Azure/azure-sdk-for-net/pull/42374)) @@ -68,7 +76,7 @@ property can be set to `false` to disable live metrics. ([#41872](https://github.com/Azure/azure-sdk-for-net/pull/41872)) -- Added an experimental feature for logs emitted within an active tracing +* Added an experimental feature for logs emitted within an active tracing context to follow the Activity's sampling decision. The feature can be enabled by setting `OTEL_DOTNET_AZURE_MONITOR_EXPERIMENTAL_ENABLE_LOG_SAMPLING` environment variable to `true`. diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md index 4b12d01e6aa6..b33a229aa741 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md @@ -15,8 +15,10 @@ ### Other Changes * Update OpenTelemetry dependencies - ([#](https://github.com/Azure/azure-sdk-for-net/pull/)) + ([#43197](https://github.com/Azure/azure-sdk-for-net/pull/43197)) - OpenTelemetry 1.8.0 + - OpenTelemetry.Extensions.Hosting 1.8.0 + - OpenTelemetry.Exporter.InMemory 1.8.0 ## 1.3.0-beta.1 (2024-02-08) From 6a4976b4fd5a39262661506ac7724bfd6cfe3af2 Mon Sep 17 00:00:00 2001 From: Rajkumar Rangaraj Date: Thu, 4 Apr 2024 15:29:37 -0700 Subject: [PATCH 3/6] Remove inmemory from changelog --- .../Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md | 3 +-- sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md index e93969f66242..a7480f5631e8 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md @@ -14,8 +14,7 @@ ([#43197](https://github.com/Azure/azure-sdk-for-net/pull/43197)) - OpenTelemetry 1.8.0 - OpenTelemetry.Extensions.Hosting 1.8.0 - - OpenTelemetry.Exporter.InMemory 1.8.0 - + * Removed the necessity for custom resource attributes configuration in OpenTelemetry logging setup, as the OpenTelemetry .NET SDK's enhancements to the builder.ConfigureResource method now uniformly set resource attributes diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md index b33a229aa741..4a2e3a3c55bd 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md @@ -18,7 +18,6 @@ ([#43197](https://github.com/Azure/azure-sdk-for-net/pull/43197)) - OpenTelemetry 1.8.0 - OpenTelemetry.Extensions.Hosting 1.8.0 - - OpenTelemetry.Exporter.InMemory 1.8.0 ## 1.3.0-beta.1 (2024-02-08) From 93eab9768fd898a23be41e0204828c000a73e06e Mon Sep 17 00:00:00 2001 From: Rajkumar Rangaraj Date: Thu, 4 Apr 2024 15:30:48 -0700 Subject: [PATCH 4/6] Remove hosting from exporter changelog --- sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md index 4a2e3a3c55bd..7594de804869 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md @@ -17,7 +17,6 @@ * Update OpenTelemetry dependencies ([#43197](https://github.com/Azure/azure-sdk-for-net/pull/43197)) - OpenTelemetry 1.8.0 - - OpenTelemetry.Extensions.Hosting 1.8.0 ## 1.3.0-beta.1 (2024-02-08) From 561024fa538354e744e54961e4f78b2cb5518e43 Mon Sep 17 00:00:00 2001 From: Rajkumar Rangaraj Date: Fri, 5 Apr 2024 16:16:52 -0700 Subject: [PATCH 5/6] Remove dispose from processor. --- .../src/LiveMetricsActivityProcessor.cs | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsActivityProcessor.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsActivityProcessor.cs index b477347deb61..aef36adf2848 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsActivityProcessor.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsActivityProcessor.cs @@ -75,27 +75,6 @@ public override void OnEnd(Activity activity) } } - protected override void Dispose(bool disposing) - { - if (!_disposed) - { - if (disposing) - { - try - { - _manager.Dispose(); - } - catch (System.Exception) - { - } - } - - _disposed = true; - } - - base.Dispose(disposing); - } - private void AddExceptionDocument(string exceptionType, string exceptionMessage) { var exceptionDocumentIngress = DocumentHelper.CreateException(exceptionType, exceptionMessage); From 52f3ec086f89eb6068055c0d10c8bc72dadbee6f Mon Sep 17 00:00:00 2001 From: Rajkumar Rangaraj Date: Fri, 5 Apr 2024 23:39:31 -0700 Subject: [PATCH 6/6] remove dispose variable. --- .../src/LiveMetricsActivityProcessor.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsActivityProcessor.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsActivityProcessor.cs index aef36adf2848..2f29298a79d9 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsActivityProcessor.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/src/LiveMetricsActivityProcessor.cs @@ -11,7 +11,6 @@ namespace Azure.Monitor.OpenTelemetry.LiveMetrics { internal sealed class LiveMetricsActivityProcessor : BaseProcessor { - private bool _disposed; private LiveMetricsResource? _resource; private readonly Manager _manager;