Expand description
Build Prometheus metrics declaratively as structs.
This crate is in the very early stages of development.
§Example
use derive_prom_metrics::Metrics;
use prometheus::{linear_buckets, Gauge};
#[derive(Metrics, Debug)]
struct Metrics {
/// A simple counter.
counter: prometheus::Counter,
/// A simple gauge.
/// Is this in the same line? No.
///
/// This will make it into the help text.
gauge: Gauge,
/**
* My help
*
* This will make it into the help text, as well as all of the leading asterisks.
*/
int_counter: prometheus::IntCounter,
/// An integer gauge.
int_gauge: prometheus::IntGauge,
/// A histogram.
#[prometheus(buckets = linear_buckets(0.005, 0.005, 999)?)]
histogram: prometheus::Histogram,
/// A vector of counters, one for each label.
#[prometheus(label_names = &["label"])]
counter_vec: prometheus::CounterVec,
/// A vector of gauges, one for each label.
#[prometheus(label_names = &["label"])]
gauge_vec: prometheus::GaugeVec,
/// A vector of integer counters, one for each label.
#[prometheus(label_names = &["label"])]
int_counter_vec: prometheus::IntCounterVec,
/// A vector of integer gauges, one for each label.
#[prometheus(label_names = &["label"])]
int_gauge_vec: prometheus::GaugeVec,
/// A vector of histograms, one for each label.
#[prometheus(
buckets = linear_buckets(0.005, 0.005, 999)?,
label_names = &["label"],
)]
histogram_vec: prometheus::HistogramVec,
}