opentelemetry-otlp
Exporter for the OpenTelemetry Collector
0.32.0
141M downloads/mo
#647 most downloaded on crates.io
open-telemetry/opentelemetry-rust
What this package is like to depend on
Last release 3 months ago
08 May 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 25 of 26 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
26 releases · first in 2020
3 releases in the last 12 months
see the full history below
Release timeline
26 releases · Aug 2020 to May 2026Releases
latest 26-
0.32.008 May 2026Release notes
Open source →Released 2026-May-08
- Add
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. - Add
build()directly onSpanExporterBuilder,MetricExporterBuilder, andLogExporterBuilder(before selecting a transport), which auto-selects the transport based on theOTEL_EXPORTER_OTLP_PROTOCOLenvironment variable or enabled features. #3394 - Breaking Removed
ExportConfig,HasExportConfig,with_export_config(),HasTonicConfig,HasHttpConfig,TonicConfig, andHttpConfigfrom public API. Use the publicWithExportConfig,WithTonicConfig, andWithHttpConfigtrait methods instead, which remain unchanged. - The gRPC/tonic OTLP exporter's build method now returns an error for all signals (traces, metrics, logs) when
an
https://endpoint is configured but no TLS feature (tls-ringortls-aws-lc) is enabled, instead of silently sending unencrypted traffic. When a TLS feature is enabled and anhttps://endpoint is used without an explicit.with_tls_config(), a defaultClientTlsConfigis automatically applied. #3182 - Prevent auth tokens from leaking in export error messages. gRPC and HTTP 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
- Surface pre-flight transport error details at ERROR level when
grpc-tonicOTLP export fails due to a local misconfiguration. When the returnedtonic::Statuswraps a local transport error (invalid URL, connect failure, DNS), its source chain (e.g.,"transport error: invalid URI") is appended to 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 - Add support for per-signal protocol environment variables:
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL,OTEL_EXPORTER_OTLP_METRICS_PROTOCOL,OTEL_EXPORTER_OTLP_LOGS_PROTOCOL. These allow configuring different transport protocols per signal type. Signal-specific vars take precedence over genericOTEL_EXPORTER_OTLP_PROTOCOL. The auto-selectbuild()method on each exporter builder now respects the full priority chain: signal-specific env var > generic env var > feature-based default. - Transport/protocol mismatch validation: HTTP transport returns
InvalidConfigwhen gRPC protocol is requested; gRPC transport returnsInvalidConfigwhen an HTTP protocol is requested. - Breaking:
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 onProtocol::default()to read env vars should useProtocol::from_env()instead. - Add support for
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCEenvironment variable to configure metrics temporality. Accepted values:cumulative(default),delta,lowmemory(case-insensitive). Programmatic.with_temporality()overrides the env var. - Fix
NoHttpClienterror when multiple HTTP client features are enabled by using priority-based selection (reqwest-client>hyper-client>reqwest-blocking-client). #2994 - Add partial success response handling for OTLP exporters (traces, metrics, logs) per OTLP spec. Exporters now log warnings when the server returns partial success responses with rejected items and error messages. #865
- Refactor
internal-logsfeature inopentelemetry-otlpto reduce unnecessary dependencies3191 - Fixed [#2777](https://github.com/open-telemetry/opentelemetry rust/issues/2777) to properly handle
shutdown_with_timeout()when usinggrpc-tonic. - Deprecate
tlsfeature in favor of explicittls-ringandtls-aws-lcfeatures. Migration: Replacetlswithtls-ring(ortls-aws-lc). Users oftls-rootsortls-webpki-rootsmust now also enable one of these. - Prevent logging of header values in OTLP tonic exporter #3465
- Add
-
0.31.119 Mar 2026Nothing published for this version
-
0.31.025 Sep 2025Release notes
Open source →Released 2025-Sep-25
- Update
opentelemetry-protoandopentelemetry-httpdependency version to 0.31.0 - Add HTTP compression support with
gzip-httpandzstd-httpfeature flags - Add retry with exponential backoff and throttling support for HTTP and gRPC exporters
This 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.
- Update
-
0.30.023 May 2025Release notes
Open source →Released 2025-May-23
- Update
opentelemetrydependency version to 0.30 - Update
opentelemetry_sdkdependency version to 0.30 - Update
opentelemetry-httpdependency version to 0.30 - Update
opentelemetry-protodependency version to 0.30 - Update
tonicdependency version to 0.13 - Re-export
tonictypes undertonic_types2898 - Publicly re-exported
MetricExporterBuilder,SpanExporterBuilder, andLogExporterBuildertypes, enabling users to directly reference and use these builder types for metrics, traces, and logs exporters. 2966
- Update
-
0.29.022 Mar 2025Release notes
Open source →Released 2025-Mar-21
-
Update
opentelemetrydependency version to 0.29 -
Update
opentelemetry_sdkdependency version to 0.29 -
Update
opentelemetry-httpdependency version to 0.29 -
Update
opentelemetry-protodependency version to 0.29 -
The
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. #2699 -
Fixed #2770 partially to properly handle
shutdown()when usinghttp. (tonicstill does not do proper shutdown) -
Breaking ExporterBuilder's build() method now Result with
ExporterBuildErrorbeing the Error variant. Previously it returned signal specific errors likeLogErrorfrom theopentelemetry_sdk, which are no longer part of the sdk. No changes required if you were using unwrap/expect. If you were matching on the returning Error enum, replace with the enumExporterBuildError. Unlike the previousErrorwhich contained many variants unrelated to building an exporter, the new one returns specific variants applicable to building an exporter. Some variants might be applicable only on select features. Also, now unusedErrorenum 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.timeout
-
-
0.28.010 Feb 2025Release notes
Open source →Released 2025-Feb-10
- Update
opentelemetrydependency version to 0.28. - Update
opentelemetry_sdkdependency version to 0.28. - Update
opentelemetry-httpdependency version to 0.28. - Update
opentelemetry-protodependency version to 0.28. - Bump msrv to 1.75.0.
- Feature flag "populate-logs-event-name" is removed as no longer relevant.
LogRecord's
event_name()is now automatically populated on the newly added "event_name" field in LogRecord proto definition. - Remove "grpc-tonic" feature from default, and instead add "http-proto" and "reqwest-blocking-client" features as default, to align with the specification. 2516
- Remove unnecessarily public trait
opentelemetry_otlp::metrics::MetricsClientandMetricExporter::new(..)method. UseMetricExporter::builder()...build()to obtainMetricExporter. - The HTTP clients (reqwest, reqwest-blocking, hyper) now support the
export timeout interval configured in below order
- Signal specific env variable
OTEL_EXPORTER_OTLP_TRACES_TIMEOUT,OTEL_EXPORTER_OTLP_LOGS_TIMEOUTorOTEL_EXPORTER_OTLP_TIMEOUT. OTEL_EXPORTER_OTLP_TIMEOUTenv variable.with_http().with_timeout()API method ofLogExporterBuilderandSpanExporterBuilderandMetricsExporterBuilder.- The default interval of 10 seconds is used if none is configured.
- Signal specific env variable
Release notes
Open source →Released 2025-Feb-10
- Update to v1.29.0 of the semantic conventions.
- Bump msrv to 1.75.0.
- Update
-
0.27.012 Nov 2024Release notes
Open source →Released 2024-Nov-11
-
Update
opentelemetrydependency version to 0.27 -
Update
opentelemetry_sdkdependency version to 0.27 -
Update
opentelemetry-httpdependency version to 0.27 -
Update
opentelemetry-protodependency version to 0.27 -
BREAKING:
-
(#2217) Replaced: The
MetricsExporterBuilderinterface is modified fromwith_temporality_selectortowith_temporalityexample can be seen below: Previous Signature:MetricsExporterBuilder::default().with_temporality_selector(DeltaTemporalitySelector::new())Updated Signature:
MetricsExporterBuilder::default().with_temporality(opentelemetry_sdk::metrics::Temporality::Delta) -
(#2221) Replaced:
- The
opentelemetry_otlp::new_pipeline().{trace,logging,metrics}()interface is now replaced with{TracerProvider,SdkMeterProvider,LoggerProvider}::builder(). - The
opentelemetry_otlp::new_exporter()interface is now replaced with{SpanExporter,MetricsExporter,LogExporter}::builder().
Pull request #2221 has a detailed migration guide in the description. See example below, and basic-otlp for more details:
Previous Signature:
let logger_provider: LoggerProvider = opentelemetry_otlp::new_pipeline() .logging() .with_resource(RESOURCE.clone()) .with_exporter( opentelemetry_otlp::new_exporter() .tonic() .with_endpoint("http://localhost:4317") ) .install_batch(runtime::Tokio)?;Updated Signature:
let exporter = LogExporter::builder() .with_tonic() .with_endpoint("http://localhost:4317") .build()?; Ok(LoggerProvider::builder() .with_resource(RESOURCE.clone()) .with_batch_exporter(exporter, runtime::Tokio) .build()) - The
-
Renamed
- (#2255): de-pluralize Metric types.
MetricsExporter->MetricExporterMetricsExporterBuilder->MetricExporterBuilder
- (#2255): de-pluralize Metric types.
-
#2263 Support
hyperclient for opentelemetry-otlp. This can be enabled using flaghyper-client. Refer example: https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-otlp/examples/basic-otlp-http
-
Release notes
Open source → -
-
0.26.001 Oct 2024Release notes
Open source →Released 2024-Sep-30
- Update
opentelemetrydependency version to 0.26 - Update
opentelemetry_sdkdependency version to 0.26 - Update
opentelemetry-httpdependency version to 0.26 - Update
opentelemetry-protodependency version to 0.26 - Bump MSRV to 1.71.1 2140
Release notes
Open source →Released 2024-Sep-30
Changed
- Starting with this version, this crate will use Weaver for the generation of the semantic conventions.
- Breaking Introduced a new feature
semconv_experimentalto enable experimental semantic conventions. This feature is disabled by default.
- Update
-
0.25.009 Sep 2024Release notes
Open source →- Update
opentelemetrydependency version to 0.25 - Update
opentelemetry_sdkdependency version to 0.25 - Update
opentelemetry-httpdependency version to 0.25 - Update
opentelemetry-protodependency version to 0.25 - Starting with this version, this crate will align with
opentelemetrycrate on major,minor versions. - Breaking
The logrecord event-name is added as an attribute only if the feature flag
populate-logs-event-nameis enabled. The name of the attribute is changed from "name" to "event.name". 1994, 2050
- Update
-
0.17.015 Jul 2024Release notes
Open source →- Add "metrics", "logs" to default features. With this, default feature list is "trace", "metrics" and "logs".
- Breaking
OtlpMetricPipeline.build()no longer invoke theglobal::set_meter_provider. User who setup the pipeline must do it themselves usingglobal::set_meter_provider(meter_provider.clone());. - Add
with_resourceonOtlpLogPipeline, replacing thewith_configmethod. Instead of using.with_config(Config::default().with_resource(RESOURCE::default()))users must now use.with_resource(RESOURCE::default())to configure Resource when usingOtlpLogPipeline. - Breaking The methods
OtlpTracePipeline::install_simple()andOtlpTracePipeline::install_batch()would now returnTracerProviderinstead ofTracer. These methods would also no longer set the global tracer provider. It would now be the responsibility of users to set it by callingglobal::set_tracer_provider(tracer_provider.clone());. Refer to the basic-otlp and basic-otlp-http examples on how to initialize OTLP Trace Exporter. - Breaking Correct the misspelling of "webkpi" to "webpki" in features #1842
- Bump MSRV to 1.70 #1840
- Fixing the OTLP HTTP/JSON exporter. #1882 - The exporter was broken in the previous release.
- Breaking 1869 The OTLP logs exporter now overrides the InstrumentationScope::name field with the
targetfromLogRecord, if target is populated. - Groups batch of
LogRecordandSpanby their resource and instrumentation scope before exporting, for better efficiency #1873. - Breaking Update to
httpv1 andtonicv0.12 #1674 - Update
opentelemetrydependency version to 0.24 - Update
opentelemetry_sdkdependency version to 0.24 - Update
opentelemetry-httpdependency version to 0.13 - Update
opentelemetry-protodependency version to 0.7
-
0.16.015 May 2024Release notes
Open source →Fixed
- URL encoded values in
OTEL_EXPORTER_OTLP_HEADERSare now correctly decoded. #1578 - OTLP exporter will not change the URL added through
ExportConfig#1706 - Default grpc endpoint will not have path based on signal(e.g
/v1/traces) #1706 - Fix feature flags for
OTEL_EXPORTER_OTLP_PROTOCOL_DEFAULT#1746
Added
- Added
DeltaTemporalitySelector(#1568) - Add
webpki-rootsfeatures toreqwestandtonicbackends
Changed
- Breaking Remove global provider for Logs #1691
- The method OtlpLogPipeline::install_simple() and OtlpLogPipeline::install_batch() now return
LoggerProviderinstead ofLogger. Refer to the basic-otlp and basic-otlp-http examples for how to initialize OTLP Log Exporter to use with OpenTelemetryLogBridge and OpenTelemetryTracingBridge respectively.
- The method OtlpLogPipeline::install_simple() and OtlpLogPipeline::install_batch() now return
- Update
opentelemetrydependency version to 0.23 - Update
opentelemetry_sdkdependency version to 0.23 - Update
opentelemetry-httpdependency version to 0.12 - Update
opentelemetry-protodependency version to 0.6
Release notes
Open source →Changed
- Breaking Moved duplicated (and unrelated) attributes from
opentelemetry_semantic_conventions::traceandopentelemetry_semantic_conventions::resourceintoopentelemetry_semantic_conventions::attribute(which now contains all semantic attributes).traceandresourcenow only contain references to attributes which fall under their respective category.
Added
- Created
opentelemetry_semantic_conventions::metricto store metric semantic conventions.
- URL encoded values in
-
0.15.025 Feb 2024Release notes
Open source →Added
- Support custom channels in topic exporters #1335
- Allow specifying OTLP Tonic metadata from env variable #1377
Changed
- Update to tonic 0.11 and prost 0.12 #1536
Fixed
- Fix
tonic()to the use correct port. #1556
Removed
-
0.14.006 Nov 2023Release notes
Open source →Added
- Add
build_{signal}_exportermethods to client builders #1187 - Add
grpciometrics exporter #1202 - Allow specifying OTLP HTTP headers from env variable #1290
Changed
Release notes
Open source →Changed
- Breaking Replaced Key constants with &'static str for tracing compatibility #1334
- Add
-
0.13.030 Jul 2023Release notes
Open source →Added
Changed
- make the tonic/transport feature optional #985
- update to opentelemetry-api v0.20.0
Fixed
- Fix a missing import when http-proto is enabled without grpc-sys #1081
-
0.12.026 Mar 2023Release notes
Open source →Added
Changed
- Update
opentelemetryto 0.19. - Update
opentelemetry-semantic-conventionsto 0.11. - Update
opentelemetry-httpto 0.8. - Bump MSRV to 1.57 #953.
- Add
User-Agentheader on all exporters #896. - Improve OTLP exporter environment variable handling #912.
- Fix the issue where tonic exporter builder ignored provided metadata #937.
- Export
MetricsExporterBuilder#943. - Report OTLP http export errors #945.
- Change to export using v0.19.0 protobuf definitions. #989.
- Update dependencies and bump MSRV to 1.60 #969.
- Update
-
0.11.013 Sep 2022Release notes
Open source →Changed
- reduce
tokiofeature requirements #750 - Update to opentelemetry v0.18.0
- Update to opentelemetry-http v0.7.0
- Update
tonicto 0.7 #783 - Automatically add traces / metrics paths #806
- reduce
-
0.10.022 Jan 2022Release notes
Open source →Changed
- Update to opentelemetry v0.17.0
- Update to opentelemetry-http v0.6.0
- Update
tonicto 0.6 #660
-
0.9.007 Aug 2021Release notes
Open source →Changed
- Merge metrics and tracing pipeline #585
- Update to opentelemetry v0.16.0
Fixed
MetricsExporterBuilderdropsexporter_pipeline#590- Improve error messages #603
- Upgrade
tonicto0.5.x#597
-
0.8.017 Jun 2021Release notes
Open source →Changed
- Update grpcio version and add the coverage badge #556
- Update to opentelemetry v0.15.0
-
0.7.010 May 2021Release notes
Open source →Added
- adding otlp http transport, using proto binary #516
Fixed
- docs cannot compile #507
- exporter cannot merge IntSum correctly. #518
- update metrics proto and metric transformation #535
Changed
- Allow users to bring their own tonic channel #515
- Remove default surf features #546
- Update to opentelemetry v0.14.0
v0.6.0
Added
- Examples on how to connect to an external otlp using tonic, tls and tokio #449
- Examples on how to connect to an external otlp using grpcio and tls #450
with_envmethod forOtlpPipelineBuilderto use environment variables to config otlp pipeline #451- Update
tracing-grpcexample to include extractors and injectors #464 - Mentioned
service.nameresource in README #476
Changed
- Update to opentelemetry v0.13.0
- Update
tonic-builddependency to 0.4 #463 - Update the opentelemetry pipeline to use API to choose grpc layer instead of feature #467
- Rename trace config with_default_sampler to with_sampler #482
Removed
- Removed
from_envand use environment variables to initialize the configurations by default #459 - Removed support for running tonic without tokio runtime #483
Release notes
Open source →Changed
- Update to spec version 1.4.0 #570
- Update to opentelemetry v0.15.0
-
0.6.024 Mar 2021Release notes
Open source →Changed
- Update to spec version 1.3.0 #547
- Update to opentelemetry v0.14.0
-
0.5.022 Jan 2021Release notes
Open source →Added
- Otlp metric exporter #402
- Otlp exporter integration test #424
Changed
- Update to opentelemetry v0.12.0
- Update tokio to v1 #421
Release notes
Open source →Changed
- Update to opentelemetry v0.13.0
Removed
- Removed
from_envand use environment variables to initialize the configurations by default #459
-
0.4.029 Dec 2020Release notes
Open source →Added
- Tonic support #352
- Add openssl feature flags for grpcio #367
Changed
- Update to opentelemetry v0.11.0
- Update default otlp port to
4317#388
Fixed
- Propagate
Resourceinformation #366 - Propagate
Resourcein tonic as well #390
-
0.3.010 Nov 2020 -
0.2.016 Oct 2020 -
0.1.014 Aug 2020