use prometrics::metrics::{Counter, Gauge, Histogram, MetricBuilder};
#[derive(Debug)]
pub struct Metrics {
pub enqueued_tasks: Counter,
pub dequeued_tasks: Counter,
pub workers: Gauge,
pub worker_restarts: Counter,
pub task_duration_seconds: Histogram,
}
impl Metrics {
pub(crate) fn new(mut builder: MetricBuilder) -> Self {
builder.namespace("tasque");
Metrics {
enqueued_tasks: builder
.counter("enqueued_tasks_total")
.help("Number of enqueued tasks")
.finish()
.expect("Never fails"),
dequeued_tasks: builder
.counter("dequeued_tasks_total")
.help("Number of dequeued tasks (those may not have been executed yet)")
.finish()
.expect("Never fails"),
workers: builder
.gauge("workers")
.help("Number of workers")
.finish()
.expect("Never fails"),
worker_restarts: builder
.counter("worker_restarts_total")
.help("Number of worker restarts")
.finish()
.expect("Never fails"),
task_duration_seconds: builder
.histogram("task_duration_seconds")
.help("Execution time of tasks")
.bucket(0.001)
.bucket(0.01)
.bucket(0.1)
.bucket(1.0)
.bucket(10.0)
.bucket(100.0)
.finish()
.expect("Never fails"),
}
}
}