Skip to content

Commit 62184c0

Browse files
committed
Update deps for prometheus
1 parent 34a3840 commit 62184c0

File tree

21 files changed

+127
-295
lines changed

21 files changed

+127
-295
lines changed

.github/workflows/ci.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
name: Build and Test
1414
runs-on: ubuntu-latest
1515
steps:
16-
- uses: actions/checkout@v3
16+
- uses: actions/checkout@v5
1717
- uses: dtolnay/rust-toolchain@stable
1818
- uses: Swatinem/rust-cache@v2
1919

@@ -22,15 +22,15 @@ jobs:
2222
- run: cargo clippy --features=metrics-0_24,prometheus-exporter
2323
- run: cargo clippy --features=prometheus-0_14
2424
- run: cargo clippy --features=prometheus-client-0_22
25-
- run: cargo clippy --features=opentelemetry-0_24
25+
- run: cargo clippy --features=opentelemetry-0_30
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_24
3030
- run: cargo test --features=prometheus-exporter,prometheus-0_14
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_25
33-
- run: cargo test --features=prometheus-exporter,opentelemetry-0_24
32+
- run: cargo test --features=prometheus-client-0_22,exemplars-tracing-opentelemetry-0_31 # no prometheus-exporter anymore with otlp
33+
- run: cargo test --features=opentelemetry-0_30 # no prometheus-exporter anymore with otlp
3434

3535
# Build the crate using the other optional features
3636
- run: cargo build --features=metrics-0_24,custom-objective-percentile,custom-objective-latency
@@ -43,7 +43,7 @@ jobs:
4343
- run: cargo build --package example-axum
4444
- run: cargo build --package example-custom-metrics
4545
- run: cargo build --package example-exemplars-tracing
46-
- run: cargo build --package example-exemplars-tracing-opentelemetry
46+
# - run: cargo build --package example-exemplars-tracing-opentelemetry # removed, no more prometheus-exporter in otlp
4747
- run: cargo build --package example-full-api
4848
- run: cargo build --package example-grpc-http
4949
- run: cargo build --package example-opentelemetry-push

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1616
- `prometheus` has been updated to v0.14 (#187)
1717
New feature flag: `prometheus-0_14`
1818
Removed feature flag: `prometheus-0_13`
19+
- No more prometheus-exporter with otlp, use standard otlp exporter (see <https://github.com/open-telemetry/opentelemetry-rust/pull/2831>)
1920

2021
## [2.0.0](https://github.com/autometrics-dev/autometrics-rs/releases/tag/v2.0.0) - 2024-07-25
2122

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ keywords = ["metrics", "prometheus", "opentelemetry"]
1111
categories = ["development-tools::debugging", "development-tools::profiling"]
1212

1313
[workspace]
14+
resolver = "2"
1415
default-members = ["autometrics", "autometrics-cli", "autometrics-macros"]
1516
members = [
1617
"autometrics",

autometrics/Cargo.toml

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

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

2929
# Misc
3030
prometheus-exporter = [
3131
"http",
3232
"metrics-exporter-prometheus",
33-
"opentelemetry-prometheus",
3433
"opentelemetry_sdk",
34+
"opentelemetry_sdk/spec_unstable_metrics_views",
3535
"dep:prometheus",
3636
"dep:prometheus-client",
3737
]
@@ -65,18 +65,13 @@ otel-push-exporter-tokio-current-thread = [
6565
"opentelemetry_sdk/rt-tokio-current-thread"
6666
]
6767

68-
otel-push-exporter-async-std = [
69-
"otel-push-exporter",
70-
"opentelemetry_sdk/rt-async-std"
71-
]
72-
7368
# Exemplars
7469
exemplars-tracing = ["tracing", "tracing-subscriber"]
75-
exemplars-tracing-opentelemetry-0_25 = [
70+
exemplars-tracing-opentelemetry-0_31 = [
7671
"dep:opentelemetry",
7772
"opentelemetry_sdk/trace",
7873
"tracing",
79-
"dep:tracing-opentelemetry",
74+
"dep:tracing-opentelemetry"
8075
]
8176

8277
# Custom objectives
@@ -91,20 +86,19 @@ spez = "0.1.2"
9186
thiserror = "1"
9287

9388
# Used for opentelemetry feature
94-
opentelemetry = { version = "0.24", default-features = false, optional = true }
89+
opentelemetry = { version = "0.30", default-features = false, optional = true }
9590

9691
# Use for metrics feature
9792
metrics = { version = "0.24", default-features = false, optional = true }
9893

9994
# Used for prometheus-exporter feature
10095
http = { version = "1.0.0", optional = true }
101-
metrics-exporter-prometheus = { version = "0.16", default-features = false, optional = true }
102-
opentelemetry-prometheus = { version = "0.17", optional = true }
103-
opentelemetry_sdk = { version = "0.24.1", default-features = false, features = [
96+
metrics-exporter-prometheus = { version = "0.17", default-features = false, optional = true }
97+
opentelemetry_sdk = { version = "0.30.0", default-features = false, features = [
10498
"metrics",
10599
], optional = true }
106-
opentelemetry-otlp = { version = "0.17", default-features = false, optional = true }
107-
prometheus = { version = "0.13", default-features = false, optional = true }
100+
opentelemetry-otlp = { version = "0.30", default-features = false, optional = true }
101+
prometheus = { version = "0.14", default-features = false, optional = true }
108102

109103
# Used for prometheus-client feature
110104
prometheus-client = { version = "0.22", optional = true }
@@ -116,15 +110,15 @@ tracing-subscriber = { version = "0.3", default-features = false, features = [
116110
], optional = true }
117111

118112
# Used for exemplars-tracing-opentelemetry feature
119-
tracing-opentelemetry = { version = "0.25", default-features = false, optional = true }
113+
tracing-opentelemetry = { version = "0.31", default-features = false, optional = true }
120114

121115
[dev-dependencies]
122116
async-trait = "0.1.74"
123117
axum = { version = "0.7.2", features = ["tokio"] }
124118
criterion = "0.5"
125119
http = "1.0.0"
126-
opentelemetry = "0.24"
127-
opentelemetry-stdout = { version = "0.5", features = ["trace"] }
120+
opentelemetry = "0.30"
121+
opentelemetry-stdout = { version = "0.30", features = ["trace"] }
128122
prometheus-client = "0.22"
129123
tokio = { version = "1", features = ["full"] }
130124
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_24` 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_24` instead.");
9+
println!("cargo:warning=The `opentelemetry` feature is deprecated and will be removed in the next version. Please use `opentelemetry-0_30` 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_14` 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_25` 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_31` instead.");
1616

1717
cfg_aliases! {
1818
// Backends
1919
metrics: { any(feature = "metrics", feature = "metrics-0_24") },
20-
opentelemetry: { any(feature = "opentelemetry", feature = "opentelemetry-0_24") },
20+
opentelemetry: { any(feature = "opentelemetry", feature = "opentelemetry-0_30") },
2121
prometheus: { any(feature = "prometheus", feature = "prometheus-0_14") },
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_25", feature = "exemplars-tracing-opentelemetry") },
35+
exemplars_tracing_opentelemetry: { any(feature = "exemplars-tracing-opentelemetry-0_31", feature = "exemplars-tracing-opentelemetry") },
3636

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

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_25",
12+
feature = "exemplars-tracing-opentelemetry-0_31",
1313
))]
1414
pub mod exemplars;
1515
mod labels;
Lines changed: 42 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
use opentelemetry::metrics::MetricsError;
2-
use opentelemetry_otlp::{ExportConfig, Protocol, WithExportConfig};
3-
use opentelemetry_otlp::{OtlpMetricPipeline, OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT};
4-
use opentelemetry_sdk::metrics::SdkMeterProvider;
1+
use opentelemetry_otlp::{
2+
ExportConfig, ExporterBuildError, MetricExporter, Protocol, WithExportConfig,
3+
OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT,
4+
};
5+
use opentelemetry_sdk::metrics::{MeterProviderBuilder, PeriodicReader, SdkMeterProvider};
56
use std::ops::Deref;
67
use std::time::Duration;
78

@@ -32,7 +33,7 @@ impl Drop for OtelMeterProvider {
3233
/// to configure the timeout and interval respectively. If you want to customize those
3334
/// from within code, consider using [`init_http_with_timeout_period`].
3435
#[cfg(feature = "otel-push-exporter-http")]
35-
pub fn init_http(url: impl Into<String>) -> Result<OtelMeterProvider, MetricsError> {
36+
pub fn init_http(url: impl Into<String>) -> Result<OtelMeterProvider, ExporterBuildError> {
3637
let (timeout, period) = timeout_and_period_from_env_or_default();
3738
init_http_with_timeout_period(url, timeout, period)
3839
}
@@ -43,21 +44,22 @@ pub fn init_http_with_timeout_period(
4344
url: impl Into<String>,
4445
timeout: Duration,
4546
period: Duration,
46-
) -> Result<OtelMeterProvider, MetricsError> {
47-
runtime()
48-
.with_exporter(
49-
opentelemetry_otlp::new_exporter()
50-
.http()
51-
.with_export_config(ExportConfig {
52-
endpoint: url.into(),
53-
protocol: Protocol::HttpBinary,
54-
timeout,
55-
..Default::default()
56-
}),
57-
)
58-
.with_period(period)
59-
.build()
60-
.map(OtelMeterProvider)
47+
) -> Result<OtelMeterProvider, ExporterBuildError> {
48+
let exporter = MetricExporter::builder()
49+
.with_http()
50+
.with_export_config(ExportConfig {
51+
endpoint: Some(url.into()),
52+
protocol: Protocol::HttpBinary,
53+
timeout: Some(timeout),
54+
..Default::default()
55+
})
56+
.build()?;
57+
58+
let reader = PeriodicReader::builder(exporter)
59+
.with_interval(period)
60+
.build();
61+
62+
Ok(OtelMeterProvider(runtime().with_reader(reader).build()))
6163
}
6264

6365
/// Initialize the OpenTelemetry push exporter using gRPC transport.
@@ -67,7 +69,7 @@ pub fn init_http_with_timeout_period(
6769
/// to configure the timeout and interval respectively. If you want to customize those
6870
/// from within code, consider using [`init_grpc_with_timeout_period`].
6971
#[cfg(feature = "otel-push-exporter-grpc")]
70-
pub fn init_grpc(url: impl Into<String>) -> Result<OtelMeterProvider, MetricsError> {
72+
pub fn init_grpc(url: impl Into<String>) -> Result<OtelMeterProvider, ExporterBuildError> {
7173
let (timeout, period) = timeout_and_period_from_env_or_default();
7274
init_grpc_with_timeout_period(url, timeout, period)
7375
}
@@ -78,21 +80,22 @@ pub fn init_grpc_with_timeout_period(
7880
url: impl Into<String>,
7981
timeout: Duration,
8082
period: Duration,
81-
) -> Result<OtelMeterProvider, MetricsError> {
82-
runtime()
83-
.with_exporter(
84-
opentelemetry_otlp::new_exporter()
85-
.tonic()
86-
.with_export_config(ExportConfig {
87-
endpoint: url.into(),
88-
protocol: Protocol::Grpc,
89-
timeout,
90-
..Default::default()
91-
}),
92-
)
93-
.with_period(period)
94-
.build()
95-
.map(OtelMeterProvider)
83+
) -> Result<OtelMeterProvider, ExporterBuildError> {
84+
let exporter = MetricExporter::builder()
85+
.with_tonic()
86+
.with_export_config(ExportConfig {
87+
endpoint: Some(url.into()),
88+
protocol: Protocol::HttpBinary,
89+
timeout: Some(timeout),
90+
..Default::default()
91+
})
92+
.build()?;
93+
94+
let reader = PeriodicReader::builder(exporter)
95+
.with_interval(period)
96+
.build();
97+
98+
Ok(OtelMeterProvider(runtime().with_reader(reader).build()))
9699
}
97100

98101
/// returns timeout and period from their respective environment variables
@@ -105,7 +108,7 @@ fn timeout_and_period_from_env_or_default() -> (Duration, Duration) {
105108
std::env::var_os(OTEL_EXPORTER_TIMEOUT_ENV)
106109
.and_then(|os_string| os_string.into_string().ok())
107110
.and_then(|str| str.parse().ok())
108-
.unwrap_or(OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT),
111+
.unwrap_or(OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT.as_secs()),
109112
);
110113

111114
let period = Duration::from_secs(
@@ -118,51 +121,6 @@ fn timeout_and_period_from_env_or_default() -> (Duration, Duration) {
118121
(timeout, period)
119122
}
120123

121-
#[cfg(all(
122-
feature = "otel-push-exporter-tokio",
123-
not(any(
124-
feature = "otel-push-exporter-tokio-current-thread",
125-
feature = "otel-push-exporter-async-std"
126-
))
127-
))]
128-
fn runtime(
129-
) -> OtlpMetricPipeline<opentelemetry_sdk::runtime::Tokio, opentelemetry_otlp::NoExporterConfig> {
130-
return opentelemetry_otlp::new_pipeline().metrics(opentelemetry_sdk::runtime::Tokio);
131-
}
132-
133-
#[cfg(all(
134-
feature = "otel-push-exporter-tokio-current-thread",
135-
not(any(
136-
feature = "otel-push-exporter-tokio",
137-
feature = "otel-push-exporter-async-std"
138-
))
139-
))]
140-
fn runtime() -> OtlpMetricPipeline<
141-
opentelemetry_sdk::runtime::TokioCurrentThread,
142-
opentelemetry_otlp::NoExporterConfig,
143-
> {
144-
return opentelemetry_otlp::new_pipeline()
145-
.metrics(opentelemetry_sdk::runtime::TokioCurrentThread);
146-
}
147-
148-
#[cfg(all(
149-
feature = "otel-push-exporter-async-std",
150-
not(any(
151-
feature = "otel-push-exporter-tokio",
152-
feature = "otel-push-exporter-tokio-current-thread"
153-
))
154-
))]
155-
fn runtime(
156-
) -> OtlpMetricPipeline<opentelemetry_sdk::runtime::AsyncStd, opentelemetry_otlp::NoExporterConfig>
157-
{
158-
return opentelemetry_otlp::new_pipeline().metrics(opentelemetry_sdk::runtime::AsyncStd);
159-
}
160-
161-
#[cfg(not(any(
162-
feature = "otel-push-exporter-tokio",
163-
feature = "otel-push-exporter-tokio-current-thread",
164-
feature = "otel-push-exporter-async-std"
165-
)))]
166-
fn runtime() -> ! {
167-
compile_error!("select your runtime (`otel-push-exporter-tokio`, `otel-push-exporter-tokio-current-thread` or `otel-push-exporter-async-std`) for the autometrics push exporter or use the custom push exporter if none fit")
124+
fn runtime() -> MeterProviderBuilder {
125+
SdkMeterProvider::builder()
168126
}

0 commit comments

Comments
 (0)