Skip to main content

product_metrics

Macro product_metrics 

Source
macro_rules! product_metrics {
    (
        $(#[$struct_meta:meta])*
        $vis:vis struct $name:ident {
            $(
                $(#[$field_meta:meta])*
                $field:ident : $kind:ident (
                    $subsystem:expr,
                    $metric_name:expr,
                    $help:expr,
                    $labels:expr
                    $(, $buckets:expr)?
                    $(,)?
                )
            ),* $(,)?
        }
    ) => { ... };
    (@field_type counter) => { ... };
    (@field_type gauge) => { ... };
    (@field_type histogram) => { ... };
    (@field_type histogram_with_buckets) => { ... };
    (@register counter, $subsystem:expr, $metric_name:expr, $help:expr, $labels:expr) => { ... };
    (@register gauge, $subsystem:expr, $metric_name:expr, $help:expr, $labels:expr) => { ... };
    (@register histogram, $subsystem:expr, $metric_name:expr, $help:expr, $labels:expr) => { ... };
    (@register histogram_with_buckets, $subsystem:expr, $metric_name:expr, $help:expr, $labels:expr, $buckets:expr) => { ... };
}
Expand description

Declares a typed product metric set backed by the shared Prometheus registry.

The generated struct owns typed metric handles and exposes a register() function that registers every declared metric in order.

aster_forge_metrics::product_metrics! {
    pub struct ProductMetrics {
        requests: counter(
            "example",
            "requests_total",
            "Total example requests.",
            &["status"],
        ),
        latency: histogram_with_buckets(
            "example",
            "request_duration_seconds",
            "Example request duration.",
            &["status"],
            &[0.1, 0.5, 1.0],
        ),
    }
}