feat: add prometheus monitor

This commit is contained in:
Ondrej Vlach 2023-12-10 17:53:25 +01:00
parent 6679779927
commit a7f3ac09e0
Signed by: ovlach
GPG Key ID: 4FF1A23B4914DE70
3 changed files with 31 additions and 0 deletions

25
Cargo.lock generated
View File

@ -1731,6 +1731,7 @@ dependencies = [
"phf", "phf",
"reqwest", "reqwest",
"rocket", "rocket",
"rocket_prometheus",
"serde", "serde",
"serde_json", "serde_json",
"serde_yaml", "serde_yaml",
@ -1982,6 +1983,20 @@ dependencies = [
"yansi 1.0.0-rc.1", "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]] [[package]]
name = "prost" name = "prost"
version = "0.11.9" version = "0.11.9"
@ -2273,6 +2288,16 @@ dependencies = [
"uncased", "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]] [[package]]
name = "rustc-demangle" name = "rustc-demangle"
version = "0.1.23" version = "0.1.23"

View File

@ -17,6 +17,7 @@ async-trait = "0.1.74"
async-mutex = "1.4.0" async-mutex = "1.4.0"
tokio = { version = "1.34.0", features = ["macros"] } tokio = { version = "1.34.0", features = ["macros"] }
tracing = { version = "0.1.40", features = ["attributes", "std"] } tracing = { version = "0.1.40", features = ["attributes", "std"] }
rocket_prometheus = "0.10.0"
yansi = "0.5.1" yansi = "0.5.1"
tera = "1.19.1" tera = "1.19.1"
tempfile = "3.8.1" tempfile = "3.8.1"

View File

@ -1,6 +1,7 @@
use chromium::rocket::Chromium; use chromium::rocket::Chromium;
use nanobyte_opentelemetry::rocket::TracingFairing; use nanobyte_opentelemetry::rocket::TracingFairing;
use rocket::{Rocket, Build, routes, fairing::AdHoc}; use rocket::{Rocket, Build, routes, fairing::AdHoc};
use rocket_prometheus::PrometheusMetrics;
use serde::Deserialize; use serde::Deserialize;
pub mod routes; pub mod routes;
mod chromium; mod chromium;
@ -24,6 +25,8 @@ pub struct DefaultPerson {
} }
pub fn rocket_builder() -> Rocket<Build> { pub fn rocket_builder() -> Rocket<Build> {
let prometheus = PrometheusMetrics::new();
rocket::build() rocket::build()
.attach(TracingFairing::ignite()) .attach(TracingFairing::ignite())
.attach(Chromium::ignite()) .attach(Chromium::ignite())
@ -33,8 +36,10 @@ pub fn rocket_builder() -> Rocket<Build> {
.attach( .attach(
AdHoc::config::<DefaultPerson>() AdHoc::config::<DefaultPerson>()
) )
.attach(prometheus.clone())
.mount("/", routes![ .mount("/", routes![
routes::pdf::render_pdf_cv, routes::pdf::render_pdf_cv,
routes::pdf::render_html_cv routes::pdf::render_html_cv
]) ])
.mount("/metrics", prometheus)
} }