Trait cadence::Gauged

source ·
pub trait Gauged<T>where
    T: ToGaugeValue,{
    // Required method
    fn gauge_with_tags<'a>(
        &'a self,
        key: &'a str,
        value: T
    ) -> MetricBuilder<'_, '_, Gauge>;

    // Provided method
    fn gauge(&self, key: &str, value: T) -> MetricResult<Gauge> { ... }
}
Expand description

Trait for recording gauge values.

Gauge values are an instantaneous measurement of a value determined by the client. They do not change unless changed by the client. Examples include things like load average or how many connections are active.

The following types are valid for gauges:

  • u64
  • f64

See the Statsd spec for more information.

Note that tags are a Datadog extension to Statsd and may not be supported by your server.

Required Methods§

source

fn gauge_with_tags<'a>( &'a self, key: &'a str, value: T ) -> MetricBuilder<'_, '_, Gauge>

Record a gauge value with the given key and return a MetricBuilder that can be used to add tags to the metric.

Provided Methods§

source

fn gauge(&self, key: &str, value: T) -> MetricResult<Gauge>

Record a gauge value with the given key

Examples found in repository?
examples/custom-value-type.rs (line 39)
35
36
37
38
39
40
41
42
fn main() {
    let sink = NopMetricSink;
    let metrics = StatsdClient::from_sink("example.prefix", sink);

    metrics.gauge("user.happiness", UserHappiness::VeryHappy).unwrap();
    metrics.gauge("user.happiness", UserHappiness::KindaHappy).unwrap();
    metrics.gauge("user.happiness", UserHappiness::Sad).unwrap();
}
More examples
Hide additional examples
examples/nop-sink.rs (line 23)
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
fn main() {
    let sink = NopMetricSink;
    let metrics = StatsdClient::from_sink("example.prefix", sink);

    metrics.count("example.counter", 1).unwrap();
    metrics.gauge("example.gauge", 5).unwrap();
    metrics.gauge("example.gauge", 5.0).unwrap();
    metrics.time("example.timer", 32).unwrap();
    metrics.time("example.timer", Duration::from_millis(32)).unwrap();
    metrics.histogram("example.histogram", 22).unwrap();
    metrics
        .histogram("example.histogram", Duration::from_nanos(22))
        .unwrap();
    metrics.histogram("example.histogram", 22.0).unwrap();
    metrics.distribution("example.distribution", 33).unwrap();
    metrics.distribution("example.distribution", 33.0).unwrap();
    metrics.meter("example.meter", 8).unwrap();
    metrics.set("example.set", 44).unwrap();
}
examples/simple-sink.rs (line 25)
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
fn main() {
    let sock = UdpSocket::bind("0.0.0.0:0").unwrap();
    let sink = UdpMetricSink::from(("localhost", DEFAULT_PORT), sock).unwrap();
    let metrics = StatsdClient::from_sink("example.prefix", sink);

    metrics.count("example.counter", 1).unwrap();
    metrics.gauge("example.gauge", 5).unwrap();
    metrics.gauge("example.gauge", 5.0).unwrap();
    metrics.time("example.timer", 32).unwrap();
    metrics.time("example.timer", Duration::from_millis(32)).unwrap();
    metrics.histogram("example.histogram", 22).unwrap();
    metrics
        .histogram("example.histogram", Duration::from_nanos(22))
        .unwrap();
    metrics.histogram("example.histogram", 22.0).unwrap();
    metrics.distribution("example.distribution", 33).unwrap();
    metrics.distribution("example.distribution", 33.0).unwrap();
    metrics.meter("example.meter", 8).unwrap();
    metrics.set("example.set", 44).unwrap();
}
examples/production-sink.rs (line 27)
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
fn main() {
    let sock = UdpSocket::bind("0.0.0.0:0").unwrap();
    let buffered = BufferedUdpMetricSink::from(("localhost", DEFAULT_PORT), sock).unwrap();
    let queued = QueuingMetricSink::from(buffered);
    let metrics = StatsdClient::from_sink("example.prefix", queued);

    metrics.count("example.counter", 1).unwrap();
    metrics.gauge("example.gauge", 5).unwrap();
    metrics.gauge("example.gauge", 5.0).unwrap();
    metrics.time("example.timer", 32).unwrap();
    metrics.time("example.timer", Duration::from_millis(32)).unwrap();
    metrics.histogram("example.histogram", 22).unwrap();
    metrics
        .histogram("example.histogram", Duration::from_nanos(22))
        .unwrap();
    metrics.histogram("example.histogram", 22.0).unwrap();
    metrics.distribution("example.distribution", 33).unwrap();
    metrics.distribution("example.distribution", 33.0).unwrap();
    metrics.meter("example.meter", 8).unwrap();
    metrics.set("example.set", 44).unwrap();
}
examples/spy-sink.rs (line 28)
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
fn main() {
    // Ensure that the sink is dropped, forcing a flush of all buffered metrics.
    let rx = {
        // Use a buffer size larger than any metrics here so we can demonstrate that
        // each metric ends up with a newline (\n) after it.
        let (rx, sink) = BufferedSpyMetricSink::with_capacity(None, Some(64));
        let metrics = StatsdClient::from_sink("example.prefix", sink);

        metrics.count("example.counter", 1).unwrap();
        metrics.gauge("example.gauge", 5).unwrap();
        metrics.gauge("example.gauge", 5.0).unwrap();
        metrics.time("example.timer", 32).unwrap();
        metrics.time("example.timer", Duration::from_millis(32)).unwrap();
        metrics.histogram("example.histogram", 22).unwrap();
        metrics
            .histogram("example.histogram", Duration::from_nanos(22))
            .unwrap();
        metrics.histogram("example.histogram", 22.0).unwrap();
        metrics.distribution("example.distribution", 33).unwrap();
        metrics.distribution("example.distribution", 33.0).unwrap();
        metrics.meter("example.meter", 8).unwrap();
        metrics.set("example.set", 44).unwrap();

        rx
    };

    let mut buffer = Vec::new();
    while let Ok(v) = rx.try_recv() {
        buffer.extend(v);
    }

    println!("Contents of wrapped buffer:\n{}", String::from_utf8(buffer).unwrap());
}

Implementors§

source§

impl<T> Gauged<T> for StatsdClientwhere T: ToGaugeValue,