diff --git a/Cargo.lock b/Cargo.lock index 78d1944..209cd68 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -949,6 +949,7 @@ dependencies = [ "rocket_codegen", "rocket_dyn_templates", "rocket_i18n", + "rocket_prometheus", "sequoia-openpgp", "serde", "serde_derive", @@ -2067,6 +2068,20 @@ dependencies = [ "yansi", ] +[[package]] +name = "prometheus" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504" +dependencies = [ + "cfg-if 1.0.0", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "thiserror", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -2505,6 +2520,15 @@ dependencies = [ "rocket", ] +[[package]] +name = "rocket_prometheus" +version = "0.9.0" +source = "git+https://github.com/sd2k/rocket_prometheus?branch=async#a913a451555ba1344e88c9e730c4164b20032c40" +dependencies = [ + "prometheus", + "rocket", +] + [[package]] name = "rustc-demangle" version = "0.1.21" diff --git a/Cargo.toml b/Cargo.toml index 6a37cb8..1666c11 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ num_cpus = "1.0" ring = "0.13" base64 = "0.10" uuid = { version = "0.7", features = [ "v4" ] } -# rocket_prometheus = "0.2" +rocket_prometheus = { git = "https://github.com/sd2k/rocket_prometheus", branch = "async" } lazy_static = "1.3.0" gettext-macros = "0.6" gettext-utils = "0.1" diff --git a/src/counters.rs b/src/counters.rs index fca1552..01803ba 100644 --- a/src/counters.rs +++ b/src/counters.rs @@ -1,12 +1,10 @@ use lazy_static::lazy_static; -// use rocket_prometheus::prometheus; +use rocket_prometheus::prometheus; use crate::anonymize_utils; use crate::database::types::Email; -// TODO this module is a stub at the moment for rocket 0.5 migration. reintroduce later on? - lazy_static! { static ref KEY_UPLOAD: LabelCounter = LabelCounter::new("hagrid_key_upload", "Uploaded keys", &["result"]); @@ -20,7 +18,6 @@ lazy_static! { LabelCounter::new("hagrid_key_address_unpublished", "Unpublished email addresses", &["domain"]); } -/* pub fn register_counters(registry: &prometheus::Registry) { KEY_UPLOAD.register(registry); @@ -29,7 +26,6 @@ pub fn register_counters(registry: &prometheus::Registry) { KEY_ADDRESS_PUBLISHED.register(registry); KEY_ADDRESS_UNPUBLISHED.register(registry); } -*/ pub fn inc_key_upload(upload_result: &str) { KEY_UPLOAD.inc(&[upload_result]); @@ -51,24 +47,21 @@ pub fn inc_address_unpublished(email: &Email) { } struct LabelCounter { - // prometheus_counter: prometheus::IntCounterVec, + prometheus_counter: prometheus::IntCounterVec, } impl LabelCounter { fn new(name: &str, help: &str, labels: &[&str]) -> Self { - // let opts = prometheus::Opts::new(name, help); - // let prometheus_counter = prometheus::IntCounterVec::new(opts, labels).unwrap(); - // Self { prometheus_counter } - Self { } + let opts = prometheus::Opts::new(name, help); + let prometheus_counter = prometheus::IntCounterVec::new(opts, labels).unwrap(); + Self { prometheus_counter } } - /* fn register(&self, registry: &prometheus::Registry) { registry.register(Box::new(self.prometheus_counter.clone())).unwrap(); } - */ fn inc(&self, values: &[&str]) { - // self.prometheus_counter.with_label_values(values).inc(); + self.prometheus_counter.with_label_values(values).inc(); } } diff --git a/src/web/mod.rs b/src/web/mod.rs index 44631dd..aa916b8 100644 --- a/src/web/mod.rs +++ b/src/web/mod.rs @@ -8,6 +8,7 @@ use rocket::response::{Responder, Response}; use rocket::response::status::Custom; use rocket_dyn_templates::{Engines, Template}; use rocket_i18n::I18n; +use rocket_prometheus::PrometheusMetrics; use hyperx::header::{ContentDisposition, DispositionType, DispositionParam, Charset}; use gettext_macros::{compile_i18n, include_i18n}; @@ -18,6 +19,7 @@ use std::path::PathBuf; use crate::mail; use crate::tokens; +use crate::counters; use crate::i18n_helpers::describe_query_error; use crate::template_helpers::TemplateOverrides; use crate::i18n::I18NHelper; @@ -404,7 +406,7 @@ fn rocket_factory(mut rocket: rocket::Rocket) -> Result) -> Result Option { if !config.extract_inner("enable_prometheus").unwrap_or(false) { return None; @@ -443,7 +442,6 @@ fn configure_prometheus(config: &Figment) -> Option { counters::register_counters(&prometheus.registry()); return Some(prometheus); } -*/ fn configure_db_service(config: &Figment) -> Result { let keys_internal_dir: PathBuf = config.extract_inner("keys_internal_dir")?;