pub struct LabeledGauge<L: LabelEnum> { /* private fields */ }Expand description
A gauge indexed by an enum label, providing O(1) dimensional metrics.
Each label variant has its own gauge for independent point-in-time values.
§Example
ⓘ
use fast_telemetry::{LabeledGauge, LabelEnum};
#[derive(Copy, Clone, Debug)]
enum CacheType { Memory, Disk, Network }
impl LabelEnum for CacheType {
const CARDINALITY: usize = 3;
const LABEL_NAME: &'static str = "cache_type";
fn as_index(self) -> usize { self as usize }
fn from_index(index: usize) -> Self {
match index {
0 => Self::Memory, 1 => Self::Disk, _ => Self::Network,
}
}
fn variant_name(self) -> &'static str {
match self {
Self::Memory => "memory", Self::Disk => "disk", Self::Network => "network",
}
}
}
let gauge: LabeledGauge<CacheType> = LabeledGauge::new();
gauge.set(CacheType::Memory, 1024);
gauge.set(CacheType::Disk, 4096);
// Iteration for export
for (label, value) in gauge.iter() {
println!("{}={}: {}", CacheType::LABEL_NAME, label.variant_name(), value);
}Implementations§
Source§impl<L: LabelEnum> LabeledGauge<L>
impl<L: LabelEnum> LabeledGauge<L>
Trait Implementations§
Source§impl<L: LabelEnum> ClickHouseExport for LabeledGauge<L>
impl<L: LabelEnum> ClickHouseExport for LabeledGauge<L>
fn export_clickhouse( &self, batch: &mut ClickHouseMetricBatch, name: &str, description: &str, time_unix_nano: u64, )
Source§impl<L: LabelEnum> Default for LabeledGauge<L>
impl<L: LabelEnum> Default for LabeledGauge<L>
Source§impl<L: LabelEnum> DogStatsDExport for LabeledGauge<L>
impl<L: LabelEnum> DogStatsDExport for LabeledGauge<L>
Source§impl<L: LabelEnum> OtlpExport for LabeledGauge<L>
impl<L: LabelEnum> OtlpExport for LabeledGauge<L>
Source§impl<L: LabelEnum> PrometheusExport for LabeledGauge<L>
impl<L: LabelEnum> PrometheusExport for LabeledGauge<L>
Auto Trait Implementations§
impl<L> Freeze for LabeledGauge<L>
impl<L> RefUnwindSafe for LabeledGauge<L>where
L: RefUnwindSafe,
impl<L> Send for LabeledGauge<L>where
L: Send,
impl<L> Sync for LabeledGauge<L>where
L: Sync,
impl<L> Unpin for LabeledGauge<L>where
L: Unpin,
impl<L> UnsafeUnpin for LabeledGauge<L>
impl<L> UnwindSafe for LabeledGauge<L>where
L: UnwindSafe,
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
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request