Crates.io | prometheus-macros |
lib.rs | prometheus-macros |
version | 0.1.0 |
source | src |
created_at | 2023-08-04 16:41:19.604998 |
updated_at | 2023-08-04 16:41:19.604998 |
description | Macros for declaring prometheus metrics |
homepage | |
repository | https://github.com/heat1q/prometheus-macros |
max_upload_size | |
id | 935418 |
size | 26,041 |
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.
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,
}
}
fn main() {
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);
}