1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
//! A dropwizard-like configuration using three buckets
//! aggregating one, five and fifteen minutes of data.
#[macro_use]
extern crate dipstick;
use std::time::Duration;
use dipstick::*;
use std::thread::sleep;
metrics!{
APP = "application" => {
pub COUNTER: Counter = "counter";
}
}
fn main() {
let one_minute = AtomicBucket::new();
one_minute.flush_every(Duration::from_secs(60));
let five_minutes = AtomicBucket::new();
five_minutes.flush_every(Duration::from_secs(300));
let fifteen_minutes = AtomicBucket::new();
fifteen_minutes.flush_every(Duration::from_secs(900));
let all_buckets = MultiInputScope::new()
.add_target(one_minute)
.add_target(five_minutes)
.add_target(fifteen_minutes)
.add_prefix("machine_name");
// send application metrics to aggregator
Proxy::default().set_target(all_buckets);
AtomicBucket::set_default_drain(Stream::to_stdout());
AtomicBucket::set_default_stats(stats_all);
loop {
COUNTER.count(17);
sleep(Duration::from_secs(3));
}
}