client_rust icon indicating copy to clipboard operation
client_rust copied to clipboard

Derive macro to register struct of metrics

Open Hackzzila opened this issue 1 year ago • 0 comments

Resolves #140 cc @mxinden

Here is a rough implementation. It does not have docs yet

Example:

#[derive(Register, Default)]
struct Metrics {
    /// This is my counter
    my_counter: Counter,
    nested: NestedMetrics,
    #[register(skip)]
    skipped: Counter,
    #[register(unit = "bytes")]
    custom_unit: Counter,
    #[register(name = "my_custom_name")]
    custom_name: Counter,
    /// This will get ignored
    #[register(help = "my custom help")]
    custom_help: Counter,
}

#[derive(Register, Default)]
struct NestedMetrics {
    /// This is my gauge
    my_gauge: Gauge,
}
// Only if Metrics implements default
let metrics = Metrics::register_default(&mut registry);

let metrics = Metrics::default();
metrics.register(&mut registry);

Hackzzila avatar Jul 22 '24 19:07 Hackzzila