diff --git a/Cargo.lock b/Cargo.lock index 5283ef1e..43cdb719 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -80,6 +80,28 @@ dependencies = [ "num-traits", ] +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "atomic-waker" version = "1.1.2" @@ -1186,9 +1208,12 @@ dependencies = [ "itoa", "lockfree-object-pool", "metrics", + "metrics-exporter-prometheus", "metrics-util", "once_cell", "parking_lot", + "tokio", + "tokio-test", "tracing", "tracing-core", "tracing-subscriber", @@ -2327,6 +2352,30 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-test" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2468baabc3311435b55dd935f702f42cd1b8abb7e754fb7dfb16bd36aa88f9f7" +dependencies = [ + "async-stream", + "bytes", + "futures-core", + "tokio", + "tokio-stream", +] + [[package]] name = "tokio-util" version = "0.7.14" diff --git a/metrics-tracing-context/Cargo.toml b/metrics-tracing-context/Cargo.toml index 4b398963..28fc567a 100644 --- a/metrics-tracing-context/Cargo.toml +++ b/metrics-tracing-context/Cargo.toml @@ -42,4 +42,7 @@ criterion = { workspace = true } itertools = { workspace = true, features = ["use_std"] } parking_lot = { workspace = true } tracing = { workspace = true, features = ["std"] } -tracing-subscriber = { workspace = true, features = ["registry"] } +tracing-subscriber = { workspace = true, features = ["registry", "fmt"] } +tokio = { workspace = true } +metrics-exporter-prometheus = { version = "0.17.0", path = "../metrics-exporter-prometheus" } +tokio-test = "0.4.4" diff --git a/metrics-tracing-context/src/lib.rs b/metrics-tracing-context/src/lib.rs index b68d4c1b..7f1b5ca6 100644 --- a/metrics-tracing-context/src/lib.rs +++ b/metrics-tracing-context/src/lib.rs @@ -9,21 +9,28 @@ //! First, set up `tracing` and `metrics` crates: //! //! ```rust -//! # use metrics_util::debugging::DebuggingRecorder; -//! # use tracing_subscriber::Registry; +//! # tokio_test::block_on(async { +//! use metrics_exporter_prometheus::PrometheusBuilder; //! use metrics_tracing_context::{MetricsLayer, TracingContextLayer}; //! use metrics_util::layers::Layer; //! use tracing_subscriber::layer::SubscriberExt; +//! use tracing_subscriber::{self, Registry}; //! //! // Prepare tracing. -//! # let my_subscriber = Registry::default(); -//! let subscriber = my_subscriber.with(MetricsLayer::new()); +//! let (recorder, metric_server) = PrometheusBuilder::new() +//! .with_http_listener(([0, 0, 0, 0], 1111)) +//! .build() +//! .unwrap(); +//! let server_handle = tokio::spawn(metric_server); +//! let subscriber = Registry::default() +//! .with(tracing_subscriber::fmt::layer()) +//! .with(MetricsLayer::new()); //! tracing::subscriber::set_global_default(subscriber).unwrap(); //! -//! // Prepare metrics. -//! # let my_recorder = DebuggingRecorder::new(); -//! let recorder = TracingContextLayer::all().layer(my_recorder); +//! // Prepare recorder. +//! let recorder = TracingContextLayer::all().layer(recorder); //! metrics::set_global_recorder(recorder).unwrap(); +//! # }); //! ``` //! //! Then emit some metrics within spans and see the labels being injected!