diff --git a/Cargo.lock b/Cargo.lock index c74091c..85e2819 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1731,6 +1731,7 @@ dependencies = [ "phf", "reqwest", "rocket", + "rocket_prometheus", "serde", "serde_json", "serde_yaml", @@ -1982,6 +1983,20 @@ dependencies = [ "yansi 1.0.0-rc.1", ] +[[package]] +name = "prometheus" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "thiserror", +] + [[package]] name = "prost" version = "0.11.9" @@ -2273,6 +2288,16 @@ dependencies = [ "uncased", ] +[[package]] +name = "rocket_prometheus" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18faabccdfcd08d4501768f5b6936f6332af10496f1ea8107eb48a7766e03439" +dependencies = [ + "prometheus", + "rocket", +] + [[package]] name = "rustc-demangle" version = "0.1.23" diff --git a/Cargo.toml b/Cargo.toml index 9a8359f..726d41c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ async-trait = "0.1.74" async-mutex = "1.4.0" tokio = { version = "1.34.0", features = ["macros"] } tracing = { version = "0.1.40", features = ["attributes", "std"] } +rocket_prometheus = "0.10.0" yansi = "0.5.1" tera = "1.19.1" tempfile = "3.8.1" diff --git a/src/lib.rs b/src/lib.rs index 033b2f5..da09273 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ use chromium::rocket::Chromium; use nanobyte_opentelemetry::rocket::TracingFairing; use rocket::{Rocket, Build, routes, fairing::AdHoc}; +use rocket_prometheus::PrometheusMetrics; use serde::Deserialize; pub mod routes; mod chromium; @@ -24,6 +25,8 @@ pub struct DefaultPerson { } pub fn rocket_builder() -> Rocket { + let prometheus = PrometheusMetrics::new(); + rocket::build() .attach(TracingFairing::ignite()) .attach(Chromium::ignite()) @@ -33,8 +36,10 @@ pub fn rocket_builder() -> Rocket { .attach( AdHoc::config::() ) + .attach(prometheus.clone()) .mount("/", routes![ routes::pdf::render_pdf_cv, routes::pdf::render_html_cv ]) + .mount("/metrics", prometheus) }