Struct prometheus_client::metrics::exemplar::CounterWithExemplar
source · pub struct CounterWithExemplar<S, N = u64, A = AtomicU64> { /* private fields */ }
Expand description
Open Metrics Counter
with an Exemplar
to both measure discrete
events and track references to data outside of the metric set.
let counter_with_exemplar = CounterWithExemplar::<Vec<(String, String)>>::default();
counter_with_exemplar.inc_by(1, Some(vec![("user_id".to_string(), "42".to_string())]));
let _value: (u64, _) = counter_with_exemplar.get();
You can also use exemplars with families. Just wrap the exemplar in a Family.
#[derive(Clone, Hash, PartialEq, Eq, EncodeLabelSet, Debug, Default)]
pub struct ResultLabel {
pub result: String,
}
#[derive(Clone, Hash, PartialEq, Eq, EncodeLabelSet, Debug, Default)]
pub struct TraceLabel {
pub trace_id: String,
}
let latency: Family<ResultLabel, CounterWithExemplar<TraceLabel>> = Family::default();
latency
.get_or_create(&ResultLabel {
result: "success".to_owned(),
})
.inc_by(
1,
Some(TraceLabel {
trace_id: "3a2f90c9f80b894f".to_owned(),
}),
);
Implementations§
source§impl<S, N: Clone, A: Atomic<N>> CounterWithExemplar<S, N, A>
impl<S, N: Clone, A: Atomic<N>> CounterWithExemplar<S, N, A>
sourcepub fn inc_by(&self, v: N, label_set: Option<S>) -> N
pub fn inc_by(&self, v: N, label_set: Option<S>) -> N
Increase the CounterWithExemplar
by v
, updating the Exemplar
if a label set is provided, returning the previous value.
sourcepub fn get(&self) -> (N, MappedRwLockReadGuard<'_, Option<Exemplar<S, N>>>)
pub fn get(&self) -> (N, MappedRwLockReadGuard<'_, Option<Exemplar<S, N>>>)
Get the current value of the CounterWithExemplar
as well as its
Exemplar
if any.
sourcepub fn inner(&self) -> MappedRwLockReadGuard<'_, A>
pub fn inner(&self) -> MappedRwLockReadGuard<'_, A>
Exposes the inner atomic type of the CounterWithExemplar
.
This should only be used for advanced use-cases which are not directly supported by the library.
The caller of this function has to uphold the property of an Open Metrics counter namely that the value is monotonically increasing, i.e. either stays the same or increases.
Trait Implementations§
source§impl<S, N, A> Clone for CounterWithExemplar<S, N, A>
impl<S, N, A> Clone for CounterWithExemplar<S, N, A>
source§impl<S, N, A: Default> Default for CounterWithExemplar<S, N, A>
impl<S, N, A: Default> Default for CounterWithExemplar<S, N, A>
source§impl<S, N, A> EncodeMetric for CounterWithExemplar<S, N, A>
impl<S, N, A> EncodeMetric for CounterWithExemplar<S, N, A>
source§fn encode(&self, encoder: MetricEncoder<'_>) -> Result<(), Error>
fn encode(&self, encoder: MetricEncoder<'_>) -> Result<(), Error>
Encode the given instance in the OpenMetrics text encoding.
source§fn metric_type(&self) -> MetricType
fn metric_type(&self) -> MetricType
The OpenMetrics metric type of the instance.
source§impl<S> TypedMetric for CounterWithExemplar<S>
impl<S> TypedMetric for CounterWithExemplar<S>
source§const TYPE: MetricType = MetricType::Counter
const TYPE: MetricType = MetricType::Counter
The OpenMetrics metric type.
Auto Trait Implementations§
impl<S, N = u64, A = AtomicU64> !RefUnwindSafe for CounterWithExemplar<S, N, A>
impl<S, N, A> Send for CounterWithExemplar<S, N, A>
impl<S, N, A> Sync for CounterWithExemplar<S, N, A>
impl<S, N, A> Unpin for CounterWithExemplar<S, N, A>
impl<S, N = u64, A = AtomicU64> !UnwindSafe for CounterWithExemplar<S, N, A>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more