Skip to content

Commit 12b0569

Browse files
authored
update to opentelemetry 0.24 (#179)
* update to opentelemetry 0.24 * replace `Unit` with the literal directly * update feature flag * update import * update more otel stuff * use the correct version in readme * pr review * update example also to new otel version * cargo fmt
1 parent 9bc24e0 commit 12b0569

File tree

16 files changed

+60
-49
lines changed

16 files changed

+60
-49
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ jobs:
2222
- run: cargo clippy --features=metrics-0_21,prometheus-exporter
2323
- run: cargo clippy --features=prometheus-0_13
2424
- run: cargo clippy --features=prometheus-client-0_22
25-
- run: cargo clippy --features=opentelemetry-0_21
25+
- run: cargo clippy --features=opentelemetry-0_24
2626

2727
# Run the tests with each of the different metrics libraries
2828
- run: cargo test --features=prometheus-exporter
2929
- run: cargo test --features=prometheus-exporter,metrics-0_21
3030
- run: cargo test --features=prometheus-exporter,prometheus-0_13
3131
- run: cargo test --features=prometheus-exporter,prometheus-client-0_22,exemplars-tracing
32-
- run: cargo test --features=prometheus-exporter,prometheus-client-0_22,exemplars-tracing-opentelemetry-0_22
33-
- run: cargo test --features=prometheus-exporter,opentelemetry-0_21
32+
- run: cargo test --features=prometheus-exporter,prometheus-client-0_22,exemplars-tracing-opentelemetry-0_25
33+
- run: cargo test --features=prometheus-exporter,opentelemetry-0_24
3434

3535
# Build the crate using the other optional features
3636
- run: cargo build --features=metrics-0_21,custom-objective-percentile,custom-objective-latency

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
## Unreleased
1111

12-
-
12+
### Breaking changes
13+
14+
- `opentelemetry` has been updated to v0.24 (#179)
15+
New feature flags: `opentelemetry-0_24`, `exemplars-tracing-opentelemetry-0_25`
16+
Removed feature flags: `opentelemetry-0_21`, `exemplars-tracing-opentelemetry-0_22`
17+
18+
**If you are using these metrics library separately in your application in addition
19+
to Autometrics, ensure that you match the version that Autometrics uses.**
1320

1421
## [1.0.1](https://github.com/autometrics-dev/autometrics-rs/releases/tag/v1.0.1) - 2024-02-12
1522

autometrics/Cargo.toml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@ readme = "README.md"
1515
[features]
1616
# Metrics backends
1717
metrics-0_21 = ["dep:metrics"]
18-
opentelemetry-0_21 = ["opentelemetry/metrics", "dep:prometheus"]
18+
opentelemetry-0_24 = ["opentelemetry/metrics", "dep:prometheus"]
1919
prometheus-0_13 = ["dep:prometheus"]
2020
prometheus-client-0_22 = ["dep:prometheus-client"]
2121

2222
# Deprecated feature flags
2323
metrics = ["metrics-0_21"]
24-
opentelemetry = ["opentelemetry-0_21"]
24+
opentelemetry = ["opentelemetry-0_24"]
2525
prometheus = ["prometheus-0_13"]
2626
prometheus-client = ["prometheus-client-0_22"]
27-
exemplars-tracing-opentelemetry = ["exemplars-tracing-opentelemetry-0_22"]
27+
exemplars-tracing-opentelemetry = ["exemplars-tracing-opentelemetry-0_25"]
2828

2929
# Misc
3030
prometheus-exporter = [
@@ -72,11 +72,11 @@ otel-push-exporter-async-std = [
7272

7373
# Exemplars
7474
exemplars-tracing = ["tracing", "tracing-subscriber"]
75-
exemplars-tracing-opentelemetry-0_22 = [
75+
exemplars-tracing-opentelemetry-0_25 = [
7676
"dep:opentelemetry",
7777
"opentelemetry_sdk/trace",
7878
"tracing",
79-
"dep:tracing-opentelemetry-0-22",
79+
"dep:tracing-opentelemetry",
8080
]
8181

8282
# Custom objectives
@@ -91,19 +91,19 @@ spez = "0.1.2"
9191
thiserror = "1"
9292

9393
# Used for opentelemetry feature
94-
opentelemetry = { version = "0.21", default-features = false, optional = true }
94+
opentelemetry = { version = "0.24", default-features = false, optional = true }
9595

9696
# Use for metrics feature
9797
metrics = { version = "0.21", default-features = false, optional = true }
9898

9999
# Used for prometheus-exporter feature
100100
http = { version = "1.0.0", optional = true }
101101
metrics-exporter-prometheus = { version = "0.12", default-features = false, optional = true }
102-
opentelemetry-prometheus = { version = "0.14", optional = true }
103-
opentelemetry_sdk = { version = "0.21", default-features = false, features = [
102+
opentelemetry-prometheus = { version = "0.17", optional = true }
103+
opentelemetry_sdk = { version = "0.24.1", default-features = false, features = [
104104
"metrics",
105105
], optional = true }
106-
opentelemetry-otlp = { version = "0.14.0", default-features = false, optional = true }
106+
opentelemetry-otlp = { version = "0.17", default-features = false, optional = true }
107107
prometheus = { version = "0.13", default-features = false, optional = true }
108108

109109
# Used for prometheus-client feature
@@ -116,15 +116,15 @@ tracing-subscriber = { version = "0.3", default-features = false, features = [
116116
], optional = true }
117117

118118
# Used for exemplars-tracing-opentelemetry feature
119-
tracing-opentelemetry-0-22 = { package = "tracing-opentelemetry", version = "0.22", default-features = false, optional = true }
119+
tracing-opentelemetry = { version = "0.25", default-features = false, optional = true }
120120

121121
[dev-dependencies]
122122
async-trait = "0.1.74"
123123
axum = { version = "0.7.2", features = ["tokio"] }
124124
criterion = "0.5"
125125
http = "1.0.0"
126-
opentelemetry = "0.21"
127-
opentelemetry-stdout = { version = "0.2", features = ["trace"] }
126+
opentelemetry = "0.24"
127+
opentelemetry-stdout = { version = "0.5", features = ["trace"] }
128128
prometheus-client = "0.22"
129129
tokio = { version = "1", features = ["full"] }
130130
tracing = "0.1"

autometrics/build.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ pub fn main() {
66
#[cfg(feature = "metrics")]
77
println!("cargo:warning=The `metrics` feature is deprecated and will be removed in the next version. Please use `metrics-0_21` instead.");
88
#[cfg(feature = "opentelemetry")]
9-
println!("cargo:warning=The `opentelemetry` feature is deprecated and will be removed in the next version. Please use `opentelemetry-0_21` instead.");
9+
println!("cargo:warning=The `opentelemetry` feature is deprecated and will be removed in the next version. Please use `opentelemetry-0_24` instead.");
1010
#[cfg(feature = "prometheus")]
1111
println!("cargo:warning=The `prometheus` feature is deprecated and will be removed in the next version. Please use `prometheus-0_13` instead.");
1212
#[cfg(feature = "prometheus-client")]
1313
println!("cargo:warning=The `prometheus-client` feature is deprecated and will be removed in the next version. Please use `prometheus-client-0_22` instead.");
1414
#[cfg(feature = "exemplars-tracing-opentelemetry")]
15-
println!("cargo:warning=The `exemplars-tracing-opentelemetry` feature is deprecated and will be removed in the next version. Please use `exemplars-tracing-opentelemetry-0_22` instead.");
15+
println!("cargo:warning=The `exemplars-tracing-opentelemetry` feature is deprecated and will be removed in the next version. Please use `exemplars-tracing-opentelemetry-0_25` instead.");
1616

1717
cfg_aliases! {
1818
// Backends
1919
metrics: { any(feature = "metrics", feature = "metrics-0_21") },
20-
opentelemetry: { any(feature = "opentelemetry", feature = "opentelemetry-0_21") },
20+
opentelemetry: { any(feature = "opentelemetry", feature = "opentelemetry-0_24") },
2121
prometheus: { any(feature = "prometheus", feature = "prometheus-0_13") },
2222
prometheus_client_feature: { any(feature = "prometheus-client", feature = "prometheus-client-0_22") },
2323
default_backend: { all(
@@ -32,7 +32,7 @@ pub fn main() {
3232
// Exemplars
3333
exemplars: { any(exemplars_tracing, exemplars_tracing_opentelemetry) },
3434
exemplars_tracing: { feature = "exemplars-tracing" },
35-
exemplars_tracing_opentelemetry: { any(feature = "exemplars-tracing-opentelemetry-0_22", feature = "exemplars-tracing-opentelemetry") },
35+
exemplars_tracing_opentelemetry: { any(feature = "exemplars-tracing-opentelemetry-0_25", feature = "exemplars-tracing-opentelemetry") },
3636

3737
// Custom objectives
3838
custom_objective_percentile: { feature = "custom-objective-percentile" },

autometrics/src/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ If you require more customization than these offered feature flags, enable just
153153

154154
> If you are exporting metrics yourself rather than using the `prometheus-exporter`, you must ensure that you are using the exact same version of the metrics library as `autometrics` (and it must come from `crates.io` rather than git or another source). If not, the autometrics metrics will not appear in your exported metrics.
155155
156-
- `opentelemetry-0_21` - use the [opentelemetry](https://crates.io/crates/opentelemetry) crate for producing metrics.
156+
- `opentelemetry-0_24` - use the [opentelemetry](https://crates.io/crates/opentelemetry) crate for producing metrics.
157157
- `metrics-0_21` - use the [metrics](https://crates.io/crates/metrics) crate for producing metrics
158158
- `prometheus-0_13` - use the [prometheus](https://crates.io/crates/prometheus) crate for producing metrics
159159
- `prometheus-client-0_22` - use the official [prometheus-client](https://crates.io/crates/prometheus-client) crate for producing metrics
@@ -163,7 +163,7 @@ If you require more customization than these offered feature flags, enable just
163163
See the [exemplars module docs](https://docs.rs/autometrics/latest/autometrics/exemplars/index.html) for details about these features. Currently only supported with the `prometheus-client` backend.
164164

165165
- `exemplars-tracing` - extract arbitrary fields from `tracing::Span`s
166-
- `exemplars-tracing-opentelemetry-0_20` or `exemplars-tracing-opentelemetry-0_21` - extract the `trace_id` and `span_id` from the `opentelemetry::Context`, which is attached to `tracing::Span`s by the `tracing-opentelemetry` crate
166+
- `exemplars-tracing-opentelemetry-0_25` - extract the `trace_id` and `span_id` from the `opentelemetry::Context`, which is attached to `tracing::Span`s by the `tracing-opentelemetry` crate
167167

168168
### Custom objective values
169169

autometrics/src/exemplars/tracing_opentelemetry.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use super::TraceLabels;
22
use opentelemetry::trace::TraceContextExt as _;
33
use std::iter::FromIterator;
44
use tracing::Span;
5-
use tracing_opentelemetry_0_22::OpenTelemetrySpanExt;
5+
use tracing_opentelemetry::OpenTelemetrySpanExt;
66

77
pub fn get_exemplar() -> Option<TraceLabels> {
88
// Get the OpenTelemetry Context from the tracing span

autometrics/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ mod constants;
99
#[cfg(any(
1010
feature = "exemplars-tracing",
1111
feature = "exemplars-tracing-opentelemetry",
12-
feature = "exemplars-tracing-opentelemetry-0_22",
12+
feature = "exemplars-tracing-opentelemetry-0_25",
1313
))]
1414
pub mod exemplars;
1515
mod labels;

autometrics/src/otel_push_exporter.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
use opentelemetry::metrics::MetricsError;
22
use opentelemetry_otlp::{ExportConfig, Protocol, WithExportConfig};
33
use opentelemetry_otlp::{OtlpMetricPipeline, OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT};
4-
use opentelemetry_sdk::metrics::MeterProvider;
4+
use opentelemetry_sdk::metrics::SdkMeterProvider;
55
use std::ops::Deref;
66
use std::time::Duration;
77

8-
/// Newtype struct holding a [`MeterProvider`] with a custom `Drop` implementation to automatically clean up itself
8+
/// Newtype struct holding a [`SdkMeterProvider`] with a custom `Drop` implementation to automatically clean up itself
99
#[repr(transparent)]
1010
#[must_use = "Assign this to a unused variable instead: `let _meter = ...` (NOT `let _ = ...`), as else it will be dropped immediately - which will cause it to be shut down"]
11-
pub struct OtelMeterProvider(MeterProvider);
11+
pub struct OtelMeterProvider(SdkMeterProvider);
1212

1313
impl Deref for OtelMeterProvider {
14-
type Target = MeterProvider;
14+
type Target = SdkMeterProvider;
1515

1616
fn deref(&self) -> &Self::Target {
1717
&self.0

autometrics/src/prometheus_exporter.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ use metrics_exporter_prometheus::{BuildError, PrometheusBuilder, PrometheusHandl
2929
use once_cell::sync::OnceCell;
3030
#[cfg(opentelemetry)]
3131
use opentelemetry::metrics::MetricsError;
32+
#[cfg(opentelemetry)]
33+
use opentelemetry_sdk::metrics::SdkMeterProvider;
3234
#[cfg(any(opentelemetry, prometheus))]
3335
use prometheus::TextEncoder;
3436
use thiserror::Error;
@@ -213,7 +215,7 @@ fn initialize_prometheus_exporter() -> Result<GlobalPrometheus, ExporterInitiali
213215
use opentelemetry::global;
214216
use opentelemetry_prometheus::exporter;
215217
use opentelemetry_sdk::metrics::reader::AggregationSelector;
216-
use opentelemetry_sdk::metrics::{Aggregation, InstrumentKind, MeterProvider};
218+
use opentelemetry_sdk::metrics::{Aggregation, InstrumentKind};
217219

218220
/// A custom aggregation selector that uses the configured histogram buckets,
219221
/// along with the other default aggregation settings.
@@ -228,7 +230,9 @@ fn initialize_prometheus_exporter() -> Result<GlobalPrometheus, ExporterInitiali
228230
| InstrumentKind::UpDownCounter
229231
| InstrumentKind::ObservableCounter
230232
| InstrumentKind::ObservableUpDownCounter => Aggregation::Sum,
231-
InstrumentKind::ObservableGauge => Aggregation::LastValue,
233+
InstrumentKind::ObservableGauge | InstrumentKind::Gauge => {
234+
Aggregation::LastValue
235+
}
232236
InstrumentKind::Histogram => Aggregation::ExplicitBucketHistogram {
233237
boundaries: self.histogram_buckets.clone(),
234238
record_min_max: false,
@@ -246,7 +250,7 @@ fn initialize_prometheus_exporter() -> Result<GlobalPrometheus, ExporterInitiali
246250
.without_target_info()
247251
.build()?;
248252

249-
let meter_provider = MeterProvider::builder().with_reader(exporter).build();
253+
let meter_provider = SdkMeterProvider::builder().with_reader(exporter).build();
250254

251255
global::set_meter_provider(meter_provider);
252256
}

autometrics/src/settings.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ impl AutometricsSettingsBuilder {
195195
let (prometheus_client_registry, prometheus_client_metrics) =
196196
crate::tracker::prometheus_client::initialize_registry(
197197
self.prometheus_client_registry
198-
.unwrap_or_else(|| <prometheus_client::registry::Registry>::default()),
198+
.unwrap_or_else(<prometheus_client::registry::Registry>::default),
199199
);
200200

201201
let repo_url = self

0 commit comments

Comments
 (0)