tailcall icon indicating copy to clipboard operation
tailcall copied to clipboard

fix(deps): update opentelemetry-rust monorepo to 0.29.0

Open renovate[bot] opened this issue 8 months ago • 2 comments

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

Compare Source

Released 2025-Mar-21

  • Breaking Moved ExportError trait from opentelemetry::trace::ExportError to opentelemetry_sdk::export::ExportError
  • Breaking Moved TraceError enum from opentelemetry::trace::TraceError to opentelemetry_sdk::trace::TraceError
  • Breaking Moved TraceResult type alias from opentelemetry::trace::TraceResult to opentelemetry_sdk::trace::TraceResult
  • Bug Fix: InstrumentationScope implementation for PartialEq and Hash fixed to include Attributes also.
  • Breaking changes for baggage users: #​2717
    • Changed value type of Baggage from Value to StringValue
    • Updated Baggage constants 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
    • Baggage can't be retrieved from the Context directly anymore and needs to be accessed via context.baggage()
    • with_baggage() and current_with_baggage() override any existing Baggage in the Context
    • Baggage keys can't be empty and only allow ASCII visual chars, except "(),/:;<=>?@&#8203;[\]{} (see RFC7230, Section 3.2.6)
    • KeyValueMetadata does not publicly expose its fields. This should be transparent change to the users.
  • Changed Context to use a stack to properly handle out of order dropping of ContextGuard. This imposes a limit of 65535 nested contexts on a single thread. See #2378 and #1887.
  • Added additional name: Option<&str> parameter to the event_enabled method on the Logger trait. This allows implementations (SDK, processor, exporters) to leverage this additional information to determine if an event is enabled.

v0.28.0

Compare Source

Released 2025-Feb-10

  • Bump msrv to 1.75.0.
  • Breaking opentelemetry::global::shutdown_tracer_provider() Removed from this crate, should now use tracer_provider.shutdown() see #​2369 for a migration example.
  • Breaking Removed unused opentelemetry::PropagationError struct.

v0.27.1

Compare Source

Released 2024-Nov-27

v0.27.0

Compare Source

Released 2024-Nov-11

  • Bump MSRV to 1.70 #​2179
  • Add LogRecord::set_trace_context; an optional method conditional on the trace feature for setting trace context on a log record.
  • Removed unnecessary public methods named as_any from AsyncInstrument trait and the implementing instruments: ObservableCounter, ObservableGauge, and ObservableUpDownCounter #​2187
  • Introduced SyncInstrument trait to replace the individual synchronous instrument traits (SyncCounter, SyncGauge, SyncHistogram, SyncUpDownCounter) which are meant for SDK implementation. #​2207
  • Ensured that observe method on asynchronous instruments can only be called inside a callback. This was done by removing the implementation of AsyncInstrument trait for each of the asynchronous instruments. #​2210
  • Removed PartialOrd and Ord implementations for KeyValue. #​2215
  • Breaking change for exporter authors: Marked KeyValue related structs and enums as non_exhaustive. #​2228
  • Breaking change for log exporter authors: Marked AnyValue enum as non_exhaustive. #​2230
  • Breaking change for Metrics users: The init method used to create instruments has been renamed to build. Also, try_init() method is removed from instrument builders. The return types of InstrumentProvider trait methods modified to return the instrument struct, instead of Result. #​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 InstrumentationLibrary to InstrumentationScope
    • Renamed InstrumentationLibraryBuilder to InstrumentationScopeBuilder
    • Removed deprecated methods LoggerProvider::versioned_logger and TracerProvider::versioned_tracer
    • Removed methods LoggerProvider::logger_builder, TracerProvider::tracer_builder and MeterProvider::versioned_meter
    • Replaced these methods with LoggerProvider::logger_with_scope, TracerProvider::logger_with_scope, MeterProvider::meter_with_scope
    • Replaced global::meter_with_version with global::meter_with_scope
    • Added global::tracer_with_scope
    • Refer to PR description for migration guide.
  • Breaking change: replaced InstrumentationScope public attributes by getters #​2275

  • Breaking change: #​2260

    • Removed global::set_error_handler and global::handle_error.
    • global::handle_error usage inside the opentelemetry crates has been replaced with global::otel_info, otel_warn, otel_debug and otel_error macros based on the severity of the internal logs.
    • The default behavior of global::handle_error was to log the error using eprintln!. With otel macros, the internal logs get emitted via tracing macros of matching severity. Users now need to configure a tracing layer/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::fmt layer.
  • Breaking change for exporter/processor authors: #​2266

    • Moved ExportError trait from opentelemetry::ExportError to opentelemetry_sdk::export::ExportError
    • Created new trait opentelemetry::trace::ExportError for trace API. This would be eventually be consolidated with ExportError in the SDK.
    • Moved LogError enum from opentelemetry::logs::LogError to opentelemetry_sdk::logs::LogError
    • Moved LogResult type alias from opentelemetry::logs::LogResult to opentelemetry_sdk::logs::LogResult
    • Moved MetricError enum from opentelemetry::metrics::MetricError to opentelemetry_sdk::metrics::MetricError
    • Moved MetricResult type alias from opentelemetry::metrics::MetricResult to opentelemetry_sdk::metrics::MetricResult These 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 flag to spec_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

Compare 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 existing KeyValue::new() API covers all the scenarios offered by these APIs.

    • Removed: ObjectSafeMeterProvider and GlobalMeterProvider #​2112. These APIs were unnecessary and were mainly meant for internal use.

    • Modified: MeterProvider.meter() and MeterProvider.versioned_meter() argument types have been updated to &'static str instead of impl Into<Cow<'static, str>>> #​2112. These APIs were modified to enforce the Meter name, version, and schema_url to be &'static str.

    • Renamed: NoopMeterCore to NoopMeter

  • Added with_boundaries API to allow users to provide custom bounds for Histogram instruments. #​2135

v0.25.0

Compare Source

  • 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

Compare Source

  • Add "metrics", "logs" to default features. With this, default feature list is "trace", "metrics" and "logs".

  • When "metrics" feature is enabled, KeyValue implements PartialEq, Eq, PartialOrder, Order, Hash. This is meant to be used for metrics aggregation purposes only.

  • Removed Unit struct 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_enabled method on the Logger. This allows implementations (SDK, processor, exporters) to leverage this additional information to determine if an event is enabled.

  • u64, i128, u128 and usize values are stored as opentelemetry::logs::AnyValue::Int when conversion is feasible. Otherwise stored as opentelemetry::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::Bytes instead of string.

  • Error fields 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 opentelemetry dependency version to 0.29.

v0.28.1

Compare Source

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

Compare Source

Released 2025-Feb-10

  • Update opentelemetry dependency version to 0.28.
  • Bump msrv to 1.75.0.

v0.27.0

Compare Source

Released 2024-Nov-11

  • Update opentelemetry dependency version to 0.27

  • Bump MSRV to 1.70 #​2179

  • Breaking 2291 Rename logs_level_enabled flag to spec_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

Compare Source

Released 2024-Sep-30

  • Update opentelemetry dependency version to 0.26
  • 2101 The log events emitted via the tracing pipeline using the log-tracing crate no longer include the target metadata as attributes. Exporters or backends that rely on this attribute should now access the target directly from the LogRecord::target field.

v0.25.0

Compare Source

  • Update opentelemetry dependency version to 0.25
  • Starting with this version, this crate will align with opentelemetry crate on major,minor versions.
  • Reduce heap allocation by using &'static str for SeverityText.

v0.5.0

Compare Source

  • 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 opentelemetry dependency version to 0.24

open-telemetry/opentelemetry-rust (opentelemetry-http)

v0.29.0

Compare Source

Released 2025-Mar-21

  • Update opentelemetry dependency version to 0.29.

v0.28.0

Compare Source

Released 2025-Feb-10

  • Update opentelemetry dependency version to 0.28.
  • Bump msrv to 1.75.0.
  • Add "internal-logs" feature flag (enabled by default), and emit internal logs via tracing crate.
  • Add HttpClient::send_bytes with bytes::Bytes request payload and deprecate old HttpClient::send function.

v0.27.0

Compare Source

Released 2024-Nov-08

  • Update opentelemetry dependency version to 0.27

  • Bump MSRV to 1.70 #​2179

v0.26.0

Compare Source

Released 2024-Sep-30

  • Update opentelemetry dependency version to 0.26

v0.25.0

Compare Source

  • Update opentelemetry dependency version to 0.25
  • Starting with this version, this crate will align with opentelemetry crate on major,minor versions.

v0.13.0

Compare Source

  • Breaking Correct the misspelling of "webkpi" to "webpki" in features #​1842
  • Breaking Remove support for the isahc HTTP client #​1924
  • Update to http v1 #​1674
  • Update opentelemetry dependency version to 0.24
open-telemetry/opentelemetry-rust (opentelemetry-otlp)

v0.29.0

Compare Source

Released 2025-Mar-21

  • Update opentelemetry dependency version to 0.29

  • Update opentelemetry_sdk dependency version to 0.29

  • Update opentelemetry-http dependency version to 0.29

  • Update opentelemetry-proto dependency version to 0.29

  • The OTEL_EXPORTER_OTLP_TIMEOUT, OTEL_EXPORTER_OTLP_TRACES_TIMEOUT, OTEL_EXPORTER_OTLP_METRICS_TIMEOUT and OTEL_EXPORTER_OTLP_LOGS_TIMEOUT are changed from seconds to miliseconds.

  • Fixed .with_headers() in HttpExporterBuilder to correctly support multiple key/value pairs. #​2699

  • Fixed #​2770 partially to properly handle shutdown() when using http. (tonic still does not do proper shutdown)

  • Breaking ExporterBuilder's build() method now Result with ExporterBuildError being the Error variant. Previously it returned signal specific errors like LogError from the opentelemetry_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 enum ExporterBuildError. Unlike the previous Error which 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 unused Error enum is removed.

  • Breaking ExportConfig's timeout field 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.endpoint
    • OTEL_EXPORTER_OTLP_TIMEOUT -> ExportConfig.timeout

v0.28.0

Compare Source

Released 2025-Feb-10

  • Update opentelemetry dependency version to 0.28.
  • Update opentelemetry_sdk dependency version to 0.28.
  • Update opentelemetry-http dependency version to 0.28.
  • Update opentelemetry-proto dependency 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::MetricsClient and MetricExporter::new(..) method. Use MetricExporter::builder()...build() to obtain MetricExporter.
  • 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_TIMEOUT or OTEL_EXPORTER_OTLP_TIMEOUT.
    • OTEL_EXPORTER_OTLP_TIMEOUT env variable.
    • with_http().with_timeout() API method of LogExporterBuilder and SpanExporterBuilder and MetricsExporterBuilder.
    • The default interval of 10 seconds is used if none is configured.

v0.27.0

Compare Source

Released 2024-Nov-11

  • Update opentelemetry dependency version to 0.27

  • Update opentelemetry_sdk dependency version to 0.27

  • Update opentelemetry-http dependency version to 0.27

  • Update opentelemetry-proto dependency version to 0.27

  • BREAKING:

    • (#​2217) Replaced: The MetricsExporterBuilder interface is modified from with_temporality_selector to with_temporality example 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())
      
    • Renamed

      • (#​2255): de-pluralize Metric types.
        • MetricsExporter -> MetricExporter
        • MetricsExporterBuilder -> MetricExporterBuilder
    • #​2263 Support hyper client for opentelemetry-otlp. This can be enabled using flag hyper-client. Refer example: https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-otlp/examples/basic-otlp-http

v0.26.0

Compare Source

Released 2024-Sep-30

  • Update opentelemetry dependency version to 0.26
  • Update opentelemetry_sdk dependency version to 0.26
  • Update opentelemetry-http dependency version to 0.26
  • Update opentelemetry-proto dependency version to 0.26
  • Bump MSRV to 1.71.1 2140

v0.25.0

Compare Source

  • Update opentelemetry dependency version to 0.25
  • Update opentelemetry_sdk dependency version to 0.25
  • Update opentelemetry-http dependency version to 0.25
  • Update opentelemetry-proto dependency version to 0.25
  • Starting with this version, this crate will align with opentelemetry crate on major,minor versions.
  • Breaking The logrecord event-name is added as an attribute only if the feature flag populate-logs-event-name is enabled. The name of the attribute is changed from "name" to "event.name". 1994, 2050

v0.17.0

Compare Source

  • Add "metrics", "logs" to default features. With this, default feature list is "trace", "metrics" and "logs".
  • Breaking OtlpMetricPipeline.build() no longer invoke the global::set_meter_provider. User who setup the pipeline must do it themselves using global::set_meter_provider(meter_provider.clone());.
  • Add with_resource on OtlpLogPipeline, replacing the with_config method. Instead of using .with_config(Config::default().with_resource(RESOURCE::default())) users must now use .with_resource(RESOURCE::default()) to configure Resource when using OtlpLogPipeline.
  • Breaking The methods OtlpTracePipeline::install_simple() and OtlpTracePipeline::install_batch() would now return TracerProvider instead of Tracer. These methods would also no longer set the global tracer provider. It would now be the responsibility of users to set it by calling global::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 target from LogRecord, if target is populated.
  • Groups batch of LogRecord and Span by their resource and instrumentation scope before exporting, for better efficiency #​1873.
  • Breaking Update to http v1 and tonic v0.12 #​1674
  • Update opentelemetry dependency version to 0.24
  • Update opentelemetry_sdk dependency version to 0.24
  • Update opentelemetry-http dependency version to 0.13
  • Update opentelemetry-proto dependency version to 0.7
open-telemetry/opentelemetry-rust (opentelemetry-prometheus)

v0.29.0

Compare Source

  • Update opentelemetry dependency version to 0.29
  • Update opentelemetry_sdk dependency version to 0.29
  • Update opentelemetry-semantic-conventions dependency version to 0.29

v0.28.0

Compare Source

  • Update opentelemetry dependency version to 0.28
  • Update opentelemetry_sdk dependency version to 0.28
  • Update opentelemetry-semantic-conventions dependency version to 0.28
  • Bump msrv to 1.75.0.

v0.27.0

Compare Source

  • Update opentelemetry dependency version to 0.27
  • Update opentelemetry_sdk dependency version to 0.27
  • Update opentelemetry-semantic-conventions dependency version to 0.27

v0.17.0

Compare Source

Changed
  • Update opentelemetry dependency version to 0.24
  • Update opentelemetry_sdk dependency version to 0.24
  • Update opentelemetry-semantic-conventions dependency version to 0.16
open-telemetry/opentelemetry-rust (opentelemetry-semantic-conventions)

v0.29.0

Compare Source

Released 2025-Mar-21

  • Update to v1.31.0 of the semantic conventions.

v0.28.0

Compare Source

Released 2025-Feb-10

  • Update to v1.29.0 of the semantic conventions.
  • Bump msrv to 1.75.0.

v0.27.0

Compare Source

Released 2024-Nov-11

  • Bump MSRV to 1.70 #​2179
  • Update to v1.28.0 of the semantic conventions.

v0.26.0

Compare 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_experimental to enable experimental semantic conventions. This feature is disabled by default.

v0.25.0

Compare Source

Changed
  • Starting with this version, this crate will align with opentelemetry crate on major,minor versions.
  • Update to v1.27.0 of the semantic conventions. #​2000

v0.16.0

Compare Source

Changed
  • Breaking Moved duplicated (and unrelated) attributes from opentelemetry_semantic_conventions::trace and opentelemetry_semantic_conventions::resource into opentelemetry_semantic_conventions::attribute (which now contains all semantic attributes). trace and resource now only contain references to attributes which fall under their respective category.
Added
  • Created opentelemetry_semantic_conventions::metric to store metric semantic conventions.
open-telemetry/opentelemetry-rust (opentelemetry-stdout)

v0.29.0

Compare Source

Released 2025-Mar-21

  • Update opentelemetry dependency version to 0.29.
  • Update opentelemetry_sdk dependency version to 0.29.

v0.28.0

Compare Source

Released 2025-Feb-10

  • Update opentelemetry dependency version to 0.28.
  • Update opentelemetry_sdk dependency version to 0.28.
  • Bump msrv to 1.75.0.
  • Breaking time fields, StartTime and EndTime is 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

Compare Source

Released 2024-Nov-11

  • Update opentelemetry dependency version to 0.27

  • Update opentelemetry_sdk dependency version to 0.27

  • Bump MSRV to 1.70 #​2179

  • BREAKING

    • Replaced
      • (#​2217): The MetricsExporterBuilder interface is modified from with_temporality_selector to with_temporality example can be seen below: Previous Signature:
      MetricsExporterBuilder::default().with_temporality_selector(DeltaTemporalitySelector::new())
      
      Updated Signature:
      MetricsExporterBuilder::default().with_temporality(opentelemetry_sdk::metrics::Temporality::Delta)
      
    • Renamed
      • (#​2255): de-pluralize Metric types.
        • MetricsExporter -> MetricExporter
        • MetricsExporterBuilder -> MetricExporterBuilder

v0.26.0

Compare Source

Released 2024-Sep-30

  • Update opentelemetry dependency version to 0.26
  • Update opentelemetry_sdk dependency version to 0.26

v0.25.0

Compare Source

  • Update opentelemetry dependency version to 0.25
  • Update opentelemetry_sdk dependency version to 0.25
  • Starting with this version, this crate will align with opentelemetry crate on major,minor versions.
  • Breaking 1994 The logrecord event-name is added as attribute with key name only if the feature flag populate-logs-event-name is 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

Compare Source

  • Update opentelemetry dependency version to 0.24
  • Update opentelemetry_sdk dependency version to 0.24
open-telemetry/opentelemetry-rust (opentelemetry_sdk)

v0.29.0

Compare Source

Released 2025-Mar-21

  • Update opentelemetry dependency to 0.29.
  • Update opentelemetry-http dependency to 0.29.
  • Breaking: The Runtime trait has been simplified and refined. See the #​2641 for the changes.
  • Removed async-std support for Runtime, as async-std crate is deprecated.
  • Calls to MeterProviderBuilder::with_resource, TracerProviderBuilder::with_resource, LoggerProviderBuilder::with_resource are now additive (#​2677).
  • Moved ExportError trait from opentelemetry::trace::ExportError to opentelemetry_sdk::export::ExportError
  • Moved TraceError enum from opentelemetry::trace::TraceError to opentelemetry_sdk::trace::TraceError
  • Moved TraceResult type alias from opentelemetry::trace::TraceResult to opentelemetry_sdk::trace::TraceResult
  • Breaking: Make force_flush() in PushMetricExporter synchronous
  • Breaking: Updated the SpanExporter trait 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>) -> OTelSdkResult
    

    After:

      async fn export(&self, batch: Vec<SpanData>) -> OTelSdkResult
    

    Custom exporters will need to internally synchronize any mutable state, if applicable.

  • Bug Fix: BatchLogProcessor now correctly calls shutdown on the exporter when its shutdown is invoked.

  • Reduced some info level logs to debug

  • Breaking for custom LogProcessor/Exporter authors: Changed name parameter from &str to Option<&str> in event_enabled method on the LogProcessor and LogExporter traits. SdkLogger no longer passes its scope name but instead passes the incoming name when invoking event_enabled on processors.

  • Breaking for custom LogExporter authors: shutdown() method in LogExporter trait no longer requires a mutable ref to self. 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, use opentelemetry_sdk::error::OTelSdkError and opentelemetry_sdk::error::OTelSdkResult. 2790

  • Breaking for custom LogProcessor authors: Changed set_resource to require mutable ref. fn set_resource(&mut self, _resource: &Resource) {}

  • Breaking: InMemoryExporter's return type change.

    • TraceResult<Vec<SpanData>> to Result<Vec<SpanData>, InMemoryExporterError>
    • MetricResult<Vec<ResourceMetrics>> to Result<Vec<ResourceMetrics>, InMemoryExporterError>
    • LogResult<Vec<LogDataWithResource>> to Result<Vec<LogDataWithResource>, InMemoryExporterError>

v0.28.0

Compare Source

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 opentelemetry dependency to 0.28.

  • Update opentelemetry-http dependency 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 EnvResourceDetector to 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")) with get(&Key::from_static_str("key"))

  • Feature: Add ResourceBuilder for an easy way to create new Resources

  • Breaking: Remove

  • Resource::{new,empty,from_detectors,new_with_defaults,from_schema_url,merge,default}. To create Resources you should only use Resource::builder() or Resource::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 of log_record.event_name).
  • Breaking (Affects custom metric exporter authors only) start_time and time is moved from DataPoints to aggregations (Sum, Gauge, Histogram, ExpoHistogram) see #​2377 and #​2411, to reduce memory.

  • Breaking start_time is no longer optional for Sum aggregation, see #​2367, but is still optional for Gauge aggregation see #​2389.

  • SimpleLogProcessor modified to be generic over LogExporter to avoid dynamic dispatch to invoke exporter. If you were using with_simple_exporter to add LogExporter with SimpleLogProcessor, this is a transparent change. #​2338

  • Breaking opentelemetry::global::shutdown_tracer_provider() removed from the API, should now use tracer_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 from global::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.

renovate[bot] avatar Mar 13 '25 10:03 renovate[bot]

⚠️ 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)`

renovate[bot] avatar Mar 13 '25 10:03 renovate[bot]

Action required: PR inactive for 5 days. Status update or closure in 10 days.

github-actions[bot] avatar Apr 22 '25 12:04 github-actions[bot]

Action required: PR inactive for 5 days. Status update or closure in 10 days.

github-actions[bot] avatar May 02 '25 14:05 github-actions[bot]

Action required: PR inactive for 5 days. Status update or closure in 10 days.

github-actions[bot] avatar May 12 '25 07:05 github-actions[bot]

Action required: PR inactive for 5 days. Status update or closure in 10 days.

github-actions[bot] avatar Jun 11 '25 14:06 github-actions[bot]

Action required: PR inactive for 5 days. Status update or closure in 10 days.

github-actions[bot] avatar Aug 02 '25 20:08 github-actions[bot]

Action required: PR inactive for 5 days. Status update or closure in 10 days.

github-actions[bot] avatar Aug 31 '25 17:08 github-actions[bot]

PR closed after 10 days of inactivity.

github-actions[bot] avatar Sep 10 '25 17:09 github-actions[bot]