This file contains individual changes for the OpenTelemetry.Exporter.OpenTelemetryProtocol package. For highlights and announcements covering all components see: Release Notes.
Released 2024-Dec-11
-
Removed the following package references:
Google.Protobuf
Grpc
Grpc.Net.Client
These changes were made to streamline dependencies and reduce the footprint of the exporter. (#6005)
-
Switched from using the
Google.Protobuf
library for serialization to a custom manual implementation of protobuf serialization. (#6005) -
Fixed an issue where a
service.name
was added to the resource if it was missing. The exporter now respects the resource data provided by the SDK without modifications. (#6015) -
Removed the peer service resolver, which was based on earlier experimental semantic conventions that are not part of the stable specification. This change ensures that the exporter no longer modifies or assumes the value of peer service attributes, aligning it more closely with OpenTelemetry protocol specifications. (#6005)
Released 2024-Nov-12
Released 2024-Nov-01
- Added support for exporting instrumentation scope attributes from
ActivitySource.Tags
. (#5897)
Released 2024-Sep-30
-
Breaking change: Non-primitive attribute (logs) and tag (traces) values converted using
Convert.ToString
will now format usingCultureInfo.InvariantCulture
. (#5700) -
Fixed an issue causing
NotSupportedException
s to be thrown on startup whenAddOtlpExporter
registration extensions are called while using custom dependency injection containers which automatically create services (Unity, Grace, etc.). (#5808)- Fixed
PlatformNotSupportedException
s being thrown during export when running on mobile platforms which caused telemetry to be dropped silently. (#5821)
- Fixed
Released 2024-Jun-14
Released 2024-Jun-07
- The experimental APIs previously covered by
OTEL1000
(LoggerProviderBuilder.AddOtlpExporter
extension) are now part of the public API and supported in stable builds. (#5648)
Released 2024-May-20
-
User-Agent
header format changed fromOTel-OTLP-Exporter-Dotnet/{NuGet Package Version}+{Commit Hash}
toOTel-OTLP-Exporter-Dotnet/{NuGet Package Version}
. (#5528) -
Implementation of OTLP specification for propagating
Span
andSpanLink
flags containing W3C trace flags andparent_is_remote
information. (#5563) -
Introduced experimental support for automatically retrying export to the otlp endpoint by storing the telemetry offline during transient network errors. Users can enable this feature by setting the
OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY
environment variable todisk
. The default path where the telemetry is stored is obtained by calling Path.GetTempPath() or can be customized by settingOTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATH
environment variable. (#5527)
Released 2024-Apr-17
- Fix native AoT warnings in
OpenTelemetry.Exporter.OpenTelemetryProtocol
. (#5520)
Released 2024-Apr-02
-
OtlpExporter
will no longer throw an exception (even on .NET Core 3.1) when theSystem.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport
AppContext
switch is NOT set AND usingOtlpExportProtocol.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
withOTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY
.OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY
when set toin_memory
will enable automatic retries in case of transient failures during data export to an OTLP endpoint. (#5495)
Released 2024-Mar-27
Released 2024-Mar-14
-
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 attributesexception.type
,exception.message
, andexception.stacktrace
in the OpenTelemetry Semantic Conventions. These attributes, corresponding toLogRecord.Exception
, are now stable and will be automatically included in exports. (#5258) -
Updated
OtlpLogExporter
to setbody
on the data model fromLogRecord.Body
if{OriginalFormat}
attribute is NOT found andFormattedMessage
isnull
. This is typically the case when using the experimental Logs Bridge API. (#5268) -
Updated
OtlpLogExporter
to set instrumentation scope name on the data model fromLogRecord.Logger.Name
ifLogRecord.CategoryName
isnull
. 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
orHttpClientFactory
properties onOtlpExporterOptions
tonull
will now result in anArgumentNullException
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 toWithLogging
,WithMetrics
, andWithTracing
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 existingAddOtlpExporter
extensions. Extra calls will result inNotSupportedException
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
-
Released 2023-Dec-08
Released 2023-Nov-29
-
Made
OpenTelemetry.Exporter.OtlpLogExporter
public. (#4979) -
Updated the
OpenTelemetryLoggerOptions.AddOtlpExporter
extension to retrieveOtlpExporterOptions
andLogRecordExportProcessorOptions
using theIServiceProvider
/ Options API so that they can be controlled viaIConfiguration
(similar to metrics and traces). (#4916) -
Added an
OpenTelemetryLoggerOptions.AddOtlpExporter
extension overload which accepts aname
parameter to support named options. (#4916) -
Add support for Instrumentation Scope Attributes (i.e Meter Tags), fixing issue #4563. (#5089)
Released 2023-Oct-16
-
Bumped the version of
Google.Protobuf
used by the project to3.22.5
so that consuming applications can be published as NativeAOT successfully. Also, a new performance feature can be used instead of reflection emit, which is not AOT-compatible. Removed the dependency onSystem.Reflection.Emit.Lightweight
. (#4859) -
Added support for
OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT
andOTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT
. (#4887) -
Added ability to export attributes corresponding to
LogRecord.Exception
i.e.exception.type
,exception.message
andexception.stacktrace
. These attributes will be exported whenOTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES
environment variable will be set totrue
.NOTE: These attributes were removed in 1.6.0-rc.1 release in order to support stable release of OTLP Log Exporter. The attributes will now be available via environment variable mentioned above. (#4892)
-
Added ability to export attributes corresponding to
LogRecord.EventId.Id
aslogrecord.event.id
andLogRecord.EventId.Name
aslogrecord.event.name
. The attributes will be exported whenOTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES
will be set totrue
.NOTE: These attributes were removed in 1.6.0-rc.1 release in order to support stable release of OTLP Log Exporter. The attributes will now be available via environment variable mentioned above. (#4925)
-
LogRecord.CategoryName
will now be exported as InstrumentationScopename
field under ScopeLogs. (#4941)
Released 2023-Sep-05
Released 2023-Aug-21
-
Breaking change: Excluded attributes corresponding to
LogRecord.Exception
,LogRecord.EventId
andLogRecord.CategoryName
from the exported data. See following details for reasoning behind removing each individual property:LogRecord.Exception
: The semantic conventions for attributes corresponding to exception data are not yet stable. Track issue #4831 for details.LogRecord.EventId
: The attributes corresponding to this property are specific to .NET logging data model and there is no established convention defined for them yet. Track issue #4776 for details.LogRecord.CategoryName
: The attribute corresponding to this property is specific to .NET logging data model and there is no established convention defined for it yet. Track issue #3491 for details.
This change is temporarily done in order to release stable version of OTLP Log Exporter. (#4781)
-
Added extension method for configuring export processor options for otlp log exporter. (#4733)
-
Added support for configuring the metric exporter's temporality using the environment variable
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
as defined in the specification. (#4667)
Released 2023-Jul-12
-
Merged
OpenTelemetry.Exporter.OpenTelemetryProtocol.Logs
package intoOpenTelemetry.Exporter.OpenTelemetryProtocol
. Going Forward,OpenTelemetry.Exporter.OpenTelemetryProtocol
will be the only package needed for all 3 signals (Logs, Metrics, and Traces). All the changes made inOpenTelemetry.Exporter.OpenTelemetryProtocol.Logs
are now included in this package. (#4556) -
Updated Grpc.Net.Client to
2.45.0
to fix unobserved exception from failed calls. (#4573) -
Updated Grpc.Net.Client to
2.52.0
to address the vulnerability reported by CVE-2023-32731. Refer to grpc/grpc#32309 for more details. (#4647) -
Experimental (pre-release builds only):
Released 2023-Jun-26
Released 2023-Jun-05
- Remove support for exporting
Exemplars
. This would be added back in the1.6.*
prerelease versions right after1.5.0
stable version is released. (#4533)
Released 2023-May-25
- Revert version of
Google.Protobuf
to3.19.4
(see #4201). This also reintroduces theSystem.Reflection.Emit.Lightweight
dependency. (#4407)
Released 2023-Mar-31
-
Add support for exporting histograms aggregated using the Base2 Exponential Bucket Histogram Aggregation. (#4337)
-
Added support to set
TraceState
when converting the System.Diagnostics.Activity object to its corresponding OpenTelemetry.Proto.Trace.V1.Span object. (#4331)
Released 2023-Mar-07
-
Bumped the version of
Google.Protobuf
used by the project to3.22.0
so that a new performance feature can be used instead of reflection. Removed the dependency onSystem.Reflection.Emit.Lightweight
. (#4201) -
Added Exemplar support. See exemplars for instructions to enable exemplars.
Released 2023-Feb-24
-
Updated OTel SDK dependency to 1.4.0
-
AddOtlpExporter
extension methods will now always create a new options instance when named options are NOT used. (#4200)
Released 2023-Feb-10
- Added a direct dependency on System.Reflection.Emit.Lightweight which previously came transitively through the OpenTelemetry SDK. (#4140)
Released 2023-Feb-01
- Include User-Agent header per the specification. (#4120)
Released 2023-Jan-09
- For
AddOtlpExporter
extension methods, configuration delegates will be executed inline and not through Options API when named options are NOT used. (#4058)
Released 2022-Dec-12
- Fix default values for
OTEL_ATTRIBUTE_COUNT_LIMIT
,OTEL_ATTRIBUTE_COUNT_LIMIT
,OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT
,OTEL_SPAN_EVENT_COUNT_LIMIT
,OTEL_SPAN_LINK_COUNT_LIMIT
,OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT
,OTEL_LINK_ATTRIBUTE_COUNT_LIMIT
. All of them are defaulted to128
. (#3978)
Released 2022-Nov-07
- Log Exporter modified to no longer prefix scope-depth when exporting ILogger scopes as attributes. Empty keys and {OriginalFormat} key will be ignored from scopes. (#3843)
Released 2022-Oct-17
-
OTLP histogram data points will now include
Min
andMax
values when they are present. (#2735) -
Adds support for limiting the length and count of attributes exported from the OTLP log exporter. These Attribute Limits are configured via the environment variables defined in the specification. (#3684)
-
Added support for loading environment variables from
IConfiguration
when using theAddOtlpExporter
extensions (#3760)
Released 2022-Sep-29
-
Added overloads which accept a name to the
MeterProviderBuilder
AddOtlpExporter
extension to allow for more fine-grained options management (#3648) -
Added overloads which accept a name to the
TracerProviderBuilder
AddOtlpExporter
extension to allow for more fine-grained options management (#3653)
Released 2022-Aug-18
- When using Attribute Limits the OTLP exporter will now send "dropped" counts where applicable (ex: dropped_attributes_count). (#3580)
Released 2022-Aug-02
-
Adds support for limiting the length and count of attributes exported from the OTLP exporter. These Attribute Limits are configured via the environment variables defined in the specification. (#3376)
-
The
MetricReaderOptions
defaults can be overridden usingOTEL_METRIC_EXPORT_INTERVAL
andOTEL_METRIC_EXPORT_TIMEOUT
environmental variables as defined in the specification. (#3424)
Released 2022-Jun-03
Released 2022-June-1
Released 2022-May-16
-
LogExporter to support Logging Scopes. (#3218)
-
Support
HttpProtobuf
protocol with logs & addedHttpClientFactory
option (#3225) -
Removes net5.0 target and replaced with net6.0 as .NET 5.0 is going out of support. The package keeps netstandard2.1 target, so it can still be used with .NET5.0 apps. (#3147)
-
Fix handling of array-valued attributes for the OTLP trace exporter. (#3238)
-
Improve the conversion and formatting of attribute values to the OTLP format. The list of data types that must be supported per the OpenTelemetry specification is more narrow than what the .NET OpenTelemetry SDK supports. Numeric built-in value types are supported by converting to a
long
ordouble
as appropriate except for numeric types that could cause overflow (ulong
) or rounding (decimal
) which are converted to strings. Non-numeric built-in types -string
,char
,bool
are supported. All other types are converted to astring
. Array values are also supported. (#3262) (#3274)
Released 2022-Apr-15
- Removes .NET Framework 4.6.1. The minimum .NET Framework version supported is .NET 4.6.2. (#3190)
Released 2022-Apr-15
-
LogExporter to correctly map Severity to OTLP. (#3177)
-
LogExporter to special case {OriginalFormat} to populate Body. (#3182)
Released 2022-Apr-12
- Updated underlying proto files to v0.16.0. The LogRecord.Name field was removed. The CategoryName provided when calling CreateLogger previously populated this field. For now, CategoryName is no longer exported via OTLP. It will be reintroduced in the future as an attribute.
Released 2022-Mar-30
-
Added support for Activity Status and StatusDescription which were added to Activity from
System.Diagnostics.DiagnosticSource
version 6.0. Prior to version 6.0, setting the status of an Activity was provided by the .NET OpenTelemetry API via theActivity.SetStatus
extension method in theOpenTelemetry.Trace
namespace. Internally, this extension method added the status as tags on the Activity:otel.status_code
andotel.status_description
. Therefore, to maintain backward compatibility, the exporter falls back to using these tags to infer status. (#3100) -
Fixed OTLP metric exporter to default to a periodic 60 second export cycle. A bug was introduced in #2717 that caused the OTLP metric export to default to a manual export cycle (i.e., requiring an explicit flush). A workaround for this bug has been provided here. (#2982)
-
Bumped minimum required gRPC version (2.23.0 to 2.44.0). Fixes issues building on Apple Silicon (M1). (#2963)
-
Fixed issue where the configuration of an OTLP exporter could be changed after instantiation by altering the original
OtlpExporterOptions
provided. (#3066) -
TraceExporter to stop populating
DeprecatedCode
in OTLP Status.
Released 2022-Mar-04
-
LogExporter bug fix to handle null EventName. (#2871)
-
Fixed the default endpoint for OTLP exporter over HTTP/Protobuf. The default value is
http://localhost:4318
. (#2868) -
Removes metric related configuration options from
OtlpExporterOptions
.MetricReaderType
,PeriodicExporterMetricReaderOptions
, andTemporality
are now configurable via theMetricReaderOptions
. (#2717) -
Exporter bug fix to not throw exceptions from Export method. (#2915)
-
OTLP LogExporter modified to not drop the whole batch if a single log from the batch is invalid. (#2934)
Released 2022-Feb-02
-
Added validation that insecure channel is configured correctly when using .NET Core 3.x for gRPC-based exporting. (#2691)
-
Changed
OtlpLogExporter
to convertILogger
structured log inputs toAttributes
in OpenTelemetry (only active whenParseStateValues
istrue
onOpenTelemetryLoggerOptions
)
Released 2021-Nov-29
-
Added configuration options for
MetricReaderType
to allow for configuring theOtlpMetricExporter
to export either manually or periodically. (#2674) -
The internal log message used when OTLP export client connection failure occurs, will now include the endpoint uri as well. (#2686)
-
Support
HttpProtobuf
protocol with metrics & addedHttpClientFactory
option (#2696)
Released 2021-Nov-19
-
Changed
OtlpExporterOptions
constructor to throwFormatException
if it fails to parse any of the supported environment variables. -
Changed
OtlpExporterOptions.MetricExportIntervalMilliseconds
to default 60000 milliseconds. (#2641)
Released 2021-Oct-08
MeterProviderBuilder
extension methods now supportOtlpExporterOptions
bound toIConfiguration
when using OpenTelemetry.Extensions.Hosting (#2413)- Extended
OtlpExporterOptions
byProtocol
property. The property can be overridden byOTEL_EXPORTER_OTLP_PROTOCOL
environmental variable (grpc or http/protobuf). Implemented OTLP over HTTP binary protobuf trace exporter. (#2292)
Released 2021-Sep-23
Released 2021-Sep-13
OtlpExporterOptions.BatchExportProcessorOptions
is initialized withBatchExportActivityProcessorOptions
which supports field value overriding usingOTEL_BSP_SCHEDULE_DELAY
,OTEL_BSP_EXPORT_TIMEOUT
,OTEL_BSP_MAX_QUEUE_SIZE
,OTEL_BSP_MAX_EXPORT_BATCH_SIZE
environmental variables as defined in the specification. (#2219)
Released 2021-Aug-24
-
The
OtlpExporterOptions
defaults can be overridden usingOTEL_EXPORTER_OTLP_ENDPOINT
,OTEL_EXPORTER_OTLP_HEADERS
andOTEL_EXPORTER_OTLP_TIMEOUT
environmental variables as defined in the specification. (#2188) -
Changed default temporality for Metrics to be cumulative.
Released 2021-Jul-23
-
Removes .NET Framework 4.5.2, .NET 4.6 support. The minimum .NET Framework version supported is .NET 4.6.1. (#2138)
-
Add Metrics support.(#2174)
Released 2021-Jul-12
Released 2021-Jun-25
Released 2021-Jun-09
Released 2021-May-11
Released 2021-Apr-23
-
Resolves
System.TypeInitializationException
exception when using the exporter with an application that references Google.Protobuf 3.15. The OTLP exporter now depends on Google.Protobuf 3.15.5 enabling the use of the newUnsafeByteOperations.UnsafeWrap
to avoid unnecessary allocations. (#1873) -
Null values in string arrays are preserved according to spec. (#1919 #1945)
-
When using OpenTelemetry.Extensions.Hosting you can now bind
OtlpExporterOptions
toIConfiguration
using theConfigure
extension (ex:services.Configure<OtlpExporterOptions>(this.Configuration.GetSection("Otlp"));
). (#1942)
Released 2021-Mar-19
Released 2021-Feb-10
Released 2021-Feb-09
- Add back support for secure gRPC connections over https. (#1804)
Released 2021-Feb-04
- Moved
OtlpTraceExporter
andOtlpExporterOptions
classes toOpenTelemetry.Exporter
namespace. (#1770) - Changed default port for OTLP Exporter from 55680 to 4317
- Default ServiceName, if not found in Resource, is obtained from SDK using GetDefaultResource().
- Modified the data type of Headers option to string; Added a new option called
TimeoutMilliseconds for computing the
deadline
to be used by gRPC client forExport
(#1781) - Removes Grpc specific options from OTLPExporterOptions, which removes support for secure connections. See 1778 for details.
- Endpoint is made Uri for all target frameworks.
Released 2021-Jan-29
-
Changed
OtlpTraceExporter
class and constructor from internal to public. (#1612) -
In
OtlpExporterOptions.cs
: Exporter options now include a switch for Batch vs Simple exporter, and settings for batch exporting properties. -
Introduce a
netstandard2.1
build enabling the exporter to use the gRPC for .NET library instead of the gRPC for C# library for .NET Core 3.0+ applications. This required some breaking changes to theOtlpExporterOptions
. (#1662)
Released 2020-Nov-17
- Code generated from proto files has been marked internal. This includes
everything under the
OpenTelemetry.Proto
namespace. (#1524) - The
OtlpExporter
class has been made internal. (#1528) - Removed
ServiceName
from options available on theAddOtlpExporter
extension. It is not required by the specification. (#1557)
Released 2020-Nov-5
peer.service
tag is now added to outgoing spans (went not already specified) following the Zipkin remote endpoint rules (#1392)- Added
ServiceName
to options available on theAddOtlpExporter
extension (#1420)
Released 2020-Oct-16
Released 2020-Sep-15
Released 2020-08-28
- Allow configurable gRPC channel options (#1033)
- Renamed extension method from
UseOtlpExporter
toAddOtlpExporter
(#1066) - Changed
OtlpExporter
to useBatchExportActivityProcessor
by default (#1104)
Released 2020-07-24
- First beta release
Released 2020-07-23
- Initial release