diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/AzureMonitorOptions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/AzureMonitorOptions.cs
index 89938a80a322..00793c3d7b69 100644
--- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/AzureMonitorOptions.cs
+++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/AzureMonitorOptions.cs
@@ -17,7 +17,7 @@ public class AzureMonitorOptions : ClientOptions
/// The Connection String provides users with a single configuration setting to identify the Azure Monitor resource and endpoint.
///
///
- /// (https://docs.microsoft.com/azure/azure-monitor/app/sdk-connection-string).
+ /// .
///
public string ConnectionString { get; set; }
@@ -27,7 +27,7 @@ public class AzureMonitorOptions : ClientOptions
/// and Instrumentation Key from the Connection String will be used.
///
///
- /// https://learn.microsoft.com/en-us/azure/azure-monitor/app/sdk-connection-string?tabs=net#is-the-connection-string-a-secret
+ /// .
///
public TokenCredential Credential { get; set; }
diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md
index 672144f93022..a1aa58dce493 100644
--- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md
+++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md
@@ -9,6 +9,11 @@
* Location ip on server spans will now be set using `client.address` tag key on
activity instead of `http.client_ip`.
([#37707](https://github.com/Azure/azure-sdk-for-net/pull/37707))
+* Removing `ServiceVersion.V2020_09_15_Preview`. This is no longer in use and
+ the exporter has already defaulted to the latest `ServiceVersion.v2_1`.
+ ([#37996](https://github.com/Azure/azure-sdk-for-net/pull/37996))
+* Remove Nullable Annotations from the Exporter's public API.
+ ([#37996](https://github.com/Azure/azure-sdk-for-net/pull/37996))
### Bugs Fixed
diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.netstandard2.0.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.netstandard2.0.cs
index 1881608d99df..df4fa7a16050 100644
--- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.netstandard2.0.cs
+++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.netstandard2.0.cs
@@ -1,31 +1,24 @@
namespace Azure.Monitor.OpenTelemetry.Exporter
{
- public static partial class AzureMonitorExporterLoggingExtensions
+ public static partial class AzureMonitorExporterExtensions
{
- public static OpenTelemetry.Logs.OpenTelemetryLoggerOptions AddAzureMonitorLogExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, System.Action? configure = null, Azure.Core.TokenCredential? credential = null) { throw null; }
- }
- public static partial class AzureMonitorExporterMetricExtensions
- {
- public static OpenTelemetry.Metrics.MeterProviderBuilder AddAzureMonitorMetricExporter(this OpenTelemetry.Metrics.MeterProviderBuilder builder, System.Action? configure = null, Azure.Core.TokenCredential? credential = null, string? name = null) { throw null; }
+ public static OpenTelemetry.Logs.OpenTelemetryLoggerOptions AddAzureMonitorLogExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, System.Action configure = null, Azure.Core.TokenCredential credential = null) { throw null; }
+ public static OpenTelemetry.Metrics.MeterProviderBuilder AddAzureMonitorMetricExporter(this OpenTelemetry.Metrics.MeterProviderBuilder builder, System.Action configure = null, Azure.Core.TokenCredential credential = null, string name = null) { throw null; }
+ public static OpenTelemetry.Trace.TracerProviderBuilder AddAzureMonitorTraceExporter(this OpenTelemetry.Trace.TracerProviderBuilder builder, System.Action configure = null, Azure.Core.TokenCredential credential = null, string name = null) { throw null; }
}
public partial class AzureMonitorExporterOptions : Azure.Core.ClientOptions
{
public AzureMonitorExporterOptions() { }
public AzureMonitorExporterOptions(Azure.Monitor.OpenTelemetry.Exporter.AzureMonitorExporterOptions.ServiceVersion version = Azure.Monitor.OpenTelemetry.Exporter.AzureMonitorExporterOptions.ServiceVersion.v2_1) { }
- public string? ConnectionString { get { throw null; } set { } }
- public Azure.Core.TokenCredential? Credential { get { throw null; } set { } }
+ public string ConnectionString { get { throw null; } set { } }
+ public Azure.Core.TokenCredential Credential { get { throw null; } set { } }
public bool DisableOfflineStorage { get { throw null; } set { } }
public float SamplingRatio { get { throw null; } set { } }
- public string? StorageDirectory { get { throw null; } set { } }
+ public string StorageDirectory { get { throw null; } set { } }
public Azure.Monitor.OpenTelemetry.Exporter.AzureMonitorExporterOptions.ServiceVersion Version { get { throw null; } set { } }
public enum ServiceVersion
{
- V2020_09_15_Preview = 1,
- v2_1 = 2,
+ v2_1 = 1,
}
}
- public static partial class AzureMonitorExporterTraceExtensions
- {
- public static OpenTelemetry.Trace.TracerProviderBuilder AddAzureMonitorTraceExporter(this OpenTelemetry.Trace.TracerProviderBuilder builder, System.Action? configure = null, Azure.Core.TokenCredential? credential = null, string? name = null) { throw null; }
- }
}
diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterExtensions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterExtensions.cs
new file mode 100644
index 000000000000..11b9c2bc3936
--- /dev/null
+++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterExtensions.cs
@@ -0,0 +1,184 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+#nullable disable
+
+using System;
+using System.Diagnostics;
+using Azure.Core;
+using Azure.Monitor.OpenTelemetry.Exporter.Internals;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
+using OpenTelemetry;
+using OpenTelemetry.Logs;
+using OpenTelemetry.Metrics;
+using OpenTelemetry.Trace;
+
+namespace Azure.Monitor.OpenTelemetry.Exporter
+{
+ ///
+ /// Extension methods to simplify registering of Azure Monitor Exporter for all signals.
+ ///
+ public static class AzureMonitorExporterExtensions
+ {
+ ///
+ /// Adds Azure Monitor Trace exporter to the TracerProvider.
+ ///
+ /// builder to use.
+ /// Callback action for configuring .
+ ///
+ /// An Azure capable of providing an OAuth token.
+ /// Note: if a credential is provided to both and this parameter,
+ /// the Options will take precedence.
+ ///
+ /// Name which is used when retrieving options.
+ /// The instance of to chain the calls.
+ public static TracerProviderBuilder AddAzureMonitorTraceExporter(
+ this TracerProviderBuilder builder,
+ Action configure = null,
+ TokenCredential credential = null,
+ string name = null)
+ {
+ if (builder == null)
+ {
+ throw new ArgumentNullException(nameof(builder));
+ }
+
+ var finalOptionsName = name ?? Options.DefaultName;
+
+ if (name != null && configure != null)
+ {
+ // If we are using named options we register the
+ // configuration delegate into options pipeline.
+ builder.ConfigureServices(services => services.Configure(finalOptionsName, configure));
+ }
+
+ var deferredBuilder = builder as IDeferredTracerProviderBuilder;
+ if (deferredBuilder == null)
+ {
+ throw new InvalidOperationException("The provided TracerProviderBuilder does not implement IDeferredTracerProviderBuilder.");
+ }
+
+ return deferredBuilder.Configure((sp, builder) =>
+ {
+ var exporterOptions = sp.GetRequiredService>().Get(finalOptionsName);
+ if (name == null && configure != null)
+ {
+ // If we are NOT using named options, we execute the
+ // configuration delegate inline. The reason for this is
+ // AzureMonitorExporterOptions is shared by all signals. Without a
+ // name, delegates for all signals will mix together. See:
+ // https://github.com/open-telemetry/opentelemetry-dotnet/issues/4043
+ configure(exporterOptions);
+ }
+
+ builder.SetSampler(new ApplicationInsightsSampler(exporterOptions.SamplingRatio));
+
+ if (credential != null)
+ {
+ // Credential can be set by either AzureMonitorExporterOptions or Extension Method Parameter.
+ // Options should take precedence.
+ exporterOptions.Credential ??= credential;
+ }
+
+ builder.AddProcessor(new CompositeProcessor(new BaseProcessor[]
+ {
+ new StandardMetricsExtractionProcessor(new AzureMonitorMetricExporter(exporterOptions)),
+ new BatchActivityExportProcessor(new AzureMonitorTraceExporter(exporterOptions))
+ }));
+ });
+ }
+
+ ///
+ /// Adds Azure Monitor Metric exporter.
+ ///
+ /// builder to use.
+ /// Exporter configuration options.
+ ///
+ /// An Azure capable of providing an OAuth token.
+ /// Note: if a credential is provided to both and this parameter,
+ /// the Options will take precedence.
+ ///
+ /// Name which is used when retrieving options.
+ /// The instance of to chain the calls.
+ public static MeterProviderBuilder AddAzureMonitorMetricExporter(
+ this MeterProviderBuilder builder,
+ Action configure = null,
+ TokenCredential credential = null,
+ string name = null)
+ {
+ if (builder == null)
+ {
+ throw new ArgumentNullException(nameof(builder));
+ }
+
+ var finalOptionsName = name ?? Options.DefaultName;
+
+ if (name != null && configure != null)
+ {
+ // If we are using named options we register the
+ // configuration delegate into options pipeline.
+ builder.ConfigureServices(services => services.Configure(finalOptionsName, configure));
+ }
+
+ return builder.AddReader(sp =>
+ {
+ var exporterOptions = sp.GetRequiredService>().Get(finalOptionsName);
+
+ if (name == null && configure != null)
+ {
+ // If we are NOT using named options, we execute the
+ // configuration delegate inline. The reason for this is
+ // AzureMonitorExporterOptions is shared by all signals. Without a
+ // name, delegates for all signals will mix together. See:
+ // https://github.com/open-telemetry/opentelemetry-dotnet/issues/4043
+ configure(exporterOptions);
+ }
+
+ if (credential != null)
+ {
+ // Credential can be set by either AzureMonitorExporterOptions or Extension Method Parameter.
+ // Options should take precedence.
+ exporterOptions.Credential ??= credential;
+ }
+
+ return new PeriodicExportingMetricReader(new AzureMonitorMetricExporter(exporterOptions))
+ { TemporalityPreference = MetricReaderTemporalityPreference.Delta };
+ });
+ }
+
+ ///
+ /// Adds Azure Monitor Log Exporter with OpenTelemetryLoggerOptions.
+ ///
+ /// options to use.
+ /// Exporter configuration options.
+ ///
+ /// An Azure capable of providing an OAuth token.
+ /// Note: if a credential is provided to both and this parameter,
+ /// the Options will take precedence.
+ ///
+ /// The instance of to chain the calls.
+ public static OpenTelemetryLoggerOptions AddAzureMonitorLogExporter(
+ this OpenTelemetryLoggerOptions loggerOptions,
+ Action configure = null,
+ TokenCredential credential = null)
+ {
+ if (loggerOptions == null)
+ {
+ throw new ArgumentNullException(nameof(loggerOptions));
+ }
+
+ var options = new AzureMonitorExporterOptions();
+ configure?.Invoke(options);
+
+ if (credential != null)
+ {
+ // Credential can be set by either AzureMonitorExporterOptions or Extension Method Parameter.
+ // Options should take precedence.
+ options.Credential ??= credential;
+ }
+
+ return loggerOptions.AddProcessor(new BatchLogRecordExportProcessor(new AzureMonitorLogExporter(options)));
+ }
+ }
+}
diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterLoggingExtensions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterLoggingExtensions.cs
deleted file mode 100644
index 7767c9e04d82..000000000000
--- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterLoggingExtensions.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-using System;
-using Azure.Core;
-using OpenTelemetry;
-using OpenTelemetry.Logs;
-
-namespace Azure.Monitor.OpenTelemetry.Exporter
-{
- ///
- /// Extension methods to simplify registering of Azure Monitor Log Exporter.
- ///
- public static class AzureMonitorExporterLoggingExtensions
- {
- ///
- /// Adds Azure Monitor Log Exporter with OpenTelemetryLoggerOptions.
- ///
- /// options to use.
- /// Exporter configuration options.
- ///
- /// An Azure capable of providing an OAuth token.
- /// Note: if a credential is provided to both and this parameter,
- /// the Options will take precedence.
- ///
- /// The instance of to chain the calls.
- public static OpenTelemetryLoggerOptions AddAzureMonitorLogExporter(this OpenTelemetryLoggerOptions loggerOptions, Action? configure = null, TokenCredential? credential = null)
- {
- if (loggerOptions == null)
- {
- throw new ArgumentNullException(nameof(loggerOptions));
- }
-
- var options = new AzureMonitorExporterOptions();
- configure?.Invoke(options);
-
- if (credential != null)
- {
- // Credential can be set by either AzureMonitorExporterOptions or Extension Method Parameter.
- // Options should take precedence.
- options.Credential ??= credential;
- }
-
- return loggerOptions.AddProcessor(new BatchLogRecordExportProcessor(new AzureMonitorLogExporter(options)));
- }
- }
-}
diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterMetricExtensions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterMetricExtensions.cs
deleted file mode 100644
index 91596b02d83b..000000000000
--- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterMetricExtensions.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-using System;
-using Azure.Core;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Options;
-using OpenTelemetry.Metrics;
-
-namespace Azure.Monitor.OpenTelemetry.Exporter
-{
- ///
- /// Extension methods to simplify registering of Azure Monitor Metrics Exporter.
- ///
- public static class AzureMonitorExporterMetricExtensions
- {
- ///
- /// Adds Azure Monitor Metric exporter.
- ///
- /// builder to use.
- /// Exporter configuration options.
- ///
- /// An Azure capable of providing an OAuth token.
- /// Note: if a credential is provided to both and this parameter,
- /// the Options will take precedence.
- ///
- /// Name which is used when retrieving options.
- /// The instance of to chain the calls.
- public static MeterProviderBuilder AddAzureMonitorMetricExporter(
- this MeterProviderBuilder builder,
- Action? configure = null,
- TokenCredential? credential = null,
- string? name = null)
- {
- if (builder == null)
- {
- throw new ArgumentNullException(nameof(builder));
- }
-
- var finalOptionsName = name ?? Options.DefaultName;
-
- if (name != null && configure != null)
- {
- // If we are using named options we register the
- // configuration delegate into options pipeline.
- builder.ConfigureServices(services => services.Configure(finalOptionsName, configure));
- }
-
- return builder.AddReader(sp =>
- {
- var exporterOptions = sp.GetRequiredService>().Get(finalOptionsName);
-
- if (name == null && configure != null)
- {
- // If we are NOT using named options, we execute the
- // configuration delegate inline. The reason for this is
- // AzureMonitorExporterOptions is shared by all signals. Without a
- // name, delegates for all signals will mix together. See:
- // https://github.com/open-telemetry/opentelemetry-dotnet/issues/4043
- configure(exporterOptions);
- }
-
- if (credential != null)
- {
- // Credential can be set by either AzureMonitorExporterOptions or Extension Method Parameter.
- // Options should take precedence.
- exporterOptions.Credential ??= credential;
- }
-
- return new PeriodicExportingMetricReader(new AzureMonitorMetricExporter(exporterOptions))
- { TemporalityPreference = MetricReaderTemporalityPreference.Delta };
- });
- }
- }
-}
diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterOptions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterOptions.cs
index 267c82d4fbff..10a17be3aeaf 100644
--- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterOptions.cs
+++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterOptions.cs
@@ -1,6 +1,8 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
+#nullable disable
+
using System.Diagnostics.CodeAnalysis;
using Azure.Core;
@@ -21,14 +23,14 @@ public class AzureMonitorExporterOptions : ClientOptions
/// The Connection String provides users with a single configuration setting to identify the Azure Monitor resource and endpoint.
///
///
- /// (https://docs.microsoft.com/azure/azure-monitor/app/sdk-connection-string).
+ /// .
///
- public string? ConnectionString { get; set; }
+ public string ConnectionString { get; set; }
///
/// Get or sets the value of .
///
- public TokenCredential? Credential { get; set; }
+ public TokenCredential Credential { get; set; }
///
/// Gets or sets the ratio of telemetry items to be sampled. The value must be between 0.0F and 1.0F, inclusive.
@@ -65,20 +67,15 @@ public AzureMonitorExporterOptions(ServiceVersion version = LatestVersion)
public enum ServiceVersion
{
///
- /// (https://github.com/Azure/azure-rest-api-specs/blob/master/specification/applicationinsights/data-plane/Monitor.Exporters/preview/2020-09-15_Preview/swagger.json).
- ///
- V2020_09_15_Preview = 1,
-
- ///
- /// (https://github.com/Azure/azure-rest-api-specs/blob/master/specification/applicationinsights/data-plane/Monitor.Exporters/preview/v2.1/swagger.json).
+ /// .
///
- v2_1 = 2,
+ v2_1 = 1,
}
///
/// Override the default directory for offline storage.
///
- public string? StorageDirectory { get; set; }
+ public string StorageDirectory { get; set; }
///
/// Disable offline storage.
diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterTraceExtensions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterTraceExtensions.cs
deleted file mode 100644
index 3e7a531d842f..000000000000
--- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterTraceExtensions.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-using System;
-using System.Diagnostics;
-using Azure.Core;
-using Azure.Monitor.OpenTelemetry.Exporter.Internals;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Options;
-using OpenTelemetry;
-using OpenTelemetry.Trace;
-
-namespace Azure.Monitor.OpenTelemetry.Exporter
-{
- ///
- /// Extension methods to simplify registering of Azure Monitor Trace Exporter.
- ///
- public static class AzureMonitorExporterTraceExtensions
- {
- ///
- /// Adds Azure Monitor Trace exporter to the TracerProvider.
- ///
- /// builder to use.
- /// Callback action for configuring .
- ///
- /// An Azure capable of providing an OAuth token.
- /// Note: if a credential is provided to both and this parameter,
- /// the Options will take precedence.
- ///
- /// Name which is used when retrieving options.
- /// The instance of to chain the calls.
- public static TracerProviderBuilder AddAzureMonitorTraceExporter(
- this TracerProviderBuilder builder,
- Action? configure = null,
- TokenCredential? credential = null,
- string? name = null)
- {
- if (builder == null)
- {
- throw new ArgumentNullException(nameof(builder));
- }
-
- var finalOptionsName = name ?? Options.DefaultName;
-
- if (name != null && configure != null)
- {
- // If we are using named options we register the
- // configuration delegate into options pipeline.
- builder.ConfigureServices(services => services.Configure(finalOptionsName, configure));
- }
-
- var deferredBuilder = builder as IDeferredTracerProviderBuilder;
- if (deferredBuilder == null)
- {
- throw new InvalidOperationException("The provided TracerProviderBuilder does not implement IDeferredTracerProviderBuilder.");
- }
-
- return deferredBuilder.Configure((sp, builder) =>
- {
- var exporterOptions = sp.GetRequiredService>().Get(finalOptionsName);
- if (name == null && configure != null)
- {
- // If we are NOT using named options, we execute the
- // configuration delegate inline. The reason for this is
- // AzureMonitorExporterOptions is shared by all signals. Without a
- // name, delegates for all signals will mix together. See:
- // https://github.com/open-telemetry/opentelemetry-dotnet/issues/4043
- configure(exporterOptions);
- }
-
- builder.SetSampler(new ApplicationInsightsSampler(exporterOptions.SamplingRatio));
-
- if (credential != null)
- {
- // Credential can be set by either AzureMonitorExporterOptions or Extension Method Parameter.
- // Options should take precedence.
- exporterOptions.Credential ??= credential;
- }
-
- builder.AddProcessor(new CompositeProcessor(new BaseProcessor[]
- {
- new StandardMetricsExtractionProcessor(new AzureMonitorMetricExporter(exporterOptions)),
- new BatchActivityExportProcessor(new AzureMonitorTraceExporter(exporterOptions))
- }));
- });
- }
- }
-}