Update opentelemetry packages - #36
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
May 29, 2024 10:03
d8fc64b to
9bfb182
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
2 times, most recently
from
July 21, 2024 17:26
82543fa to
99f59c6
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
September 10, 2024 01:01
99f59c6 to
d6fe3b7
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
September 10, 2024 11:20
d6fe3b7 to
7bb85fd
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
October 2, 2024 00:57
7bb85fd to
14ae7b9
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
October 9, 2024 11:31
14ae7b9 to
a19b405
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
November 12, 2024 04:19
a19b405 to
a595839
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
November 13, 2024 22:54
a595839 to
c303e06
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
2 times, most recently
from
February 12, 2025 16:24
196689b to
15dc640
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
March 22, 2025 02:34
15dc640 to
673c8af
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
March 23, 2025 18:57
673c8af to
149bf20
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
May 23, 2025 19:41
149bf20 to
a087643
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
June 2, 2025 11:11
a087643 to
3306bae
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
2 times, most recently
from
September 26, 2025 01:14
5191dd2 to
9b28ff2
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
September 30, 2025 18:41
9b28ff2 to
52ff67f
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
May 9, 2026 01:41
52ff67f to
734677d
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
May 19, 2026 02:01
734677d to
49c1de1
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
September 18, 2026 20:10
49c1de1 to
d3ca8ad
Compare
renovate
Bot
force-pushed
the
renovate/opentelemetry-packages
branch
from
September 23, 2026 20:08
d3ca8ad to
4e53be1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.22→0.330.11→0.330.15→0.330.22→0.330.23→0.34Release Notes
open-telemetry/opentelemetry-rust (opentelemetry)
v0.33.0Compare Source
Released 2026-Sep-18
TraceStateaccepting more than the 32 list-members the W3C trace-contextspecification allows.
from_str,from_key_valueandinsertnow keep at most32, dropping members from the end of the list as the specification prescribes, so
neither a parsed nor a locally built
tracestatecan exceed the limit.ContextObservercan be registered viaGlobalContextObserver::setto benotified of context transitions through the
on_context_enterandon_context_exitcallbacks. This feature is primarily intended to publish adifferent view of the current context (the
ObserverContextView) throughalternative channels that let external readers (e.g. an eBPF profiler) track
the current context. See the associated
OTEP.
Gated behind the
experimental_context_observerfeature flag.otel_info!,otel_warn!,otel_debug!, andotel_error!macros now accept quoted-key fields(e.g.
"otel.component.type" = "value") for dotted attribute names.BoundGauge<T>andBoundUpDownCounter<T>types (and thecorresponding
Gauge::bind()/UpDownCounter::bind()methods), completingthe experimental bound-instrument API across all sync instruments
(
Counter,UpDownCounter,Histogram,Gauge). Gated behind theexperimental_metrics_bound_instrumentsfeature flag.v0.32.0Compare Source
Released 2026-May-08
BoundCounter<T>andBoundHistogram<T>types that cache resolvedaggregator references for a fixed attribute set. Created via
Counter::bind()and
Histogram::bind(), bound instruments bypass per-call attribute lookup,providing significant performance improvements for hot paths where the same
attributes are used repeatedly. Both types implement
Cloneso a single boundstate can be shared across threads or modules without re-binding. Also adds
the
SyncInstrument::bind()trait method andBoundSyncInstrument<T>traitfor SDK implementors; the trait method has a no-op default so custom
SyncInstrumentimpls degrade gracefully without panicking. Gated behind theexperimental_metrics_bound_instrumentsfeature flag.reservemethod toopentelemetry::propagation::Injectorto hint at the number of elements that will be added to avoid multiple resize operations of the underlying data structure. Has an empty default implementation.SpanBuilder#3227:trace_id,span_id,end_time,status,sampling_resultwith_trace_id,with_span_id,with_end_time,with_status,with_sampling_result#[must_use]attribute toopentelemetry::metrics::AsyncInstrumentBuilderto add compile time warning when.build()is not called on observable instrument builders, preventing silent failures where callbacks are never registered and metrics are never reported.opentelemetry::tracetoopentelemetry_sdk::trace#3277:SamplingDecision,SamplingResultopentelemetry_sdk::traceinstead.backing specification) is now stable and is enabled by default.
3278
tracingevents emitted via theinternal-logsfeatureContext::current()fromDropimplementations triggered byContextGuardcleanup (#3262).v0.31.0Compare Source
Released 2025-Sep-25
opentelemetry::global::set_tracer_providerto Unit to align with metrics counterpartget_allmethod toopentelemetry::propagation::Extractorto return all values of the given propagation key and provide a default implementation.IntoIteratorimplementation foropentelemetry::trace::TraceStateto allow iterating through its key-value pair collection.v0.30.0Compare Source
Released 2025-May-23
#2821 Context
based suppression capabilities added: Added the ability to prevent recursive
telemetry generation through new context-based suppression mechanisms. This
feature helps prevent feedback loops and excessive telemetry when OpenTelemetry
components perform their own operations.
New methods added to
Context:is_telemetry_suppressed()- Checks if telemetry is suppressed in thiscontext
with_telemetry_suppressed()- Creates a new context with telemetrysuppression enabled
is_current_telemetry_suppressed()- Efficiently checks if the current thread's contexthas telemetry suppressed
enter_telemetry_suppressed_scope()- Convenience method to enter a scope where telemetry issuppressed
These methods allow SDK components, exporters, and processors to temporarily
disable telemetry generation during their internal operations, ensuring more
predictable and efficient observability pipelines.
tracingforinternal-logsfeature to remove the need of addingtracingas a dependencyv0.29.1Compare Source
Release 2025-Apr-01
WithContextatopentelemetry::trace::context::WithContext#2879 to restore backwards compatibilityWithContextandFutureExtare inopentelemetry::contextas they are independent of the trace signal. Users should prefer this path.v0.29.0Compare Source
Released 2025-Mar-21
ExportErrortrait fromopentelemetry::trace::ExportErrortoopentelemetry_sdk::export::ExportErrorTraceErrorenum fromopentelemetry::trace::TraceErrortoopentelemetry_sdk::trace::TraceErrorTraceResulttype alias fromopentelemetry::trace::TraceResulttoopentelemetry_sdk::trace::TraceResultInstrumentationScopeimplementation forPartialEqandHashfixed to include Attributes also.BaggagefromValuetoStringValueBaggageconstants to reflect latest standard (MAX_KEY_VALUE_PAIRS- 180 -> 64,MAX_BYTES_FOR_ONE_PAIR- removed) and increased insert performance see #2284.Baggage.remove()signature with.get()to take the key as a referenceBaggagecan't be retrieved from theContextdirectly anymore and needs to be accessed viacontext.baggage()with_baggage()andcurrent_with_baggage()override any existingBaggagein theContextBaggagekeys can't be empty and only allow ASCII visual chars, except"(),/:;<=>?@[\]{}(see RFC7230, Section 3.2.6)KeyValueMetadatadoes not publicly expose its fields. This should be transparent change to the users.Contextto use a stack to properly handle out of order dropping ofContextGuard. This imposes a limit of65535nested contexts on a single thread. See #2378 and #1887.name: Option<&str>parameter to theevent_enabledmethodon the
Loggertrait. This allows implementations (SDK, processor, exporters)to leverage this additional information to determine if an event is enabled.
v0.28.0Compare Source
Released 2025-Feb-10
opentelemetry::global::shutdown_tracer_provider()Removed from this crate, should now usetracer_provider.shutdown()see #2369 for a migration example.opentelemetry::PropagationErrorstruct.v0.27.1Compare Source
Released 2024-Nov-27
v0.27.0Compare Source
Released 2024-Nov-11
LogRecord::set_trace_context; an optional method conditional on thetracefeature for setting trace context on a log record.as_anyfromAsyncInstrumenttrait and the implementing instruments:ObservableCounter,ObservableGauge, andObservableUpDownCounter#2187SyncInstrumenttrait to replace the individual synchronous instrument traits (SyncCounter,SyncGauge,SyncHistogram,SyncUpDownCounter) which are meant for SDK implementation. #2207observemethod on asynchronous instruments can only be called inside a callback. This was done by removing the implementation ofAsyncInstrumenttrait for each of the asynchronous instruments. #2210PartialOrdandOrdimplementations forKeyValue. #2215KeyValuerelated structs and enums asnon_exhaustive. #2228AnyValueenum asnon_exhaustive. #2230initmethod used to create instruments has been renamed tobuild. Also,try_init()method is removed from instrument builders. The return types ofInstrumentProvidertrait methods modified to return the instrument struct, instead ofResult. #2227Before:
Now:
Breaking change: #2220
InstrumentationLibrary::newInstrumentationLibrarytoInstrumentationScopeInstrumentationLibraryBuildertoInstrumentationScopeBuilderLoggerProvider::versioned_loggerandTracerProvider::versioned_tracerLoggerProvider::logger_builder,TracerProvider::tracer_builderandMeterProvider::versioned_meterLoggerProvider::logger_with_scope,TracerProvider::logger_with_scope,MeterProvider::meter_with_scopeglobal::meter_with_versionwithglobal::meter_with_scopeglobal::tracer_with_scopeBreaking change: replaced
InstrumentationScopepublic attributes by getters #2275Breaking change: #2260
global::set_error_handlerandglobal::handle_error.global::handle_errorusage inside the opentelemetry crates has been replaced withglobal::otel_info,otel_warn,otel_debugandotel_errormacros based on the severity of the internal logs.global::handle_errorwas to log the error usingeprintln!. With otel macros, the internal logs get emitted viatracingmacros of matching severity. Users now need to configure atracinglayer/subscriber to capture these logs.tracing::fmtlayer.Breaking change for exporter/processor authors: #2266
ExportErrortrait fromopentelemetry::ExportErrortoopentelemetry_sdk::export::ExportErroropentelemetry::trace::ExportErrorfor trace API. This would be eventually be consolidated with ExportError in the SDK.LogErrorenum fromopentelemetry::logs::LogErrortoopentelemetry_sdk::logs::LogErrorLogResulttype alias fromopentelemetry::logs::LogResulttoopentelemetry_sdk::logs::LogResultMetricErrorenum fromopentelemetry::metrics::MetricErrortoopentelemetry_sdk::metrics::MetricErrorMetricResulttype alias fromopentelemetry::metrics::MetricResulttoopentelemetry_sdk::metrics::MetricResultThese changes shouldn't directly affect the users of OpenTelemetry crate, as these constructs are used in SDK and Exporters. If you are an author of an sdk component/plug-in, like an exporter etc. please use these types from sdk. Refer CHANGELOG.md for more details, under same version section.
Breaking 2291 Rename
logs_level_enabled flagtospec_unstable_logs_enabled. Please enable this updated flag if the feature is needed. This flag will be removed once the feature is stabilized in the specifications.v0.26.0Compare Source
Released 2024-Sep-30
BREAKING Public API changes:
Removed:
Key.bool(),Key.i64(),Key.f64(),Key.string(),Key.array()#2090. These APIs were redundant as they didn't offer any additional functionality. The existingKeyValue::new()API covers all the scenarios offered by these APIs.Removed:
ObjectSafeMeterProviderandGlobalMeterProvider#2112. These APIs were unnecessary and were mainly meant for internal use.Modified:
MeterProvider.meter()andMeterProvider.versioned_meter()argument types have been updated to&'static strinstead ofimpl Into<Cow<'static, str>>>#2112. These APIs were modified to enforce the Metername,version, andschema_urlto be&'static str.Renamed:
NoopMeterCoretoNoopMeterAdded
with_boundariesAPI to allow users to provide custom bounds for Histogram instruments. #2135v0.25.0Compare Source
Before:
After:
So the custom log appenders should box these types while adding them in message body, or
attribute values. Similarly, the custom exporters should dereference these complex type values
before serializing.
Breaking :
#2015 Removed
the ability to register callbacks for Observable instruments on Meter directly.
If you were using
meter.register_callbackto provide the callback, providethem using
with_callbackmethod, while creating the Observable instrumentitself.
1715
shows the exact changes needed to make this migration. If you are starting new,
refer to the
examples
to learn how to provide Observable callbacks.
v0.24.0Compare Source
Add "metrics", "logs" to default features. With this, default feature list is
"trace", "metrics" and "logs".
When "metrics" feature is enabled,
KeyValueimplementsPartialEq,Eq,PartialOrder,Order,Hash. This is meant to be used for metricsaggregation purposes only.
Removed
Unitstruct for specifying Instrument units. Unit is treated as anopaque string. Migration: Replace
.with_unit(Unit::new("myunit"))with.with_unit("myunit").1869 Introduced the
LogRecord::set_target()method in the log bridge API.This method allows appenders to set the target/component emitting the logs.
v0.23.0Compare Source
Added
PropagationErrorGaugeno longer requiresotel-unstablefeature flag, as OpenTelemetry specification forGaugeinstrument is stable.Removed
urlencodingcrate dependency. #1613LoggerProviders are not meant for end users to get loggers from. It is only required for the log bridges.
Below global constructs for the logs are removed from API:
- opentelemetry::global::logger
- opentelemetry::global::set_logger_provider
- opentelemetry::global::shutdown_logger_provider
- opentelemetry::global::logger_provider
- opentelemetry::global::GlobalLoggerProvider
- opentelemetry::global::ObjectSafeLoggerProvider
For creating appenders using Logging bridge API, refer to the opentelemetry-tracing-appender example
Changed
BREAKING Moving LogRecord implementation to the SDK. 1702.
LogRecordstruct to SDK.LogRecordtrait in the API for populating log records. This trait is implemented by the SDK.This is the breaking change for the authors of Log Appenders. Refer to the opentelemetry-appender-tracing for more details.
Deprecate
versioned_logger()in favor oflogger_builder()1567.Before:
After:
versioned_tracer()in favor oftracer_builder()1567.Before:
After:
open-telemetry/opentelemetry-rust (opentelemetry-http)
v0.33.0Compare Source
Released 2026-Sep-18
Apply
HyperClient's configured timeout to the complete response body, notonly request dispatch and response headers.
Breaking Sealed the
ResponseExttrait so it can no longer be implemented bydownstream crates. The trait provides a blanket implementation for all
http::Response<T>types, so calling code is unaffected -- onlyimpl ResponseExt for MyTypewill stop compiling. If you have a customimplementation, remove it and rely on the blanket impl instead.
Breaking Removed the deprecated
HttpClient::sendmethod, which acceptedRequest<Vec<u8>>. Implement and callHttpClient::send_bytesinstead,converting existing requests with
request.map(Bytes::from)when needed.Breaking: Remove
opentelemetry_http::hyper::Body, which is no longer usedby any public constructor. Use
http_body_util::Full<Bytes>for custom Hyperclient request bodies.
Limit HTTP response body reads to 4 MiB in built-in HTTP clients (
reqwestasync/blocking andhyper). Reads exceeding the limit are aborted to prevent unbounded memory allocation and return the new opaqueResponseBodyTooLargeerror. Custom HTTP clients can construct this error withResponseBodyTooLarge::new()orResponseBodyTooLarge::default().Breaking Built-in reqwest and hyper clients now return HTTP 4xx and 5xx
responses as
Ok(Response<Bytes>)instead ofErr(HttpError). Here,Okmeans that the transport completed the request and received an HTTP response;
it does not imply a successful HTTP status. This preserves the response status
and headers for exporter retry classification. Transport failures and timeouts
continue to return
Err.If your code relied on
send_bytesreturningErrfor non-success statuses,call
ResponseExt::error_for_status()on the response instead.Breaking Removed
reqwest-rustls-webpki-rootsfeature. Thewebpki-rootscargo feature wasremoved from
reqwestin v0.13.0. Usereqwest-rustlsinstead, which now correctly enablesreqwest/rustls(platform native trust roots). To use Mozilla's embedded CA bundle, construct acustom
reqwest::Clientwith arustls::ClientConfigcontainingrustls::RootCertStore::from_iter(webpki_roots::TLS_SERVER_ROOTS.iter().cloned()), then supply itto the exporter with
with_http_client().v0.32.0Compare Source
Released 2026-May-08
reqwest's crypto backend has changed fromringtoaws-lc-sys.v0.31.0Released 2025-Sep-25
Extractor::get_allforHeaderExtractorHttpClientimplementation forHyperClient<C>with custom connectors beyondHttpConnector, enabling Unix Domain Socket connections and other custom transportsreqwestandreqwest-blockingfeatures to enable async and blockingreqwest HTTP clients
opentelemetrydependency to version 0.31.0.v0.30.0Compare Source
Released 2025-May-23
opentelemetrydependency to version 0.30.0.v0.29.0Compare Source
Released 2025-Mar-21
opentelemetrydependency version to 0.29.v0.28.0Compare Source
Released 2025-Feb-10
opentelemetrydependency version to 0.28.tracingcrate.HttpClient::send_byteswithbytes::Bytesrequest payload and deprecate oldHttpClient::sendfunction.v0.27.0Compare Source
Released 2024-Nov-08
Update
opentelemetrydependency version to 0.27Bump MSRV to 1.70 #2179
v0.26.0Compare Source
Released 2024-Sep-30
opentelemetrydependency version to 0.26v0.25.0Compare Source
opentelemetrydependency version to 0.25opentelemetrycrateon major,minor versions.
v0.13.0Compare Source
isahcHTTP client #1924httpv1 #1674opentelemetrydependency version to 0.24v0.12.0Compare Source
reqwest-rustls-webpki-rootsfeature flag to configurereqwestto use embeddedwebpki-roots.opentelemetrydependency version to 0.23open-telemetry/opentelemetry-rust (opentelemetry-otlp)
v0.33.0Compare Source
Released 2026-Sep-18
Exporter builder usage and environment configuration are unchanged.
Breaking for callers parsing compression strings:
Compression::from_str(including
.parse::<Compression>()) now returns the opaqueParseConfigErrorinstead of
ExporterBuildError. Update explicit result types and error handlingthat expects
ExporterBuildError::UnsupportedCompressionAlgorithm. The new errorimplements
Displayandstd::error::Error; its message is for diagnostics.Accepted strings and parsing behavior are unchanged.
Interpret protocol, compression, and metrics temporality environment values
case-insensitively. Treat empty values as unset, and warn and ignore invalid,
non-Unicode, or feature-unavailable enum values so resolution can continue
to the next environment variable or default. Compression
noneexplicitlydisables compression, including when a generic compression value is set.
Programmatic configuration remains strict.
Retry
policy uses exponential backoff and jitter with up to 3 retries (4 attempts
total). Use
.with_retry_policy(RetryPolicy::disabled())to disable retries,or provide a custom
RetryPolicyto change the behavior.Cargo.tomlenablesexperimental-grpc-retryorexperimental-http-retry, remove those feature flags. No migration action isrequired for users who did not enable them.
#3621
retryandretry_classificationmodules crate-private,removing their retry engine, error type, and protocol classifiers from the
public API.
RetryPolicyremains available from the crate root with privatefields and fluent configuration methods. Replace imports from
opentelemetry_otlp::retrywithopentelemetry_otlp::RetryPolicy, and replacestruct literals with its
with_*methods.#3672
Retry fixes
The following fixes apply to retry behavior that was experimental before this
release:
specification. The exporter now also honors
Retry-Afteron 503 responses.RetryInfodelays returned withUnavailableresponses.RetryInfoandRetry-Afterdelays when subsequent export attempts fail.Other changes
Exporter compression configuration and behavior are unchanged; users of
.with_compression(...)need no changes. Breaking only for direct conversioncallers: removed
TryFrom<Compression>fortonic::codec::CompressionEncoding. Code explicitly converting between theseenums must map the variants itself.
Return an exporter build error when construction of a built-in reqwest HTTP
client fails instead of silently falling back to a client without the
exporter-configured timeout. Failure to spawn the blocking client's setup
thread, or a panic in that thread, is also returned instead of panicking.
Breaking Removed
Defaultfrom theTonicExporterBuilderSetandHttpExporterBuilderSettypestate markers. This also removesDefaultfromthe transport-selected exporter builders (e.g.
SpanExporterBuilder<TonicExporterBuilderSet>). Use the intended builderflow instead:
Also removed the unused
#[doc(hidden)]NoExporterConfigtype.Breaking Mark
ProtocolandCompressionas non-exhaustive so new OTLPprotocols, encodings, and compression algorithms can be added without
breaking downstream users. External exhaustive matches must add a wildcard
arm. Constructing existing variants and passing them to exporter builders is
unchanged.
Breaking Make
Protocol::from_env()crate-private. Exporter buildersalready resolve
OTEL_EXPORTER_OTLP_PROTOCOLwhen built; applications thatneed to inspect the raw environment setting should read the variable
directly.
Breaking Remove
OTEL_EXPORTER_OTLP_ENDPOINT_DEFAULT, which always heldthe HTTP default (
http://localhost:4318) despite gRPC usinghttp://localhost:4317. Omit.with_endpoint(...)to let the selectedtransport use its correct default, or provide the appropriate URL explicitly.
#3690
Breaking Restrict
MetricExporterBuilder::with_http()andwith_tonic()to builders where no transport has been selected, matching the span and log
exporter builders. Select a transport once;
with_temporality()remainsavailable before or after transport selection.
Breaking Remove the public
HttpExporterBuilderandTonicExporterBuildertransport-first APIs. Configure transports through thesignal builders instead:
HttpExporterBuilder::default()with the corresponding signalexporter builder followed by
.with_http(), then replace.build_span_exporter()or.build_log_exporter()with.build()..build_metrics_exporter(temporality)with.with_temporality(temporality).build().TonicExporterBuilder::default()with the corresponding signalexporter builder followed by
.with_tonic().Transport-specific configuration methods remain available after
.with_http()or.with_tonic().Breaking Removed the deprecated
tlsfeature alias. Replacetlswithtls-ring, or selecttls-aws-lcortls-provider-agnosticexplicitly.Exporter builder usage is unchanged. Breaking for code matching or constructing
removed error variants: Simplified
ExporterBuildErrorto the exhaustiveInvalidConfiguration(String)andInternalFailure(String)variants.The enum is no longer marked
#[non_exhaustive].Configuration errors such as invalid endpoints, missing HTTP clients,
transport/protocol mismatches, and missing compression features now use
InvalidConfiguration. Replace implementation-specific, non-exhaustivematches such as:
with an exhaustive match over the two stable categories:
Code that propagates build errors with
?without inspecting their variantsneeds no changes.
Tonic endpoint errors identify the originating environment variable when
validating the URI or reporting endpoint-related TLS setup failures.
#3691
Return an exporter build error for invalid OTLP/HTTP endpoint environment
variables instead of silently falling back to another endpoint or localhost.
Empty endpoint environment variables are now treated as unset.
Return an exporter build error for invalid OTLP/gRPC endpoint environment
variables instead of silently falling back to another endpoint or localhost.
Empty endpoint environment variables are now treated as unset.
Add
WithHttpConfig::with_max_request_body_sizeto configure the HTTP requestbody limit. OTLP/HTTP request bodies are now limited to 64 MiB by default, before and
after compression; oversized requests are discarded without being sent or
retried.
Breaking Seal
WithExportConfig,WithHttpConfig, andWithTonicConfig. These traits remain public for calling configurationmethods on OTLP builders, but can no longer be implemented for external
types.
Add support for INSECURE environment variables for gRPC (env-var-only, no builder method, per spec):
OTEL_EXPORTER_OTLP_INSECURE(generic),OTEL_EXPORTER_OTLP_TRACES_INSECURE,OTEL_EXPORTER_OTLP_METRICS_INSECURE,OTEL_EXPORTER_OTLP_LOGS_INSECURE.Per the spec, these only apply to gRPC connections. When an endpoint has no explicit scheme,
INSECURE=trueuseshttp://,INSECURE=false(default) useshttps://with auto-TLS.Breaking: Schemeless endpoints (e.g.,
collector.example.com:4317) now default tohttps://instead of being passed as-is. Set
OTEL_EXPORTER_OTLP_INSECURE=truefor plaintext connections.Endpoints with an explicit scheme (e.g.,
http://,https://,unix://) are unaffected.#774
#984
Breaking Removed the
serializefeature flag and its implicitserdedependency. This feature gated
Serialize/Deserializederives onProtocolandCompression, but the derived representations were incorrect(Rust variant names instead of spec values) and the feature only covered
these two enums. The equivalent feature was removed from the core
opentelemetrycrate in 2022.Migration: Remove
serialize(andserde, if listed) from your featurelist. If these values are part of serialisable app config, define a local
config enum or wrapper and convert it to
ProtocolorCompressionwhenbuilding the exporter.
#3711
Breaking Removed
reqwest-rustls-webpki-rootsfeature. Thewebpki-rootscargo feature wasremoved from
reqwestin v0.13.0, making this feature broken for anyone resolvingreqwest >= 0.13.0.Migration: Use
reqwest-rustlsinstead (now correctly usesreqwest/rustlswith platform nativetrust roots). If you specifically need Mozilla's embedded CA bundle, construct a custom client:
Allow to provide http client wrapped in Arc when configuring HTTP exporter. 3468
v0.32.0Compare Source
Released 2026-May-08
tls-provider-agnosticfeature flag for environments that require a custom crypto backend (e.g., OpenSSL for FIPS compliance). Enables TLS code paths without bundlingringoraws-lc-rs.build()directly onSpanExporterBuilder,MetricExporterBuilder, andLogExporterBuilder(before selecting a transport), which auto-selects the transport based on the
OTEL_EXPORTER_OTLP_PROTOCOLenvironment variable or enabled features.#3394
ExportConfig,HasExportConfig,with_export_config(),HasTonicConfig,HasHttpConfig,TonicConfig, andHttpConfigfrom public API.Use the public
WithExportConfig,WithTonicConfig, andWithHttpConfigtrait methods instead, which remain unchanged.an
https://endpoint is configured but no TLS feature (tls-ringortls-aws-lc) is enabled, instead ofsilently sending unencrypted traffic. When a TLS feature is enabled and an
https://endpoint is used withoutan explicit
.with_tls_config(), a defaultClientTlsConfigis automatically applied.#3182
exporter errors no longer include potentially sensitive server responses
(e.g., authentication tokens echoed back). Error messages returned to SDK
processors contain only the gRPC status code or HTTP status code. Full
details are logged at DEBUG level only.
#3021
grpc-tonicOTLP export fails due to a local misconfiguration. When the returned
tonic::Statuswraps a local transport error (invalid URL, connect failure,DNS), its source chain (e.g.,
"transport error: invalid URI") is appendedto the returned error so SDK processors surface it at ERROR without
requiring DEBUG logging. Server-returned gRPC status messages remain
DEBUG-only to preserve the auth-token leak safeguards from
#3021.
#3331
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL,OTEL_EXPORTER_OTLP_METRICS_PROTOCOL,OTEL_EXPORTER_OTLP_LOGS_PROTOCOL. These allow configuring different transport protocolsper signal type. Signal-specific vars take precedence over generic
OTEL_EXPORTER_OTLP_PROTOCOL.The auto-select
build()method on each exporter builder now respects the full priority chain:signal-specific env var > generic env var > feature-based default.
InvalidConfigwhen gRPC protocolis requested; gRPC transport returns
InvalidConfigwhen an HTTP protocol is requested.Protocol::default()no longer consults theOTEL_EXPORTER_OTLP_PROTOCOLenvironment variable. It now returns only the feature-based default (http-json > http-proto >
grpc-tonic). Protocol resolution from environment variables is handled internally by the
exporter builders. Users who relied on
Protocol::default()to read env vars should useProtocol::from_env()instead.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCEenvironment variableto configure metrics temporality. Accepted values:
cumulative(default),delta,lowmemory(case-insensitive). Programmatic.with_temporality()overrides the env var.NoHttpClienterror when multiple HTTP client features are enabled by using priority-based selection (reqwest-client>hyper-client>reqwest-blocking-client). #2994internal-logsfeature inopentelemetry-otlpto reduce unnecessary dependencies3191shutdown_with_timeout()when usinggrpc-tonic.tlsfeature in favor of explicittls-ringandtls-aws-lcfeatures.Migration: Replace
tlswithtls-ring(ortls-aws-lc). Users oftls-rootsortls-webpki-rootsmust now also enable one of these.v0.31.1: opentelemetry-otlp 0.31.1Compare Source
What's Changed
Full Changelog: open-telemetry/opentelemetry-rust@v0.31.0...opentelemetry-otlp-0.31.1
v0.31.0Compare Source
Released 2025-Sep-25
opentelemetry-protoandopentelemetry-httpdependency version to 0.31.0gzip-httpandzstd-httpfeature flagsThis behaviour is opt in via the
experimental-grpc-retryandexperimental-http-retryflags on this crate. You can customize the retry policy using thewith_retry_policyon the exporter builders.v0.30.0Compare Source
Released 2025-May-23
opentelemetrydependency version to 0.30opentelemetry_sdkdependency version to 0.30opentelemetry-httpdependency version to 0.30opentelemetry-protodependency version to 0.30tonicdependency version to 0.13tonictypes undertonic_types2898
MetricExporterBuilder,SpanExporterBuilder, andLogExporterBuildertypes, enabling users to directly reference and use thesebuilder types for metrics, traces, and logs exporters.
2966
v0.29.0Compare Source
Released 2025-Mar-21
Update
opentelemetrydependency version to 0.29Update
opentelemetry_sdkdependency version to 0.29Update
opentelemetry-httpdependency version to 0.29Update
opentelemetry-protodependency version to 0.29The
OTEL_EXPORTER_OTLP_TIMEOUT,OTEL_EXPORTER_OTLP_TRACES_TIMEOUT,OTEL_EXPORTER_OTLP_METRICS_TIMEOUTandOTEL_EXPORTER_OTLP_LOGS_TIMEOUTare changed from seconds to milliseconds.Fixed
.with_headers()inHttpExporterBuilderto correctly support multiple key/value pairs. #2699Fixed
#2770
partially to properly handle
shutdown()when usinghttp. (tonicstilldoes not do proper shutdown)
Breaking
ExporterBuilder's build() method now Result with
ExporterBuildErrorbeing theError variant. Previously it returned signal specific errors like
LogErrorfrom the
opentelemetry_sdk, which are no longer part of the sdk. No changesrequired if you were using unwrap/expect. If you were matching on the returning
Error enum, replace with the enum
ExporterBuildError. Unlike the previousErrorwhich contained many variants unrelated to building an exporter, thenew one returns specific variants applicable to building an exporter. Some
variants might be applicable only on select features.
Also, now unused
Errorenum is removed.Breaking
ExportConfig'stimeoutfield is now optional(Option<Duration>)Breaking Export configuration done via code is final. ENV variables cannot be used to override the code config.
Do not use code based config, if there is desire to control the settings via ENV variables.
List of ENV variables and corresponding setting being affected by this change.
OTEL_EXPORTER_OTLP_ENDPOINT->ExportConfig.endpointOTEL_EXPORTER_OTLP_TIMEOUT->ExportConfig.timeoutv0.28.0Compare Source
Released 2025-Feb-10
opentelemetrydependency version to 0.28.opentelemetry_sdkdependency version to 0.28.opentelemetry-httpdependency version to 0.28.opentelemetry-protodependency version to 0.28.LogRecord's
event_name()is now automatically populated on the newly added"event_name" field in LogRecord proto definition.
"reqwest-blocking-client" features as default, to align with the
specification.
2516
opentelemetry_otlp::metrics::MetricsClientand
MetricExporter::new(..)method. UseMetricExporter::builder()...build()to obtainMetricExporter.export timeout interval configured in below order
OTEL_EXPORTER_OTLP_TRACES_TIMEOUT,OTEL_EXPORTER_OTLP_LOGS_TIMEOUTorOTEL_EXPORTER_OTLP_TIMEOUT.OTEL_EXPORTER_OTLP_TIMEOUTenv variable.with_http().with_timeout()API method ofLogExporterBuilderand `SpanExConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.