web: enable prometheus again

This commit is contained in:
Justus Winter 2022-01-17 14:24:00 +01:00 committed by Vincent Breitmoser
parent b428116189
commit a31d69d111
4 changed files with 34 additions and 19 deletions

24
Cargo.lock generated
View File

@ -949,6 +949,7 @@ dependencies = [
"rocket_codegen", "rocket_codegen",
"rocket_dyn_templates", "rocket_dyn_templates",
"rocket_i18n", "rocket_i18n",
"rocket_prometheus",
"sequoia-openpgp", "sequoia-openpgp",
"serde", "serde",
"serde_derive", "serde_derive",
@ -2067,6 +2068,20 @@ dependencies = [
"yansi", "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]] [[package]]
name = "quick-error" name = "quick-error"
version = "1.2.3" version = "1.2.3"
@ -2505,6 +2520,15 @@ dependencies = [
"rocket", "rocket",
] ]
[[package]]
name = "rocket_prometheus"
version = "0.9.0"
source = "git+https://github.com/sd2k/rocket_prometheus?branch=async#a913a451555ba1344e88c9e730c4164b20032c40"
dependencies = [
"prometheus",
"rocket",
]
[[package]] [[package]]
name = "rustc-demangle" name = "rustc-demangle"
version = "0.1.21" version = "0.1.21"

View File

@ -33,7 +33,7 @@ num_cpus = "1.0"
ring = "0.13" ring = "0.13"
base64 = "0.10" base64 = "0.10"
uuid = { version = "0.7", features = [ "v4" ] } 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" lazy_static = "1.3.0"
gettext-macros = "0.6" gettext-macros = "0.6"
gettext-utils = "0.1" gettext-utils = "0.1"

View File

@ -1,12 +1,10 @@
use lazy_static::lazy_static; use lazy_static::lazy_static;
// use rocket_prometheus::prometheus; use rocket_prometheus::prometheus;
use crate::anonymize_utils; use crate::anonymize_utils;
use crate::database::types::Email; use crate::database::types::Email;
// TODO this module is a stub at the moment for rocket 0.5 migration. reintroduce later on?
lazy_static! { lazy_static! {
static ref KEY_UPLOAD: LabelCounter = static ref KEY_UPLOAD: LabelCounter =
LabelCounter::new("hagrid_key_upload", "Uploaded keys", &["result"]); LabelCounter::new("hagrid_key_upload", "Uploaded keys", &["result"]);
@ -20,7 +18,6 @@ lazy_static! {
LabelCounter::new("hagrid_key_address_unpublished", "Unpublished email addresses", &["domain"]); LabelCounter::new("hagrid_key_address_unpublished", "Unpublished email addresses", &["domain"]);
} }
/*
pub fn register_counters(registry: &prometheus::Registry) { pub fn register_counters(registry: &prometheus::Registry) {
KEY_UPLOAD.register(registry); KEY_UPLOAD.register(registry);
@ -29,7 +26,6 @@ pub fn register_counters(registry: &prometheus::Registry) {
KEY_ADDRESS_PUBLISHED.register(registry); KEY_ADDRESS_PUBLISHED.register(registry);
KEY_ADDRESS_UNPUBLISHED.register(registry); KEY_ADDRESS_UNPUBLISHED.register(registry);
} }
*/
pub fn inc_key_upload(upload_result: &str) { pub fn inc_key_upload(upload_result: &str) {
KEY_UPLOAD.inc(&[upload_result]); KEY_UPLOAD.inc(&[upload_result]);
@ -51,24 +47,21 @@ pub fn inc_address_unpublished(email: &Email) {
} }
struct LabelCounter { struct LabelCounter {
// prometheus_counter: prometheus::IntCounterVec, prometheus_counter: prometheus::IntCounterVec,
} }
impl LabelCounter { impl LabelCounter {
fn new(name: &str, help: &str, labels: &[&str]) -> Self { fn new(name: &str, help: &str, labels: &[&str]) -> Self {
// let opts = prometheus::Opts::new(name, help); let opts = prometheus::Opts::new(name, help);
// let prometheus_counter = prometheus::IntCounterVec::new(opts, labels).unwrap(); let prometheus_counter = prometheus::IntCounterVec::new(opts, labels).unwrap();
// Self { prometheus_counter } Self { prometheus_counter }
Self { }
} }
/*
fn register(&self, registry: &prometheus::Registry) { fn register(&self, registry: &prometheus::Registry) {
registry.register(Box::new(self.prometheus_counter.clone())).unwrap(); registry.register(Box::new(self.prometheus_counter.clone())).unwrap();
} }
*/
fn inc(&self, values: &[&str]) { fn inc(&self, values: &[&str]) {
// self.prometheus_counter.with_label_values(values).inc(); self.prometheus_counter.with_label_values(values).inc();
} }
} }

View File

@ -8,6 +8,7 @@ use rocket::response::{Responder, Response};
use rocket::response::status::Custom; use rocket::response::status::Custom;
use rocket_dyn_templates::{Engines, Template}; use rocket_dyn_templates::{Engines, Template};
use rocket_i18n::I18n; use rocket_i18n::I18n;
use rocket_prometheus::PrometheusMetrics;
use hyperx::header::{ContentDisposition, DispositionType, DispositionParam, Charset}; use hyperx::header::{ContentDisposition, DispositionType, DispositionParam, Charset};
use gettext_macros::{compile_i18n, include_i18n}; use gettext_macros::{compile_i18n, include_i18n};
@ -18,6 +19,7 @@ use std::path::PathBuf;
use crate::mail; use crate::mail;
use crate::tokens; use crate::tokens;
use crate::counters;
use crate::i18n_helpers::describe_query_error; use crate::i18n_helpers::describe_query_error;
use crate::template_helpers::TemplateOverrides; use crate::template_helpers::TemplateOverrides;
use crate::i18n::I18NHelper; use crate::i18n::I18NHelper;
@ -404,7 +406,7 @@ fn rocket_factory(mut rocket: rocket::Rocket<rocket::Build>) -> Result<rocket::R
let localized_template_list = configure_localized_template_list(figment)?; let localized_template_list = configure_localized_template_list(figment)?;
println!("{:?}", localized_template_list); println!("{:?}", localized_template_list);
// let prometheus = configure_prometheus(rocket.config()); let prometheus = configure_prometheus(figment);
rocket = rocket rocket = rocket
.attach(Template::custom(|engines: &mut Engines| { .attach(Template::custom(|engines: &mut Engines| {
@ -423,18 +425,15 @@ fn rocket_factory(mut rocket: rocket::Rocket<rocket::Build>) -> Result<rocket::R
.manage(localized_template_list) .manage(localized_template_list)
.mount("/", routes); .mount("/", routes);
/*
if let Some(prometheus) = prometheus { if let Some(prometheus) = prometheus {
rocket = rocket rocket = rocket
.attach(prometheus.clone()) .attach(prometheus.clone())
.mount("/metrics", prometheus); .mount("/metrics", prometheus);
} }
*/
Ok(rocket) Ok(rocket)
} }
/*
fn configure_prometheus(config: &Figment) -> Option<PrometheusMetrics> { fn configure_prometheus(config: &Figment) -> Option<PrometheusMetrics> {
if !config.extract_inner("enable_prometheus").unwrap_or(false) { if !config.extract_inner("enable_prometheus").unwrap_or(false) {
return None; return None;
@ -443,7 +442,6 @@ fn configure_prometheus(config: &Figment) -> Option<PrometheusMetrics> {
counters::register_counters(&prometheus.registry()); counters::register_counters(&prometheus.registry());
return Some(prometheus); return Some(prometheus);
} }
*/
fn configure_db_service(config: &Figment) -> Result<KeyDatabase> { fn configure_db_service(config: &Figment) -> Result<KeyDatabase> {
let keys_internal_dir: PathBuf = config.extract_inner("keys_internal_dir")?; let keys_internal_dir: PathBuf = config.extract_inner("keys_internal_dir")?;