The OpenTelemetry .NET Client
OpenTelemetry
OpenTelemetry.Exporter.OpenTelemetryProtocol
OpenTelemetry.Exporter.OpenTelemetryProtocol
.
(#5520)OpenTelemetry.Instrumentation.Http
Redacted
when building the url.full
tag. For example,
?key1=value1&key2=value2
becomes ?key1=Redacted&key2=Redacted
. You can
disable this redaction by setting the environment variable
OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION
to true
.
(#5532)OpenTelemetry.Instrumentation.AspNetCore
Redacted
when building the url.query
tag. For example,
?key1=value1&key2=value2
becomes ?key1=Redacted&key2=Redacted
. You can
disable this redaction by setting the environment variable
OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION
to true
.
(#5532)OpenTelemetry.Instrumentation.Http
Fixed an issue for spans when server.port
attribute was not set with
server.address
when it has default values (80
for HTTP
and
443
for HTTPS
protocol).
(#5419)
Fixed an issue where the http.request.method_original
attribute was not set
on activity. Now, when http.request.method
is set and the original method
is converted to its canonical form (e.g., Get
is converted to GET
),
the original value Get
will be stored in http.request.method_original
.
The attribute is not set on .NET Framework for non canonical form of CONNECT
,
GET
, HEAD
, PUT
, and POST
. HTTP Client is converting these values
to canonical form.
(#5471)
OpenTelemetry.Instrumentation.AspNetCore
Fixed an issue for spans when server.port
attribute was not set with
server.address
when it has default values (80
for HTTP
and
443
for HTTPS
protocol).
(#5419)
Fixed an issue where the http.request.method_original
attribute was not set
on activity. Now, when http.request.method
is set and the original method
is converted to its canonical form (e.g., Get
is converted to GET
),
the original value Get
will be stored in http.request.method_original
.
(#5471)
Fixed the name of spans that have http.request.method
attribute set to _OTHER
.
The span name will be set as HTTP {http.route}
as per the specification.
(#5484)
If you're interested in knowing all of the changes that went into 1.8.0 release, please go through the release notes of all the previous pre-release versions for 1.8.0:
Changes in 1.8.0:
OpenTelemetry.Exporter.Console
ActivitySource.Version
property.
(#5472)OpenTelemetry.Exporter.OpenTelemetryProtocol
OtlpExporter
will no longer throw an exception (even on .NET Core 3.1)
when the System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport
AppContext
switch is NOT set AND using OtlpExportProtocol.Grpc
to send to an insecure ("http") endpoint.
System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport
is not required to be set when using .NET 5 or newer.
(#5486)
Replaced environment variable
OTEL_DOTNET_EXPERIMENTAL_OTLP_ENABLE_INMEMORY_RETRY
with
OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY
. OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY
when set to in_memory
will enable automatic retries in case of transient
failures during data export to an OTLP endpoint.
(#5495)
OpenTelemetry
TracerProvider
s can now have a sampler configured via the
OTEL_TRACES_SAMPLER
environment variable. The supported values are:
always_off
, always_on
, traceidratio
, parentbased_always_on
,
parentbased_always_off
, and parentbased_traceidratio
. The options
traceidratio
and parentbased_traceidratio
may have the sampler probability
configured via the OTEL_TRACES_SAMPLER_ARG
environment variable.
For details see: OpenTelemetry Environment Variable
Specification.
(#5448)OpenTelemetry.Exporter.Prometheus.AspNetCore
Fix serializing scope_info when buffer overflows (#5407)
Add target_info
to Prometheus exporters when using OpenMetrics
(#5407)
OpenTelemetry.Exporter.Prometheus.HttpListener
Fix serializing scope_info when buffer overflows (#5407)
Add target_info
to Prometheus exporters when using OpenMetrics
(#5407)
OpenTelemetry.Exporter.Zipkin
otel.library.name
and
otel.library.version
to otel.scope.name
and otel.scope.version
respectively.
Old versions of attributes are deprecated, but still exported
for backward compatibility.
(#5473)OpenTelemetry
Throw NotSupportedException when using SetErrorStatusOnException
method for Tracing in Mono Runtime and Native AOT environment because the dependent Marshal.GetExceptionPointers()
API is not supported on these platforms. (#5374)
Fixed an issue where LogRecord.Attributes
(or LogRecord.StateValues
alias) could become out of sync with LogRecord.State
if either is set directly via the public setters. This was done to further mitigate issues introduced in 1.5.0 causing attributes added using custom processor(s) to be missing after upgrading. For details see:(#5169)
Fixed an issue where SimpleExemplarReservoir
was not resetting internal state for cumulative temporality. (#5230)
Fixed an issue causing LogRecord
s to be incorrectly reused when wrapping an instance of BatchLogRecordExportProcessor
inside another
BaseProcessor<LogRecord>
which leads to missing or incorrect data during export. (#5255)
Experimental (pre-release builds only): Added support for setting CardinalityLimit
(the maximum number of data points allowed for a metric) when configuring a view (applies to individual metrics) and obsoleted MeterProviderBuilderExtensions.SetMaxMetricPointsPerMetricStream
(previously applied to all metrics). The default cardinality limit for metrics remains at 2000
. (#5312, #5328)
Updated LogRecord
to keep CategoryName
and Logger
in sync when using the experimental Log Bridge API. #5317
Added OpenTelemetryBuilderSdkExtensions
class which contains extension methods (ConfigureResource
, WithMetrics
, WithTracing
, and experimental WithLogging
) for the IOpenTelemetryBuilder
interface. (#5265)
Added Microsoft.Extensions.Diagnostics.Abstractions
dependency so that the IOpenTelemetryBuilder.WithMetrics
extension method can configure IMetricsListener. (#5265)
Experimental (pre-release builds only): The Exemplar.FilteredTags
property now returns a ReadOnlyFilteredTagCollection
instance and the Exemplar.LongValue
property has been added. The MetricPoint.GetExemplars
method has been replaced by MetricPoint.TryGetExemplars
which outputs a ReadOnlyExemplarCollection
instance. These are breaking changes for metrics exporters which support exemplars. (#5386)
Experimental (pre-release builds only): Added support for exemplars when using Base2 Exponential Bucket Histogram Aggregation configured via the View API. (#5396)
Experimental (pre-release builds only): Removed the ExemplarFilter
, AlwaysOffExemplarFilter
, AlwaysOnExemplarFilter
, and TraceBasedExemplarFilter
APIs. The MeterProviderBuilder.SetExemplarFilter
extension method now accepts an ExemplarFilterType
enumeration (which contains definitions for the supported filter types AlwaysOff
, AlwaysOn
, and TraceBased
) instead of an ExemplarFilter
instance. This was done in response to changes made to the OpenTelemetry Metrics SDK Specification. (#5404)
Experimental (pre-release builds only): The ExemplarFilter
used by SDK MeterProvider
s can now be controlled via the OTEL_METRICS_EXEMPLAR_FILTER
environment variable. The supported values are: always_off
, always_on
, and trace_based
. For details see: OpenTelemetry Environment Variable Specification. (#5412)
OpenTelemetry.Api.ProviderBuilderExtensions
IOpenTelemetryBuilder
interface to support authoring extensions which can configure multiple OpenTelemetry signals (tracing, metrics, and/or logs). (#5265)OpenTelemetry.Exporter.OpenTelemetryProtocol
Experimental (pre-release builds only): Added LoggerProviderBuilder.AddOtlpExporter
registration extensions. #5103
Removed the OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES
environment variable, following the stabilization of the exception attributes exception.type
, exception.message
, and exception.stacktrace
in the OpenTelemetry Semantic Conventions. These attributes, corresponding to LogRecord.Exception
, are now stable and will be automatically included in exports. (#5258)
Updated OtlpLogExporter
to set body
on the data model from LogRecord.Body
if {OriginalFormat}
attribute is NOT found and FormattedMessage
is null
. This is typically the case when using the
experimental Logs Bridge API. (#5268)
Updated OtlpLogExporter
to set instrumentation scope name on the data model from LogRecord.Logger.Name
if LogRecord.CategoryName
is null
. This is typically the case when using the experimental Logs Bridge API. (#5300)
URL encoded values in OTEL_EXPORTER_OTLP_HEADERS
are now correctly decoded as it is mandated by the specification. (#5316)
Experimental (pre-release builds only): Add support in OtlpMetricExporter
for emitting exemplars supplied on Counters, Gauges, and
ExponentialHistograms. (#5397)
Setting Endpoint
or HttpClientFactory
properties on OtlpExporterOptions
to null
will now result in an ArgumentNullException
being thrown. (#5434)
Introduced experimental support for automatically retrying export to the otlp endpoint when transient network errors occur. Users can enable this feature by setting OTEL_DOTNET_EXPERIMENTAL_OTLP_ENABLE_INMEMORY_RETRY
environment variable to true. (#5435)
Added IOpenTelemetryBuilder.UseOtlpExporter
extension to simplify setup of the OTLP Exporter when all three signals are used (logs, metrics, and traces). The new extension has the following behaviors:
Calling UseOtlpExporter
will automatically enable logging, tracing, and metrics. Additional calls to WithLogging
, WithMetrics
, and WithTracing
are NOT required however for metrics and tracing sources/meters still need to be enabled.
UseOtlpExporter
can only be called once and cannot be used with the existing AddOtlpExporter
extensions. Extra calls will result in NotSupportedException
s being thrown.
UseOtlpExporter
will register the OTLP Exporter at the end of the processor pipeline for logging and tracing.
The OTLP Exporters added for logging, tracing, and metrics can be configured using environment variables or IConfiguration
.
For details see: README > Enable OTLP Exporter for all signals.
PR: #5400
OpenTelemetry.Exporter.Prometheus.AspNetCore
Added option to disable _total suffix addition to counter metrics (#5305)
Export OpenMetrics format from Prometheus exporters (#5107)
For requests with OpenMetrics format, scope info is automatically added (#5086 #5182)
OpenTelemetry.Exporter.Prometheus.HttpListener
Added option to disable _total suffix addition to counter metrics (#5305)
Export OpenMetrics format from Prometheus exporters (#5107)
For requests with OpenMetrics format, scope info is automatically added (#5086 #5182)
Breaking change Updated the PrometheusHttpListener
to throw an exception if it can't be started. (#5304)
OpenTelemetry.Extensions.Hosting
OpenTelemetryBuilder
has been marked obsolete. Component authors using OpenTelemetryBuilder
for cross-cutting signal configuration extensions should switch to targeting IOpenTelemetryBuilder
instead. (#5265)