lox/crates/lox-distributor/src/metrics.rs

104 lines
3.7 KiB
Rust
Raw Normal View History

2023-10-30 12:54:59 -04:00
use futures::executor::block_on;
use prometheus::{Counter, Encoder, Opts, Registry, TextEncoder};
#[derive(Debug, Clone)]
pub struct Metrics {
pub open_inv_count: Counter,
pub trust_promo_count: Counter,
pub trust_mig_count: Counter,
pub level_up_count: Counter,
pub issue_invite_count: Counter,
pub redeem_invite_count: Counter,
pub check_blockage_count: Counter,
pub blockage_migration_count: Counter,
pub k_reset_count: Counter,
pub buckets_requested_today: Counter,
}
impl Default for Metrics {
fn default() -> Self {
// Create counters.
let open_inv_count = Counter::with_opts(Opts::new(
"open_inv_counter",
"number of open invitations distributed",
))
.unwrap();
let trust_promo_count = Counter::with_opts(Opts::new(
"trust_promo_counter",
"number of trust promotions requests",
))
.unwrap();
let trust_mig_count = Counter::with_opts(Opts::new(
"trust_mig_counter",
"number of trust migrations requests",
))
.unwrap();
let level_up_count =
Counter::with_opts(Opts::new("level_up_counter", "number of level up requests"))
.unwrap();
let issue_invite_count = Counter::with_opts(Opts::new(
"issue_invite_counter",
"number of issue invite requests",
))
.unwrap();
let redeem_invite_count =
Counter::with_opts(Opts::new("redeem_invite_counter", "number of level up requests"))
.unwrap();
let check_blockage_count = Counter::with_opts(Opts::new(
"check_blockage_counter",
"number of check blockage requests",
))
.unwrap();
let blockage_migration_count = Counter::with_opts(Opts::new(
"blockage_migration_counter",
"number of blockage migration requests",
))
.unwrap();
let k_reset_count = Counter::with_opts(Opts::new(
"k_reset_counter",
"number of times k has reset to 0",
))
.unwrap();
let buckets_requested_today = Counter::with_opts(Opts::new(
"buckets_requested_today",
"number of buckets used today",
))
.unwrap();
// Create a Registry and register Counter.
let r = Registry::new();
r.register(Box::new(open_inv_count.clone())).unwrap();
r.register(Box::new(trust_promo_count.clone())).unwrap();
r.register(Box::new(trust_mig_count.clone())).unwrap();
r.register(Box::new(level_up_count.clone())).unwrap();
r.register(Box::new(issue_invite_count.clone())).unwrap();
r.register(Box::new(redeem_invite_count.clone())).unwrap();
r.register(Box::new(check_blockage_count.clone())).unwrap();
r.register(Box::new(blockage_migration_count.clone())).unwrap();
r.register(Box::new(k_reset_count.clone())).unwrap();
r.register(Box::new(buckets_requested_today.clone())).unwrap();
// Gather the metrics.
/* let mut buffer = vec![];
let encoder = TextEncoder::new();
let metric_families = r.gather();
encoder.encode(&metric_families, &mut buffer).unwrap();
*/
// Output to the standard output.
// println!("{}", String::from_utf8(buffer).unwrap());
Metrics {
open_inv_count,
trust_promo_count,
trust_mig_count,
level_up_count,
issue_invite_count,
redeem_invite_count,
check_blockage_count,
blockage_migration_count,
k_reset_count,
buckets_requested_today,
}
}
}