Skip to main content

clopwizard/
clopwizard.rs

1//! A dropwizard-like configuration using three buckets
2//! aggregating one, five and fifteen minutes of data.
3
4use dipstick::*;
5use std::thread::sleep;
6use std::time::Duration;
7
8metrics! {
9    APP = "application" => {
10        pub COUNTER: Counter = "counter";
11    }
12}
13
14fn main() {
15    let one_minute = AtomicBucket::new();
16    one_minute.flush_every(Duration::from_secs(60));
17
18    let five_minutes = AtomicBucket::new();
19    five_minutes.flush_every(Duration::from_secs(300));
20
21    let fifteen_minutes = AtomicBucket::new();
22    fifteen_minutes.flush_every(Duration::from_secs(900));
23
24    let all_buckets = MultiInputScope::new()
25        .add_target(one_minute)
26        .add_target(five_minutes)
27        .add_target(fifteen_minutes)
28        .named("machine_name");
29
30    // send application metrics to aggregator
31    Proxy::default().target(all_buckets);
32    AtomicBucket::default_drain(Stream::write_to_stdout());
33    AtomicBucket::default_stats(stats_all);
34
35    loop {
36        COUNTER.count(17);
37        sleep(Duration::from_secs(3));
38    }
39}