From 4a79fdc5be2a6e016e6d106a35b2571d289c5a79 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Wed, 10 Dec 2025 16:45:48 +0100 Subject: [PATCH] Expose process metrics on Linux --- Cargo.lock | 33 +++++++++++++++++++++++++++++++++ Cargo.toml | 2 ++ crates/cli/Cargo.toml | 1 + crates/cli/src/telemetry.rs | 3 +++ 4 files changed, 39 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 421938132..b54f3a91d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3170,6 +3170,7 @@ dependencies = [ "mas-tower", "opentelemetry", "opentelemetry-http", + "opentelemetry-instrumentation-process", "opentelemetry-jaeger-propagator", "opentelemetry-otlp", "opentelemetry-prometheus-text-exporter", @@ -4132,6 +4133,17 @@ dependencies = [ "reqwest", ] +[[package]] +name = "opentelemetry-instrumentation-process" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a81f1738bbdcf58eae20bd85ab0973f9c1f700ba37789e3253dc4e7ba61855c" +dependencies = [ + "opentelemetry", + "opentelemetry-semantic-conventions", + "procfs", +] + [[package]] name = "opentelemetry-jaeger-propagator" version = "0.31.0" @@ -4648,6 +4660,27 @@ dependencies = [ "yansi", ] +[[package]] +name = "procfs" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" +dependencies = [ + "bitflags", + "procfs-core", + "rustix", +] + +[[package]] +name = "procfs-core" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" +dependencies = [ + "bitflags", + "hex", +] + [[package]] name = "prost" version = "0.14.1" diff --git a/Cargo.toml b/Cargo.toml index 7b1aba0d4..88e507328 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -401,6 +401,8 @@ features = ["trace", "metrics"] [workspace.dependencies.opentelemetry-http] version = "0.31.0" features = ["reqwest"] +[workspace.dependencies.opentelemetry-instrumentation-process] +version = "0.1.2" [workspace.dependencies.opentelemetry-jaeger-propagator] version = "0.31.0" [workspace.dependencies.opentelemetry-otlp] diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 1baebd12c..21920e9ee 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -57,6 +57,7 @@ tracing-subscriber.workspace = true tracing-opentelemetry.workspace = true opentelemetry.workspace = true opentelemetry-http.workspace = true +opentelemetry-instrumentation-process.workspace = true opentelemetry-jaeger-propagator.workspace = true opentelemetry-otlp.workspace = true opentelemetry-prometheus-text-exporter.workspace = true diff --git a/crates/cli/src/telemetry.rs b/crates/cli/src/telemetry.rs index 54222c8be..39b418457 100644 --- a/crates/cli/src/telemetry.rs +++ b/crates/cli/src/telemetry.rs @@ -61,6 +61,9 @@ pub fn setup(config: &TelemetryConfig) -> anyhow::Result<()> { init_tracer(&config.tracing).context("Failed to configure traces exporter")?; init_meter(&config.metrics).context("Failed to configure metrics exporter")?; + opentelemetry_instrumentation_process::init() + .context("Failed to configure process instrumentation")?; + let handle = ::tokio::runtime::Handle::current(); self::tokio::observe(handle.metrics());