pub trait Counted<T>where
T: ToCounterValue,{
// Required method
fn count_with_tags<'a>(
&'a self,
key: &'a str,
count: T
) -> MetricBuilder<'_, '_, Counter>;
// Provided method
fn count(&self, key: &str, count: T) -> MetricResult<Counter> { ... }
}
Expand description
Trait for incrementing and decrementing counters.
Counters are simple values incremented or decremented by a client. The rates at which these events occur or average values will be determined by the server receiving them. Examples of counter uses include number of logins to a system or requests received.
The following types are valid for counters:
i64
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§
Increment or decrement the counter by the given amount and return
a MetricBuilder
that can be used to add tags to the metric.
Provided Methods§
sourcefn count(&self, key: &str, count: T) -> MetricResult<Counter>
fn count(&self, key: &str, count: T) -> MetricResult<Counter>
Increment or decrement the counter by the given amount
Examples found in repository?
More examples
examples/nop-sink.rs (line 22)
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
fn main() {
let sink = NopMetricSink;
let client = StatsdClient::from_sink("example.prefix", sink);
client.count("example.counter", 1).unwrap();
client.gauge("example.gauge", 5).unwrap();
client.gauge("example.gauge", 5.0).unwrap();
client.time("example.timer", 32).unwrap();
client.time("example.timer", Duration::from_millis(32)).unwrap();
client.histogram("example.histogram", 22).unwrap();
client.histogram("example.histogram", Duration::from_nanos(22)).unwrap();
client.histogram("example.histogram", 22.0).unwrap();
client.distribution("example.distribution", 33).unwrap();
client.distribution("example.distribution", 33.0).unwrap();
client.meter("example.meter", 8).unwrap();
client.set("example.set", 44).unwrap();
}
examples/simple-sink.rs (line 24)
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
fn main() {
let sock = UdpSocket::bind("0.0.0.0:0").unwrap();
let sink = UdpMetricSink::from(("localhost", DEFAULT_PORT), sock).unwrap();
let client = StatsdClient::from_sink("example.prefix", sink);
client.count("example.counter", 1).unwrap();
client.gauge("example.gauge", 5).unwrap();
client.gauge("example.gauge", 5.0).unwrap();
client.time("example.timer", 32).unwrap();
client.time("example.timer", Duration::from_millis(32)).unwrap();
client.histogram("example.histogram", 22).unwrap();
client.histogram("example.histogram", Duration::from_nanos(22)).unwrap();
client.histogram("example.histogram", 22.0).unwrap();
client.distribution("example.distribution", 33).unwrap();
client.distribution("example.distribution", 33.0).unwrap();
client.meter("example.meter", 8).unwrap();
client.set("example.set", 44).unwrap();
}
examples/wrapped.rs (line 58)
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
fn main() {
let real_sink = NopMetricSink;
let reference1 = CloneableSink::new(real_sink);
let reference2 = reference1.clone();
let client = StatsdClient::from_sink("prefix", reference1);
let _ = reference2.flush();
client.count("example.counter", 1).unwrap();
client.gauge("example.gauge", 5).unwrap();
client.gauge("example.gauge", 5.0).unwrap();
client.time("example.timer", 32).unwrap();
client.time("example.timer", Duration::from_millis(32)).unwrap();
client.histogram("example.histogram", 22).unwrap();
client.histogram("example.histogram", Duration::from_nanos(22)).unwrap();
client.histogram("example.histogram", 22.0).unwrap();
client.distribution("example.distribution", 33).unwrap();
client.distribution("example.distribution", 33.0).unwrap();
client.meter("example.meter", 8).unwrap();
client.set("example.set", 44).unwrap();
let _ = reference2.flush();
}
examples/production-sink.rs (line 26)
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 buffered = BufferedUdpMetricSink::from(("localhost", DEFAULT_PORT), sock).unwrap();
let queued = QueuingMetricSink::from(buffered);
let client = StatsdClient::from_sink("example.prefix", queued);
client.count("example.counter", 1).unwrap();
client.gauge("example.gauge", 5).unwrap();
client.gauge("example.gauge", 5.0).unwrap();
client.time("example.timer", 32).unwrap();
client.time("example.timer", Duration::from_millis(32)).unwrap();
client.histogram("example.histogram", 22).unwrap();
client.histogram("example.histogram", Duration::from_nanos(22)).unwrap();
client.histogram("example.histogram", 22.0).unwrap();
client.distribution("example.distribution", 33).unwrap();
client.distribution("example.distribution", 33.0).unwrap();
client.meter("example.meter", 8).unwrap();
client.set("example.set", 44).unwrap();
}
examples/unix-socket.rs (line 35)
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
fn main() {
let harness = UnixServerHarness::new("unix-socket-example");
harness.run(
|s: String| println!("Got {} bytes from socket: {}", s.len(), s),
|path| {
let socket = UnixDatagram::unbound().unwrap();
let sink = UnixMetricSink::from(path, socket);
let client = StatsdClient::from_sink("example.prefix", sink);
client.count("example.counter", 1).unwrap();
client.gauge("example.gauge", 5).unwrap();
client.gauge("example.gauge", 5.0).unwrap();
client.time("example.timer", 32).unwrap();
client.time("example.timer", Duration::from_millis(32)).unwrap();
client.histogram("example.histogram", 22).unwrap();
client.histogram("example.histogram", Duration::from_nanos(22)).unwrap();
client.histogram("example.histogram", 22.0).unwrap();
client.distribution("example.distribution", 33).unwrap();
client.distribution("example.distribution", 33.0).unwrap();
client.meter("example.meter", 8).unwrap();
client.set("example.set", 44).unwrap();
},
);
}
Additional examples can be found in: