pub struct Counter { /* private fields */ }Expand description
A simple ever increasing counter
Reacts to the following Observations:
Observation::Observed(Update::Observations)Obervation::ObservedOne(Update::Observation)Obervation::ObservedOneValue(Update::ObservationWithValue)
§Example
use std::time::Instant;
use metrix::instruments::*;
let mut counter = Counter::new_with_defaults("example");
let update = Update::Observation(Instant::now());
counter.update(&update);
assert_eq!(1, counter.get());Implementations§
Source§impl Counter
impl Counter
pub fn new<T: Into<String>>(name: T) -> Counter
Sourcepub fn new_with_defaults<T: Into<String>>(name: T) -> Counter
pub fn new_with_defaults<T: Into<String>>(name: T) -> Counter
Examples found in repository?
examples/demo_run.rs (line 50)
48fn create_foo_metrics() -> (TelemetryTransmitter<FooLabel>, ProcessorMount) {
49 let mut foo_a_panel = Panel::named(FooLabel::A, "foo_a_panel");
50 foo_a_panel.add_counter(Counter::new_with_defaults("foo_a_counter"));
51 let mut gauge = Gauge::new_with_defaults("foo_a_gauge");
52 gauge.set_title("title");
53 gauge.set_description("description");
54 foo_a_panel.add_gauge(gauge);
55 foo_a_panel.add_meter(Meter::new_with_defaults("foo_a_meter"));
56 foo_a_panel.add_histogram(Histogram::new_with_defaults("foo_a_histogram"));
57 foo_a_panel.set_title("foo_1_panel_title");
58 foo_a_panel.set_description("foo_a_panel_description");
59
60 let mut foo_b_panel = Panel::new(FooLabel::B);
61 foo_b_panel.add_counter(Counter::new_with_defaults("foo_b_counter"));
62 let mut gauge = Gauge::new_with_defaults("foo_b_gauge").tracking(15);
63 gauge.set_title("title");
64 gauge.set_description("description");
65 foo_b_panel.add_gauge(gauge);
66 foo_b_panel.add_meter(Meter::new_with_defaults("foo_b_meter"));
67 foo_b_panel.add_histogram(Histogram::new_with_defaults("foo_b_histogram"));
68 foo_b_panel.set_title("foo_b_panel_title");
69 foo_b_panel.set_description("foo_b_panel_description");
70
71 let polled_counter = PolledCounter::new();
72 let mut polled_instrument =
73 PollingInstrument::new_with_defaults("polled_instrument_1", polled_counter);
74 polled_instrument.set_title("The polled counter 1");
75 polled_instrument.set_description("A counter that is increased when a snapshot is polled");
76 foo_b_panel.add_snapshooter(polled_instrument);
77
78 let staircase_timer = StaircaseTimer::new("staircase");
79 foo_b_panel.add_instrument(staircase_timer);
80
81 let mut cockpit = Cockpit::new("foo_cockpit");
82 cockpit.add_panel(foo_a_panel);
83 cockpit.add_panel(foo_b_panel);
84 cockpit.set_title("foo_cockpit_title");
85 cockpit.set_description("foo_cockpit_description");
86
87 let (tx, mut processor) = TelemetryProcessor::new_pair("processor_foo");
88
89 processor.add_cockpit(cockpit);
90
91 let mut group_processor = ProcessorMount::default();
92 group_processor.add_processor(processor);
93
94 (tx, group_processor)
95}
96
97fn create_bar_metrics() -> (TelemetryTransmitter<BarLabel>, ProcessorMount) {
98 let mut bar_a_panel = Panel::named(BarLabel::A, "bar_a_panel")
99 .counter(Counter::new_with_defaults("bar_a_counter"));
100 bar_a_panel.add_gauge(Gauge::new_with_defaults("bar_a_gauge"));
101 bar_a_panel.add_meter(Meter::new_with_defaults("bar_a_meter"));
102 bar_a_panel.add_histogram(Histogram::new_with_defaults("bar_a_histogram"));
103
104 let mut bar_a_cockpit = Cockpit::without_name();
105 bar_a_cockpit.add_panel(bar_a_panel);
106
107 let mut bar_b_panel = Panel::new(BarLabel::B);
108 bar_b_panel.add_counter(Counter::new_with_defaults("bar_b_counter"));
109 bar_b_panel.add_gauge(Gauge::new_with_defaults("bar_b_gauge"));
110 bar_b_panel.add_meter(Meter::new_with_defaults("bar_b_meter"));
111 bar_b_panel.add_histogram(Histogram::new_with_defaults("bar_b_histogram"));
112
113 let mut bar_b_cockpit = Cockpit::new("bar_b_cockpit");
114 bar_b_cockpit.add_panel(bar_b_panel);
115
116 let mut bar_c_panel = Panel::named(BarLabel::C, "bar_c_panel");
117 bar_c_panel.add_counter(Counter::new_with_defaults("bar_c_counter"));
118 bar_c_panel.add_gauge(Gauge::new_with_defaults("bar_c_gauge"));
119 bar_c_panel.add_meter(Meter::new_with_defaults("bar_c_meter"));
120 bar_c_panel.add_histogram(Histogram::new_with_defaults("bar_c_histogram"));
121
122 let mut bar_c_cockpit = Cockpit::new("bar_c_cockpit");
123 bar_c_cockpit.add_panel(bar_c_panel);
124
125 let (tx, mut processor) = TelemetryProcessor::new_pair_without_name();
126
127 processor.add_cockpit(bar_a_cockpit);
128 processor.add_cockpit(bar_b_cockpit);
129 processor.add_cockpit(bar_c_cockpit);
130
131 let mut group_processor1 = ProcessorMount::default();
132 group_processor1.add_processor(processor);
133
134 let mut group_processor2 = ProcessorMount::default();
135 group_processor2.add_processor(group_processor1);
136 group_processor2.set_name("group_processor_2");
137
138 let polled_counter = PolledCounter::new();
139 let mut polled_instrument =
140 PollingInstrument::new_with_defaults("polled_instrument_2", polled_counter);
141 polled_instrument.set_title("The polled counter 2");
142 polled_instrument.set_description("A counter that is increased when a snapshot is polled");
143
144 group_processor2.add_snapshooter(polled_instrument);
145
146 (tx, group_processor2)
147}pub fn get_name(&self) -> &str
pub fn set_name<T: Into<String>>(&mut self, name: T)
pub fn name<T: Into<String>>(self, name: T) -> Self
pub fn set_title<T: Into<String>>(&mut self, title: T)
pub fn title<T: Into<String>>(self, title: T) -> Self
pub fn set_description<T: Into<String>>(&mut self, description: T)
pub fn description<T: Into<String>>(self, description: T) -> Self
pub fn accept<L: Eq + Send + 'static, F: Into<LabelFilter<L>>>( self, accept: F, ) -> InstrumentAdapter<L, Self>
Sourcepub fn for_label<L: Eq + Send + 'static>(
self,
label: L,
) -> InstrumentAdapter<L, Self>
pub fn for_label<L: Eq + Send + 'static>( self, label: L, ) -> InstrumentAdapter<L, Self>
Creates an InstrumentAdapter that makes this instrument
react on observations on the given label.
Sourcepub fn for_labels<L: Eq + Send + 'static>(
self,
labels: Vec<L>,
) -> InstrumentAdapter<L, Self>
pub fn for_labels<L: Eq + Send + 'static>( self, labels: Vec<L>, ) -> InstrumentAdapter<L, Self>
Creates an InstrumentAdapter that makes this instrument
react on observations with the given labels.
If labels is empty the instrument will not react to any observations
Sourcepub fn for_all_labels<L: Eq + Send + 'static>(
self,
) -> InstrumentAdapter<L, Self>
pub fn for_all_labels<L: Eq + Send + 'static>( self, ) -> InstrumentAdapter<L, Self>
Creates an InstrumentAdapter that makes this instrument react on
all observations.
Sourcepub fn for_labels_by_predicate<L, P>(
self,
label_predicate: P,
) -> InstrumentAdapter<L, Self>
pub fn for_labels_by_predicate<L, P>( self, label_predicate: P, ) -> InstrumentAdapter<L, Self>
Creates an InstrumentAdapter that makes this instrument react on
observations with labels specified by the predicate.
Sourcepub fn adapter<L: Eq + Send + 'static>(self) -> InstrumentAdapter<L, Self>
pub fn adapter<L: Eq + Send + 'static>(self) -> InstrumentAdapter<L, Self>
Creates an InstrumentAdapter that makes this instrument to no
observations.
Trait Implementations§
Source§impl Descriptive for Counter
impl Descriptive for Counter
Source§impl PutsSnapshot for Counter
impl PutsSnapshot for Counter
Source§fn put_snapshot(&self, into: &mut Snapshot, descriptive: bool)
fn put_snapshot(&self, into: &mut Snapshot, descriptive: bool)
Puts the current snapshot values into the given
Snapshot thereby
following the guidelines of PutsSnapshot.impl Instrument for Counter
Auto Trait Implementations§
impl Freeze for Counter
impl RefUnwindSafe for Counter
impl Send for Counter
impl Sync for Counter
impl Unpin for Counter
impl UnwindSafe for Counter
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