AppFlowy-Cloud/src/biz/collab/metrics.rs

78 lines
2.4 KiB
Rust

use prometheus_client::metrics::gauge::Gauge;
use prometheus_client::registry::Registry;
#[derive(Clone)]
pub struct CollabMetrics {
success_write_snapshot_count: Gauge,
total_write_snapshot_count: Gauge,
success_write_collab_count: Gauge,
total_write_collab_count: Gauge,
total_queue_collab_count: Gauge,
success_queue_collab_count: Gauge,
}
impl CollabMetrics {
fn init() -> Self {
Self {
success_write_snapshot_count: Gauge::default(),
total_write_snapshot_count: Default::default(),
success_write_collab_count: Default::default(),
total_write_collab_count: Default::default(),
total_queue_collab_count: Default::default(),
success_queue_collab_count: Default::default(),
}
}
pub fn register(registry: &mut Registry) -> Self {
let metrics = Self::init();
let realtime_registry = registry.sub_registry_with_prefix("collab");
realtime_registry.register(
"success_write_snapshot_count",
"success write snapshot to db",
metrics.success_write_snapshot_count.clone(),
);
realtime_registry.register(
"total_attempt_write_snapshot_count",
"total attempt write snapshot to db",
metrics.total_write_snapshot_count.clone(),
);
realtime_registry.register(
"success_write_collab_count",
"success write collab",
metrics.success_write_collab_count.clone(),
);
realtime_registry.register(
"total_write_collab_count",
"total write collab",
metrics.total_write_collab_count.clone(),
);
realtime_registry.register(
"success_queue_collab_count",
"success queue collab",
metrics.success_queue_collab_count.clone(),
);
realtime_registry.register(
"total_queue_collab_count",
"total queue pending collab",
metrics.total_queue_collab_count.clone(),
);
metrics
}
pub fn record_write_snapshot(&self, success_attempt: i64, total_attempt: i64) {
self.success_write_snapshot_count.set(success_attempt);
self.total_write_snapshot_count.set(total_attempt);
}
pub fn record_write_collab(&self, success_attempt: i64, total_attempt: i64) {
self.success_write_collab_count.set(success_attempt);
self.total_write_collab_count.set(total_attempt);
}
pub fn record_queue_collab(&self, success_attempt: i64, total_attempt: i64) {
self.success_queue_collab_count.set(success_attempt);
self.total_queue_collab_count.set(total_attempt);
}
}