Crate prometheus_macros
source ·Expand description
prometheus-macros
offers advanced macros for defining prometheus
metrics.
This crate extends prometheus
by introducing declarative macros that minimize
boilerplate during the declaration and initialization of metrics. Multiple metrics
are often needed, as seen for example in contexts like HTTP request
where one needs to declare distinct metrics for request count and request latency.
Although prometheus
already offers declarative macros for initializing individual
metrics, it can still lead to significant boilerplate when declaring multiple metrics.
Example
use prometheus::{IntGauge, HistogramVec};
use prometheus_macros::composite_metric;
composite_metric! {
struct CompositeMetric {
#[name = "custom_gauge"]
#[desc = "Example gauge metric"]
custom_gauge: IntGauge,
#[name = "custom_hist_vec"]
#[desc = "Example histogram vec"]
#[labels = ["foo", "bar"]]
#[buckets = [0.01, 0.1, 0.2]]
custom_hist_vec: HistogramVec,
}
}
let metric = CompositeMetric::register(prometheus::default_registry())
.expect("failed to register metrics to default registry");
// access the metrics
metric.custom_gauge().set(420);
metric.custom_hist_vec().with_label_values(&["a", "b"]).observe(0.5);
Macros
- Composes multiple prometheus metrics into one struct.
Structs
- A more generic prometheus options that allow construction of both scalar and vector metrics.