Skip to main content

AggregateCounter

Struct AggregateCounter 

Source
pub struct AggregateCounter { /* private fields */ }
Expand description

A Prometheus CounterVec wrapper that automatically produces an extra unlabeled aggregate metric (the sum of all label combinations) in addition to the per-label counters.

This is useful when you want a single metric name to expose both a total and a per-dimension breakdown without maintaining a separate Counter.

§Example

use prometheus::Opts;
use prometheus::core::Collector;
use prometheus_extensions::AggregateCounter;

let counter = AggregateCounter::new(
    Opts::new("rpc_calls_total", "Total RPC calls"),
    &["service"],
).unwrap();

counter.with_label_values(&["auth"]).inc_by(10.0);
counter.with_label_values(&["billing"]).inc_by(20.0);

let families = counter.collect();
let metrics = families[0].get_metric();

// First metric is the aggregate (no labels, value = 30)
assert_eq!(metrics[0].get_label().len(), 0);
assert_eq!(metrics[0].get_counter().value(), 30.0);

// Remaining metrics are the per-label counters
assert_eq!(metrics.len(), 3); // 1 aggregate + 2 labeled

Implementations§

Source§

impl AggregateCounter

Source

pub fn new(opts: Opts, label_names: &[&str]) -> Result<Self, Error>

Create a new AggregateCounter.

opts defines the metric name and help string. label_names are the label dimensions for the per-label counters.

Source

pub fn with_label_values(&self, vals: &[&str]) -> Counter

Return a Counter for the given label values, creating it if it does not already exist.

Trait Implementations§

Source§

impl Clone for AggregateCounter

Source§

fn clone(&self) -> AggregateCounter

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Collector for AggregateCounter

Source§

fn desc(&self) -> Vec<&Desc>

Return descriptors for metrics.
Source§

fn collect(&self) -> Vec<MetricFamily>

Collect metrics.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.