Skip to content

Commit a3ea6ab

Browse files
committed
Replace Prometheus metrics with OpenTelemetry API
Push instead of Pull. Swap the `prometheus` crate for `opentelemetry` + `opentelemetry_sdk` Metrics instruments use the OTel Metrics API. Remove the standalone `/metrics` Prometheus endpoint, its dedicated listener/port, and all related code no longer needed for OTLP push.
1 parent 9908084 commit a3ea6ab

7 files changed

Lines changed: 126 additions & 234 deletions

File tree

Cargo-minimal.lock

Lines changed: 31 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2498,6 +2498,35 @@ version = "0.1.5"
24982498
source = "registry+https://github.com/rust-lang/crates.io-index"
24992499
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
25002500

2501+
[[package]]
2502+
name = "opentelemetry"
2503+
version = "0.31.0"
2504+
source = "registry+https://github.com/rust-lang/crates.io-index"
2505+
checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0"
2506+
dependencies = [
2507+
"futures-core",
2508+
"futures-sink",
2509+
"js-sys",
2510+
"pin-project-lite",
2511+
"thiserror 2.0.17",
2512+
"tracing",
2513+
]
2514+
2515+
[[package]]
2516+
name = "opentelemetry_sdk"
2517+
version = "0.31.0"
2518+
source = "registry+https://github.com/rust-lang/crates.io-index"
2519+
checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd"
2520+
dependencies = [
2521+
"futures-channel",
2522+
"futures-executor",
2523+
"futures-util",
2524+
"opentelemetry",
2525+
"percent-encoding",
2526+
"rand 0.9.1",
2527+
"thiserror 2.0.17",
2528+
]
2529+
25012530
[[package]]
25022531
name = "option-ext"
25032532
version = "0.2.0"
@@ -2695,9 +2724,10 @@ dependencies = [
26952724
"clap",
26962725
"config",
26972726
"ohttp-relay",
2727+
"opentelemetry",
2728+
"opentelemetry_sdk",
26982729
"payjoin-directory",
26992730
"payjoin-test-utils",
2700-
"prometheus",
27012731
"rand 0.8.5",
27022732
"reqwest",
27032733
"rustls 0.23.31",
@@ -2912,41 +2942,6 @@ dependencies = [
29122942
"unicode-ident",
29132943
]
29142944

2915-
[[package]]
2916-
name = "prometheus"
2917-
version = "0.14.0"
2918-
source = "registry+https://github.com/rust-lang/crates.io-index"
2919-
checksum = "3ca5326d8d0b950a9acd87e6a3f94745394f62e4dae1b1ee22b2bc0c394af43a"
2920-
dependencies = [
2921-
"cfg-if",
2922-
"fnv",
2923-
"lazy_static",
2924-
"memchr",
2925-
"parking_lot 0.12.3",
2926-
"protobuf",
2927-
"thiserror 2.0.17",
2928-
]
2929-
2930-
[[package]]
2931-
name = "protobuf"
2932-
version = "3.7.2"
2933-
source = "registry+https://github.com/rust-lang/crates.io-index"
2934-
checksum = "d65a1d4ddae7d8b5de68153b48f6aa3bba8cb002b243dbdbc55a5afbc98f99f4"
2935-
dependencies = [
2936-
"once_cell",
2937-
"protobuf-support",
2938-
"thiserror 1.0.63",
2939-
]
2940-
2941-
[[package]]
2942-
name = "protobuf-support"
2943-
version = "3.7.2"
2944-
source = "registry+https://github.com/rust-lang/crates.io-index"
2945-
checksum = "3e36c2f31e0a47f9280fb347ef5e461ffcd2c52dd520d8e216b52f93b0b0d7d6"
2946-
dependencies = [
2947-
"thiserror 1.0.63",
2948-
]
2949-
29502945
[[package]]
29512946
name = "quinn"
29522947
version = "0.11.8"

Cargo-recent.lock

Lines changed: 31 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2498,6 +2498,35 @@ version = "0.1.5"
24982498
source = "registry+https://github.com/rust-lang/crates.io-index"
24992499
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
25002500

2501+
[[package]]
2502+
name = "opentelemetry"
2503+
version = "0.31.0"
2504+
source = "registry+https://github.com/rust-lang/crates.io-index"
2505+
checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0"
2506+
dependencies = [
2507+
"futures-core",
2508+
"futures-sink",
2509+
"js-sys",
2510+
"pin-project-lite",
2511+
"thiserror 2.0.17",
2512+
"tracing",
2513+
]
2514+
2515+
[[package]]
2516+
name = "opentelemetry_sdk"
2517+
version = "0.31.0"
2518+
source = "registry+https://github.com/rust-lang/crates.io-index"
2519+
checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd"
2520+
dependencies = [
2521+
"futures-channel",
2522+
"futures-executor",
2523+
"futures-util",
2524+
"opentelemetry",
2525+
"percent-encoding",
2526+
"rand 0.9.1",
2527+
"thiserror 2.0.17",
2528+
]
2529+
25012530
[[package]]
25022531
name = "option-ext"
25032532
version = "0.2.0"
@@ -2695,9 +2724,10 @@ dependencies = [
26952724
"clap",
26962725
"config",
26972726
"ohttp-relay",
2727+
"opentelemetry",
2728+
"opentelemetry_sdk",
26982729
"payjoin-directory",
26992730
"payjoin-test-utils",
2700-
"prometheus",
27012731
"rand 0.8.5",
27022732
"reqwest",
27032733
"rustls 0.23.31",
@@ -2912,41 +2942,6 @@ dependencies = [
29122942
"unicode-ident",
29132943
]
29142944

2915-
[[package]]
2916-
name = "prometheus"
2917-
version = "0.14.0"
2918-
source = "registry+https://github.com/rust-lang/crates.io-index"
2919-
checksum = "3ca5326d8d0b950a9acd87e6a3f94745394f62e4dae1b1ee22b2bc0c394af43a"
2920-
dependencies = [
2921-
"cfg-if",
2922-
"fnv",
2923-
"lazy_static",
2924-
"memchr",
2925-
"parking_lot 0.12.3",
2926-
"protobuf",
2927-
"thiserror 2.0.17",
2928-
]
2929-
2930-
[[package]]
2931-
name = "protobuf"
2932-
version = "3.7.2"
2933-
source = "registry+https://github.com/rust-lang/crates.io-index"
2934-
checksum = "d65a1d4ddae7d8b5de68153b48f6aa3bba8cb002b243dbdbc55a5afbc98f99f4"
2935-
dependencies = [
2936-
"once_cell",
2937-
"protobuf-support",
2938-
"thiserror 1.0.63",
2939-
]
2940-
2941-
[[package]]
2942-
name = "protobuf-support"
2943-
version = "3.7.2"
2944-
source = "registry+https://github.com/rust-lang/crates.io-index"
2945-
checksum = "3e36c2f31e0a47f9280fb347ef5e461ffcd2c52dd520d8e216b52f93b0b0d7d6"
2946-
dependencies = [
2947-
"thiserror 1.0.63",
2948-
]
2949-
29502945
[[package]]
29512946
name = "quinn"
29522947
version = "0.11.8"

payjoin-service/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ axum-server = { version = "0.8", features = [
3232
clap = { version = "4.5", features = ["derive", "env"] }
3333
config = "0.15"
3434
ohttp-relay = { path = "../ohttp-relay", features = ["bootstrap"] }
35+
opentelemetry = "0.31"
36+
opentelemetry_sdk = "0.31"
3537
payjoin-directory = { path = "../payjoin-directory" }
36-
prometheus = "0.14.0"
3738
rand = "0.8"
3839
rustls = { version = "0.23", default-features = false, features = [
3940
"ring",

payjoin-service/src/config.rs

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,10 @@ pub struct Config {
1212
pub storage_dir: PathBuf,
1313
#[serde(deserialize_with = "deserialize_duration_secs")]
1414
pub timeout: Duration,
15-
pub metrics: MetricsConfig,
1615
#[cfg(feature = "acme")]
1716
pub acme: Option<AcmeConfig>,
1817
}
1918

20-
#[derive(Debug, Clone, Deserialize)]
21-
#[serde(default)]
22-
pub struct MetricsConfig {
23-
pub listener: ListenerAddress,
24-
}
25-
26-
impl Default for MetricsConfig {
27-
fn default() -> Self {
28-
Self { listener: "[::]:9090".parse().expect("valid default metrics listener address") }
29-
}
30-
}
31-
3219
#[cfg(feature = "acme")]
3320
#[derive(Debug, Clone, Deserialize)]
3421
pub struct AcmeConfig {
@@ -61,7 +48,6 @@ impl Default for Config {
6148
listener: "[::]:8080".parse().expect("valid default listener address"),
6249
storage_dir: PathBuf::from("./data"),
6350
timeout: Duration::from_secs(30),
64-
metrics: MetricsConfig::default(),
6551
#[cfg(feature = "acme")]
6652
acme: None,
6753
}
@@ -77,17 +63,11 @@ where
7763
}
7864

7965
impl Config {
80-
pub fn new(
81-
listener: ListenerAddress,
82-
storage_dir: PathBuf,
83-
timeout: Duration,
84-
metrics_listener: ListenerAddress,
85-
) -> Self {
66+
pub fn new(listener: ListenerAddress, storage_dir: PathBuf, timeout: Duration) -> Self {
8667
Self {
8768
listener,
8869
storage_dir,
8970
timeout,
90-
metrics: MetricsConfig { listener: metrics_listener },
9171
#[cfg(feature = "acme")]
9272
acme: None,
9373
}

0 commit comments

Comments
 (0)