40 lines
1.0 KiB
Rust

use lazy_static::lazy_static;
use prometheus::{self, register_histogram_vec, register_int_counter_vec};
lazy_static! {
pub static ref HTTP_METRICS: HttpMetrics = HttpMetrics::new();
}
#[derive(Clone)]
pub struct HttpMetrics {
pub request_duration: prometheus::HistogramVec,
pub requests_total: prometheus::IntCounterVec,
}
impl Default for HttpMetrics {
fn default() -> Self {
Self::new()
}
}
impl HttpMetrics {
pub fn new() -> Self {
Self {
request_duration: register_histogram_vec!(
"http_request_duration_seconds",
"Request duration in seconds",
&["method", "path", "status"]
)
.unwrap(),
requests_total: register_int_counter_vec!(
"http_requests_total",
"Total number of HTTP requests",
&["method", "path", "status"]
)
.unwrap(),
}
}
}
pub const TEXT_CONTENT_TYPE: &str = "text/plain; version=0.0.4";