This file contains highlights and announcements covering all components.
For more details see CHANGELOG.md files maintained in the root source
directory of each individual package.
Release details: 1.17.0
- Added support for a Schema URL on Resource instances.
- The Resource Schema URL is now printed alongside the resource attributes when using the Console and OTLP exporters.
- Added
ExcludedTagKeysproperty toMetricStreamConfigurationto support excluding specific tag keys from metric streams. - Updated
tracestatekey validation to comply with the W3C Trace Context Level 2 grammar. - The SDK now depends on Microsoft.Extensions.Configuration.EnvironmentVariables instead of using a vendored implementation.
- All libraries are now marked as trim and AOT compatible.
- Fixed a metric storage leak that occurred when meters and instruments were repeatedly created and disposed.
- Fixed
TraceContextPropagatorto normalize emptytracestateheader values tonullwhen extracting trace context. - Fixed
OtlpLogExportersoOtlpExporterOptions.ExportProcessorTypeandOtlpExporterOptions.BatchExportProcessorOptionsare respected whenLogRecordExportProcessorOptionsare not configured. - Fixed the OTLP exporter dropping retryable data instead of saving it to disk when persistent storage retry is enabled and an export exceeds the configured timeout.
- Fixed the OTLP/HTTP exporter silently dropping data when an export timed out.
- Fixed the OTLP/gRPC exporter logging incorrectly when an export timed out.
- Performance and memory improvements for the OTLP exporter when exporting logs and metrics.
Release details: 1.16.0
- Breaking Change Explicit histogram boundaries no longer allow more than 10 million values.
- Fix
BaggagePropagatorto correctly follow Key and Value Encoding rules. - Add support for the W3C randomness flag.
- Fixed
TraceContextPropagatorto deduplicate duplicatetracestatekeys. ObservedTimestampwill now be exported for logs in the console exporter.- Fixed
NullReferenceExceptionwhen exporting OTLP logs if the scope key is null. - Added opt-in support for gzip compression to the OTLP exporter.
- Fixed OTLP disk retry data being stored incorrectly when using persistent storage retry.
- Fixed
OtlpLogExporterintegration withIHttpClientFactory. - Do not enable the OTLP integration with
IHttpClientFactorywhen mTLS is enabled. - Handle
Retry-Afterresponse headers that specify a date instead of a delay. observed_time_unix_nanowill no longer always be identical totime_unix_nanowhen using the logs bridge API.- Stop validating View-provided metric stream
Nameagainst the instrument name syntax. - Fix incorrect validation of
OTEL_BSP_*andOTEL_BLRP_*environment variables. - Fix observable instrument callbacks running once per reader instead of once per collection cycle.
- Added exception safety for user-supplied
ExemplarReservoirimplementations. - Fixed a circular reference which could cause a
LoggerProviderto fail to resolve when one of its dependencies depends onILoggerorILoggerFactory.
Release details: 1.15.3
- Breaking change: Fixed
tracestateparsing to reject keys that do not begin with a lowercase letter, including keys beginning with digits, to align with the W3C Trace Context specification. - Breaking change: Fixed an insecure disk retry default for OTLP export.
Disk retry now requires
OTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATHwhenOTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=diskis configured. - Improve efficiency of parsing of baggage and B3 propagation headers.
OtlpLogExporternow usesIHttpClientFactoryon .NET 8+.- Fixed an issue in OTLP/gRPC retry handling when parsing gRPC statuses.
- Fixed
OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMITnot being applied. - Fixed baggage and trace headers not respecting the maximum length in some cases.
- Fixed
BaggagePropagatorto trim optional whitespace (OWS) around=separators when parsing thebaggageheader. - Fixed
BaggagePropagatorto strip baggage properties from values when parsing thebaggageheader. - Fixed OTLP persistent storage clean-up handling for malformed filenames.
- Fixed resource leak in batch and periodic exporting task workers for Blazor/WASM.
- Fixed
LogRecord.LogLevelto preserveLogLevel.None. - Fixed
OTEL_TRACES_SAMPLER_ARGhandling for out-of-range values. - Fixed an issue with OTLP disk retry storage where metrics and logs used the traces storage directory.
- Fixed full OTLP endpoint being logged by internal diagnostics.
- Improve efficiency of parsing of baggage, B3 and Jaeger propagation headers.
- Hardened Zipkin exporter memory usage for endpoint caching and array tag serialization.
Release details: 1.15.2
- Limit how much of the response body is read by the OTLP exporter when export fails and error logging is enabled.
- Added Task-based worker support for
BatchExportProcessorandPeriodicExportingMetricReaderto enable the OpenTelemetry SDK to work in single-threaded WebAssembly environments such as Blazor and Uno Platform.
Release details: 1.15.1
- Breaking change: The Baggage API now disallows empty baggage names and treats baggage names and values as case sensitive, aligning with the latest Baggage API specification.
- Various bug fixes across
OpenTelemetry.ApiandOpenTelemetrySDK, including fixes for thread-safety, sampler edge cases, metrics precision, and observable instrument lifecycle handling.
Release details: 1.15.0
- Added support for
ActivitySource.TelemetrySchemaUrlandMeter.TelemetrySchemaUrlproperties across exporters. - Improved performance and reduced memory consumption for metrics histograms.
- Added mTLS configuration support for the OTLP exporter (client cert/key and CA certificate options).
OpenTelemetry.Exporter.Zipkinis deprecated and will stop receiving updates in December 2026. Zipkin already supports OTLP ingestion. Migrate toOpenTelemetry.Exporter.OpenTelemetryProtocolas stated in the Deprecating Zipkin Exporter blog post.
Release details: 1.14.0
- Add support for .NET 10.0.
- Breaking Change When targeting
net8.0, the package now depends on version8.0.0of theMicrosoft.Extensions.DependencyInjection.Abstractions,Microsoft.Extensions.Diagnostics.Abstractions,Microsoft.Extensions.Hosting.AbstractionsandMicrosoft.Extensions.Logging.ConfigurationNuGet packages. - Update
System.Diagnostics.DiagnosticSourcedependency to10.0.0for all target frameworks. - Update
Microsoft.Extensions.*dependencies to10.0.0for .NET Framework and .NET Standard. - Breaking Change NuGet packages now use the Sigstore bundle format
(
.sigstore.json) for digital signatures instead of separate signature (.sig) and certificate (.pem) files. This requires cosign 3.0 or later for verification. See the Digital signing section for updated verification instructions.
Release details: 1.13.1
- In version
1.13.0, the digital signature (.dll-keyless.sig) and certificate (.dll-keyless.pem) files were unintentionally omitted from the published NuGet packages. - This hotfix restores the Sigstore signing artifacts for all target frameworks
(
net462,netstandard2.0,netstandard2.1,net8.0,net9.0), ensuring the integrity of DLL verification using Sigstore cosign.
Release details: 1.13.0
- gRPC calls to export traces, logs, and metrics using
OtlpExportProtocol.Grpcnow set theTE=trailersHTTP request header to improve interoperability. EventNameis now exported by default asEventNameinstead oflogrecord.event.namewhen specified throughILoggeror the experimental log bridge API.
Release details: 1.12.0
- Breaking Change:
OpenTelemetry.Exporter.OpenTelemetryProtocolnow defaults to using OTLP/HTTP instead of OTLP/gRPC when targeting .NET Framework and .NET Standard. This change may cause telemetry export to fail unless appropriate adjustments are made. Explicitly setting OTLP/gRPC may result in aNotSupportedExceptionunless further configuration is applied. See #6209 for full details and mitigation guidance. #6229
Release details: 1.11.1
- Fixed a bug preventing
OpenTelemetry.Exporter.OpenTelemetryProtocolfrom exporting telemetry on .NET Framework.
Release details: 1.11.0
OpenTelemetry.Exporter.OpenTelemetryProtocolno longer depends on theGoogle.Protobuf,Grpc, orGrpc.Net.Clientpackages. Serialization and transmission of outgoing data is now performed manually to improve the overall performance.
Release details: 1.10.0
-
Bumped the package versions of
System.Diagnostic.DiagnosticSourceand other Microsoft.Extensions.* packages to9.0.0. -
Added support for new APIs introduced in
System.Diagnostics.DiagnosticSource9.0.0:-
For details see: Explicit bucket histogram aggregation.
-
ActivitySource.Tags (supported in OtlpExporter & ConsoleExporter)
-
-
Experimental features promoted to stable:
-
CardinalityLimitcan now be managed for individual metrics via the View API. For details see: Changing cardinality limit for a Metric. -
The overflow attribute (
otel.metric.overflow) behavior is now enabled by default. TheOTEL_DOTNET_EXPERIMENTAL_METRICS_EMIT_OVERFLOW_ATTRIBUTEenvironment variable is no longer required. For details see: Cardinality Limits. -
The MetricPoint reclaim behavior is now enabled by default when Delta aggregation temporality is used. The
OTEL_DOTNET_EXPERIMENTAL_METRICS_RECLAIM_UNUSED_METRIC_POINTSenvironment variable is no longer required. For details see: Cardinality Limits.
-
-
Added
OpenTelemetrySdk.CreateAPI for configuring OpenTelemetry .NET signals (logging, tracing, and metrics) via a single builder. This new API simplifies bootstrap and teardown, and supports cross-cutting extensions targetingIOpenTelemetryBuilder. -
Removed out of support
net6.0target and addednet9.0target.
Release details: 1.9.0
-
Exemplarsare now part of the stable API! For details see: customizing exemplars collection. -
WithLoggingis now part of the stable API! Logging, Metrics, and Tracing can now all be configured using theWithstyle and the builders finally have parity in their APIs.
Release details: 1.8.0
-
TracerProvidersampler can now be configured via theOTEL_TRACES_SAMPLER&OTEL_TRACES_SAMPLER_ARGenvvars. -
A new
UseOtlpExportercross-cutting extension has been added to register theOtlpExporterand enable all signals in a single call. -
exception.type,exception.message,exception.stacktracewill now automatically be included by theOtlpLogExporterwhen logging exceptions. Previously an experimental environment variable had to be set.
Release details: 1.7.0
-
Bumped the package versions of System.Diagnostic.DiagnosticSource and other Microsoft.Extensions.* packages to
8.0.0. -
Added
net8.0targets to all the components. -
OTLP Exporter
- Updated to use
ILoggerCategoryNameas the instrumentation scope for logs. - Added named options support for OTLP Log Exporter.
- Added support for instrumentation scope attributes in metrics.
- Added support under an experimental flag to emit log exception attributes.
- Added support under an experimental flag to emit log eventId and eventName. attributes.
- Updated to use
-
Added support for the IMetricsBuilder API.
-
Added an experimental opt-in metrics feature to reclaim unused MetricPoints which enables a higher number of unique dimension combinations to be emitted. See reclaim unused metric points for more details.