tailcall
tailcall copied to clipboard
fix(deps): update opentelemetry-rust monorepo to 0.29.0
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| opentelemetry (source) | dependencies | minor | 0.23.0 -> 0.29.0 |
| opentelemetry-appender-tracing (source) | dependencies | minor | 0.4.0 -> 0.29.0 |
| opentelemetry-http (source) | dependencies | minor | 0.12.0 -> 0.29.0 |
| opentelemetry-otlp (source) | dependencies | minor | 0.16.0 -> 0.29.0 |
| opentelemetry-prometheus (source) | dependencies | minor | 0.16.0 -> 0.29.0 |
| opentelemetry-semantic-conventions (source) | dependencies | minor | 0.15.0 -> 0.29.0 |
| opentelemetry-stdout (source) | dependencies | minor | 0.4.0 -> 0.29.0 |
| opentelemetry_sdk (source) | dependencies | minor | 0.23.0 -> 0.29.0 |
Release Notes
open-telemetry/opentelemetry-rust (opentelemetry)
v0.29.0
Released 2025-Mar-21
- Breaking Moved
ExportErrortrait fromopentelemetry::trace::ExportErrortoopentelemetry_sdk::export::ExportError - Breaking Moved
TraceErrorenum fromopentelemetry::trace::TraceErrortoopentelemetry_sdk::trace::TraceError - Breaking Moved
TraceResulttype alias fromopentelemetry::trace::TraceResulttoopentelemetry_sdk::trace::TraceResult - Bug Fix:
InstrumentationScopeimplementation forPartialEqandHashfixed to include Attributes also. - Breaking changes for baggage users: #2717
- Changed value type of
BaggagefromValuetoStringValue - Updated
Baggageconstants to reflect latest standard (MAX_KEY_VALUE_PAIRS- 180 -> 64,MAX_BYTES_FOR_ONE_PAIR- removed) and increased insert performance see #2284. - Align
Baggage.remove()signature with.get()to take the key as a reference Baggagecan'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.
- Changed value type of
- Changed
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. - Added additional
name: Option<&str>parameter to theevent_enabledmethod on theLoggertrait. This allows implementations (SDK, processor, exporters) to leverage this additional information to determine if an event is enabled.
v0.28.0
Released 2025-Feb-10
- Bump msrv to 1.75.0.
- Breaking
opentelemetry::global::shutdown_tracer_provider()Removed from this crate, should now usetracer_provider.shutdown()see #2369 for a migration example. - Breaking Removed unused
opentelemetry::PropagationErrorstruct.
v0.27.1
Released 2024-Nov-27
v0.27.0
Released 2024-Nov-11
- Bump MSRV to 1.70 #2179
- Add
LogRecord::set_trace_context; an optional method conditional on thetracefeature for setting trace context on a log record. - Removed unnecessary public methods named
as_anyfromAsyncInstrumenttrait and the implementing instruments:ObservableCounter,ObservableGauge, andObservableUpDownCounter#2187 - Introduced
SyncInstrumenttrait to replace the individual synchronous instrument traits (SyncCounter,SyncGauge,SyncHistogram,SyncUpDownCounter) which are meant for SDK implementation. #2207 - Ensured that
observemethod on asynchronous instruments can only be called inside a callback. This was done by removing the implementation ofAsyncInstrumenttrait for each of the asynchronous instruments. #2210 - Removed
PartialOrdandOrdimplementations forKeyValue. #2215 - Breaking change for exporter authors: Marked
KeyValuerelated structs and enums asnon_exhaustive. #2228 - Breaking change for log exporter authors: Marked
AnyValueenum asnon_exhaustive. #2230 - Breaking change for Metrics users: The
initmethod 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. #2227
Before:
let counter = meter.u64_counter("my_counter").init();
Now:
let counter = meter.u64_counter("my_counter").build();
-
Breaking change: #2220
- Removed deprecated method
InstrumentationLibrary::new - Renamed
InstrumentationLibrarytoInstrumentationScope - Renamed
InstrumentationLibraryBuildertoInstrumentationScopeBuilder - Removed deprecated methods
LoggerProvider::versioned_loggerandTracerProvider::versioned_tracer - Removed methods
LoggerProvider::logger_builder,TracerProvider::tracer_builderandMeterProvider::versioned_meter - Replaced these methods with
LoggerProvider::logger_with_scope,TracerProvider::logger_with_scope,MeterProvider::meter_with_scope - Replaced
global::meter_with_versionwithglobal::meter_with_scope - Added
global::tracer_with_scope - Refer to PR description for migration guide.
- Removed deprecated method
-
Breaking change: replaced
InstrumentationScopepublic attributes by getters #2275 -
Breaking change: #2260
- Removed
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.- The default behavior of
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. - Refer to PR description for migration guide. Also refer to self-diagnostics example to learn how to view internal logs in stdout using
tracing::fmtlayer.
- Removed
-
Breaking change for exporter/processor authors: #2266
- Moved
ExportErrortrait fromopentelemetry::ExportErrortoopentelemetry_sdk::export::ExportError - Created new trait
opentelemetry::trace::ExportErrorfor trace API. This would be eventually be consolidated with ExportError in the SDK. - Moved
LogErrorenum fromopentelemetry::logs::LogErrortoopentelemetry_sdk::logs::LogError - Moved
LogResulttype alias fromopentelemetry::logs::LogResulttoopentelemetry_sdk::logs::LogResult - Moved
MetricErrorenum fromopentelemetry::metrics::MetricErrortoopentelemetry_sdk::metrics::MetricError - Moved
MetricResulttype 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.
- Moved
-
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.0
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:
NoopMeterCoretoNoopMeter
-
-
Added
with_boundariesAPI to allow users to provide custom bounds for Histogram instruments. #2135
v0.25.0
- BREAKING #1993 Box complex types in AnyValue enum Before:
#[derive(Debug, Clone, PartialEq)]
pub enum AnyValue {
/// An integer value
Int(i64),
/// A double value
Double(f64),
/// A string value
String(StringValue),
/// A boolean value
Boolean(bool),
/// A byte array
Bytes(Vec<u8>),
/// An array of `Any` values
ListAny(Vec<AnyValue>),
/// A map of string keys to `Any` values, arbitrarily nested.
Map(HashMap<Key, AnyValue>),
}
After:
#[derive(Debug, Clone, PartialEq)]
pub enum AnyValue {
/// An integer value
Int(i64),
/// A double value
Double(f64),
/// A string value
String(StringValue),
/// A boolean value
Boolean(bool),
/// A byte array
Bytes(Box<Vec<u8>>),
/// An array of `Any` values
ListAny(Box<Vec<AnyValue>>),
/// A map of string keys to `Any` values, arbitrarily nested.
Map(Box<HashMap<Key, AnyValue>>),
}
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_callback to provide the callback, provide
them using with_callback method, while creating the Observable instrument
itself.
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.0
-
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 metrics aggregation purposes only. -
Removed
Unitstruct for specifying Instrument units. Unit is treated as an opaque 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.
open-telemetry/opentelemetry-rust (opentelemetry-appender-tracing)
v0.29.0
Released 2025-Mar-21
Fixes 1682. "spec_unstable_logs_enabled" feature now do not suppress logs for other layers.
The special treatment of the "message" field has been extended when recording string values. With this change, when a log is emitted with a field named "message" (and string value), its value is directly assigned to the LogRecord’s body rather than being stored as an attribute named "message". This offers a slight performance improvement over previous.
For example, the below will now produce LogRecord with the message value populated as LogRecord's body:
error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "[email protected]", message = "This is an example message");
Previously, Body was only populated when the below style was used.
error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "[email protected]", "This is an example message");
This style, while slightly slower, should still be used when the value is not a simple string, but require format arguments as in the below example.
error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "[email protected]", "This is an example message with format arguments {} and {}", "foo", "bar");
Fixes 2658
InstrumentationScope(Logger) used by the appender now uses an empty ("") named
Logger. Previously, a Logger with name and version of the crate was used.
Receivers (processors, exporters) are expected to use LogRecord.target() as
scope name. This is already done in OTLP Exporters, so this change should be
transparent to most users.
-
Passes event name to the
event_enabledmethod on theLogger. This allows implementations (SDK, processor, exporters) to leverage this additional information to determine if an event is enabled. -
u64,i128,u128andusizevalues are stored asopentelemetry::logs::AnyValue::Intwhen conversion is feasible. Otherwise stored asopentelemetry::logs::AnyValue::String. This avoids unnecessary string allocation when values can be represented in their original types. -
Byte arrays are stored as
opentelemetry::logs::AnyValue::Bytesinstead of string. -
Errorfields are reported using attribute named "exception.message". For example, the below will now report an attribute named "exception.message", instead of previously reporting the user provided attribute "error".error!(....error = &OTelSdkError::AlreadyShutdown as &dyn std::error::Error...) -
perf - small perf improvement by avoiding string allocation of
target -
Update
opentelemetrydependency version to 0.29.
v0.28.1
Released 2025-Feb-12
- New experimental feature to use trace_id & span_id from spans created through the tracing crate (experimental_use_tracing_span_context) #2438
v0.28.0
Released 2025-Feb-10
- Update
opentelemetrydependency version to 0.28. - Bump msrv to 1.75.0.
v0.27.0
Released 2024-Nov-11
-
Update
opentelemetrydependency version to 0.27 -
Bump MSRV to 1.70 #2179
-
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.0
Released 2024-Sep-30
- Update
opentelemetrydependency version to 0.26 - 2101 The
logevents emitted via thetracingpipeline using thelog-tracingcrate no longer include the target metadata as attributes. Exporters or backends that rely on this attribute should now access the target directly from theLogRecord::targetfield.
v0.25.0
- Update
opentelemetrydependency version to 0.25 - Starting with this version, this crate will align with
opentelemetrycrate on major,minor versions. - Reduce heap allocation by using
&'static strforSeverityText.
v0.5.0
-
1869 Utilize the
LogRecord::set_target()method to pass the tracing target to the SDK. Exporters might use the target to override the instrumentation scope, which previously contained "opentelemetry-appender-tracing". -
Breaking 1928 Insert tracing event name into LogRecord::event_name instead of attributes.
- If using a custom exporter, then they must serialize this field directly from LogRecord::event_name instead of iterating over the attributes. OTLP Exporter is modified to handle this.
-
Update
opentelemetrydependency version to 0.24
open-telemetry/opentelemetry-rust (opentelemetry-http)
v0.29.0
Released 2025-Mar-21
- Update
opentelemetrydependency version to 0.29.
v0.28.0
Released 2025-Feb-10
- Update
opentelemetrydependency version to 0.28. - Bump msrv to 1.75.0.
- Add "internal-logs" feature flag (enabled by default), and emit internal logs via
tracingcrate. - Add
HttpClient::send_byteswithbytes::Bytesrequest payload and deprecate oldHttpClient::sendfunction.
v0.27.0
Released 2024-Nov-08
-
Update
opentelemetrydependency version to 0.27 -
Bump MSRV to 1.70 #2179
v0.26.0
Released 2024-Sep-30
- Update
opentelemetrydependency version to 0.26
v0.25.0
- Update
opentelemetrydependency version to 0.25 - Starting with this version, this crate will align with
opentelemetrycrate on major,minor versions.
v0.13.0
open-telemetry/opentelemetry-rust (opentelemetry-otlp)
v0.29.0
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 miliseconds. -
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
v0.28.0
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
v0.27.0
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
-
v0.26.0
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
v0.25.0
- 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
v0.17.0
- 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
open-telemetry/opentelemetry-rust (opentelemetry-prometheus)
v0.29.0
- Update
opentelemetrydependency version to 0.29 - Update
opentelemetry_sdkdependency version to 0.29 - Update
opentelemetry-semantic-conventionsdependency version to 0.29
v0.28.0
- Update
opentelemetrydependency version to 0.28 - Update
opentelemetry_sdkdependency version to 0.28 - Update
opentelemetry-semantic-conventionsdependency version to 0.28 - Bump msrv to 1.75.0.
v0.27.0
- Update
opentelemetrydependency version to 0.27 - Update
opentelemetry_sdkdependency version to 0.27 - Update
opentelemetry-semantic-conventionsdependency version to 0.27
v0.17.0
Changed
- Update
opentelemetrydependency version to 0.24 - Update
opentelemetry_sdkdependency version to 0.24 - Update
opentelemetry-semantic-conventionsdependency version to 0.16
open-telemetry/opentelemetry-rust (opentelemetry-semantic-conventions)
v0.29.0
Released 2025-Mar-21
- Update to v1.31.0 of the semantic conventions.
v0.28.0
Released 2025-Feb-10
- Update to v1.29.0 of the semantic conventions.
- Bump msrv to 1.75.0.
v0.27.0
Released 2024-Nov-11
v0.26.0
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.
v0.25.0
Changed
- Starting with this version, this crate will align with
opentelemetrycrate on major,minor versions. - Update to v1.27.0 of the semantic conventions. #2000
v0.16.0
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.
open-telemetry/opentelemetry-rust (opentelemetry-stdout)
v0.29.0
Released 2025-Mar-21
- Update
opentelemetrydependency version to 0.29. - Update
opentelemetry_sdkdependency version to 0.29.
v0.28.0
Released 2025-Feb-10
- Update
opentelemetrydependency version to 0.28. - Update
opentelemetry_sdkdependency version to 0.28. - Bump msrv to 1.75.0.
- Breaking time fields,
StartTimeandEndTimeis printed on aggregation (Sum, Gauge, Histogram, ExpoHistogram) with 2 tabs, previously it was on aggregation data point, with 3 tabs, see #2377 and #2411. - Removed unused dependency on
ordered-float. - Feature flag "populate-logs-event-name" is removed as no longer relevant.
LogRecord's
event_name()is now automatically displayed.
v0.27.0
Released 2024-Nov-11
-
Update
opentelemetrydependency version to 0.27 -
Update
opentelemetry_sdkdependency version to 0.27 -
Bump MSRV to 1.70 #2179
-
BREAKING
- Replaced
- (#2217): The
MetricsExporterBuilderinterface is modified fromwith_temporality_selectortowith_temporalityexample can be seen below: Previous Signature:
Updated Signature:MetricsExporterBuilder::default().with_temporality_selector(DeltaTemporalitySelector::new())MetricsExporterBuilder::default().with_temporality(opentelemetry_sdk::metrics::Temporality::Delta) - (#2217): The
- Renamed
- (#2255): de-pluralize Metric types.
MetricsExporter->MetricExporterMetricsExporterBuilder->MetricExporterBuilder
- (#2255): de-pluralize Metric types.
- Replaced
v0.26.0
Released 2024-Sep-30
- Update
opentelemetrydependency version to 0.26 - Update
opentelemetry_sdkdependency version to 0.26
v0.25.0
- Update
opentelemetrydependency version to 0.25 - Update
opentelemetry_sdkdependency version to 0.25 - Starting with this version, this crate will align with
opentelemetrycrate on major,minor versions. - Breaking 1994 The logrecord event-name is added as attribute with
key
nameonly if the feature flagpopulate-logs-event-nameis enabled. - Breaking 2040 Simplified stdout exporter:
- Now only supports writing to stdout, removing ability to send telemetry to other streams.
- Output format improved for better human readability.
- Note: This exporter is intended for learning and debugging purposes only. Not recommended for production use or automated parsing.
v0.5.0
- Update
opentelemetrydependency version to 0.24 - Update
opentelemetry_sdkdependency version to 0.24
open-telemetry/opentelemetry-rust (opentelemetry_sdk)
v0.29.0
Released 2025-Mar-21
- Update
opentelemetrydependency to 0.29. - Update
opentelemetry-httpdependency to 0.29. - Breaking: The
Runtimetrait has been simplified and refined. See the #2641 for the changes. - Removed
async-stdsupport forRuntime, asasync-stdcrate is deprecated. - Calls to
MeterProviderBuilder::with_resource,TracerProviderBuilder::with_resource,LoggerProviderBuilder::with_resourceare now additive (#2677). - Moved
ExportErrortrait fromopentelemetry::trace::ExportErrortoopentelemetry_sdk::export::ExportError - Moved
TraceErrorenum fromopentelemetry::trace::TraceErrortoopentelemetry_sdk::trace::TraceError - Moved
TraceResulttype alias fromopentelemetry::trace::TraceResulttoopentelemetry_sdk::trace::TraceResult - Breaking: Make
force_flush()inPushMetricExportersynchronous - Breaking: Updated the
SpanExportertrait method signature:
fn export(&mut self, batch: Vec<SpanData>) -> BoxFuture<'static, OTelSdkResult>;
to
fn export(
&mut self,
batch: Vec<SpanData>,
) -> impl std::future::Future<Output = OTelSdkResult> + Send;
This affects anyone who writes custom exporters, as custom implementations of SpanExporter
should now define export as an async fn:
impl trace::SpanExporter for CustomExporter {
async fn export(&mut self, batch: Vec<trace::SpanData>) -> OTelSdkResult {
// Implementation here
}
}
-
Breaking The SpanExporter::export() method no longer requires a mutable reference to self. Before:
async fn export(&mut self, batch: Vec<SpanData>) -> OTelSdkResultAfter:
async fn export(&self, batch: Vec<SpanData>) -> OTelSdkResultCustom exporters will need to internally synchronize any mutable state, if applicable.
-
Bug Fix:
BatchLogProcessornow correctly callsshutdownon the exporter when itsshutdownis invoked. -
Reduced some info level logs to debug
-
Breaking for custom LogProcessor/Exporter authors: Changed
nameparameter from&strtoOption<&str>inevent_enabledmethod on theLogProcessorandLogExportertraits.SdkLoggerno longer passes itsscopename but instead passes the incomingnamewhen invokingevent_enabledon processors. -
Breaking for custom LogExporter authors:
shutdown()method inLogExportertrait no longer requires a mutable ref toself. If the exporter needs to mutate state, it should rely on interior mutability. 2764 -
Breaking (Affects custom Exporter/Processor authors only) Removed
opentelelemetry_sdk::logs::error::{LogError, LogResult}. These were not intended to be public. If you are authoring custom processor/exporters, useopentelemetry_sdk::error::OTelSdkErrorandopentelemetry_sdk::error::OTelSdkResult. 2790 -
Breaking for custom
LogProcessorauthors: Changedset_resourceto require mutable ref.fn set_resource(&mut self, _resource: &Resource) {} -
Breaking: InMemoryExporter's return type change.
TraceResult<Vec<SpanData>>toResult<Vec<SpanData>, InMemoryExporterError>MetricResult<Vec<ResourceMetrics>>toResult<Vec<ResourceMetrics>, InMemoryExporterError>LogResult<Vec<LogDataWithResource>>toResult<Vec<LogDataWithResource>, InMemoryExporterError>
v0.28.0
Released 2025-Feb-10
Note: Due to the large amount of making changes, check migration guide to 0.28 for a summary that can help majority users to quickly migrate. The changelog below is the full list of changes.
-
Update
opentelemetrydependency to 0.28. -
Update
opentelemetry-httpdependency to 0.28. -
Bump msrv to 1.75.0.
-
Bug fix: For cumulative temporality, ObservableGauge no longer export MetricPoints unless measurements were newly reported (in Observable callbacks) since last export. This bug fixes ensures ObservableGauge behaves as per OTel Spec. The bug is not addressed for other Observable instruments #2213
-
Upgrade the tracing crate used for internal logging to version 0.1.40 or later. This is necessary because the internal logging macros utilize the name field as metadata, a feature introduced in version 0.1.40. #2418
-
Feature: Introduced a new feature flag,
experimental_metrics_disable_name_validation, which disables entire Instrument Name Validation. This is an experimental feature to unblock use cases requiring currently disallowed characters (eg: Windows Perf Counters). Use caution when enabling this feature as this breaks guarantees about metric name. -
Bug fix: Empty Tracer names are retained as-is instead of replacing with "rust.opentelemetry.io/sdk/tracer" #2486
-
Update
EnvResourceDetectorto allow resource attribute values containing equal signs ("="). #2120 -
ResourceDetector.detect()no longer supports timeout option. -
Breaking Resource.get() modified to require reference to Key instead of owned. Replace
get(Key::from_static_str("key"))withget(&Key::from_static_str("key")) -
Feature: Add
ResourceBuilderfor an easy way to create newResources -
Breaking: Remove
-
Resource::{new,empty,from_detectors,new_with_defaults,from_schema_url,merge,default}. To create Resources you should only useResource::builder()orResource::builder_empty(). See #2322 for a migration guide.Example Usage:
// old Resource::default().with_attributes([ KeyValue::new("service.name", "test_service"), KeyValue::new("key", "value"), ]); // new Resource::builder() .with_service_name("test_service") .with_attribute(KeyValue::new("key", "value")) .build(); -
Breaking : #2314
- The LogRecord struct has been updated:
- All fields are now pub(crate) instead of pub.
- Getter methods have been introduced to access field values. This change
impacts custom exporter and processor developers by requiring updates to
code that directly accessed LogRecord fields. They must now use the provided
getter methods (e.g.,
log_record.event_name()instead oflog_record.event_name).
- The LogRecord struct has been updated:
-
Breaking (Affects custom metric exporter authors only)
start_timeandtimeis moved from DataPoints to aggregations (Sum, Gauge, Histogram, ExpoHistogram) see #2377 and #2411, to reduce memory. -
Breaking
start_timeis no longer optional forSumaggregation, see #2367, but is still optional forGaugeaggregation see #2389. -
SimpleLogProcessor modified to be generic over
LogExporterto avoid dynamic dispatch to invoke exporter. If you were usingwith_simple_exporterto addLogExporterwith SimpleLogProcessor, this is a transparent change. #2338 -
Breaking
opentelemetry::global::shutdown_tracer_provider()removed from the API, should now usetracer_provider.shutdown()see #2369 for a migration example. "Tracer provider" is cheaply clonable, so users are encouraged to set a clone of it as the global (ex:global::set_tracer_provider(provider.clone())), so that instrumentations and other components can obtain tracers fromglobal::tracer(). The tracer_provider must be kept around to call shutdown on it at the end of application (ex:tracer_provider.shutdown()) -
Breaking The LogExporter::export() method n
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
⚠️ Artifact update problem
Renovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
- any of the package files in this branch needs updating, or
- the branch becomes conflicted, or
- you click the rebase/retry checkbox if found above, or
- you rename this PR's title to start with "rebase!" to trigger it manually
The artifact failure details are included below:
File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path Cargo.toml --package [email protected] --precise 0.30.0
Updating crates.io index
error: failed to select a version for the requirement `opentelemetry = "^0.23.0"`
candidate versions found which didn't match: 0.30.0
location searched: crates.io index
required by package `opentelemetry-system-metrics v0.2.0`
... which satisfies dependency `opentelemetry-system-metrics = "^0.2.0"` (locked to 0.2.0) of package `tailcall v0.1.0 (/tmp/renovate/repos/github/tailcallhq/tailcall)`
File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path tailcall-upstream-grpc/Cargo.toml --package [email protected] --precise 0.30.0
Updating crates.io index
error: failed to select a version for the requirement `opentelemetry = "^0.23.0"`
candidate versions found which didn't match: 0.30.0
location searched: crates.io index
required by package `opentelemetry-system-metrics v0.2.0`
... which satisfies dependency `opentelemetry-system-metrics = "^0.2.0"` (locked to 0.2.0) of package `tailcall v0.1.0 (/tmp/renovate/repos/github/tailcallhq/tailcall)`
Action required: PR inactive for 5 days. Status update or closure in 10 days.
Action required: PR inactive for 5 days. Status update or closure in 10 days.
Action required: PR inactive for 5 days. Status update or closure in 10 days.
Action required: PR inactive for 5 days. Status update or closure in 10 days.
Action required: PR inactive for 5 days. Status update or closure in 10 days.
Action required: PR inactive for 5 days. Status update or closure in 10 days.
PR closed after 10 days of inactivity.