Cal made simple stat aggregation - And it was good.
Etsy also made simple stat aggregation - And it was also good.
This is a simple client. It supports:
- time measurements
- recording gauges
This client is compatible with a Statsd server version >= 0.1.0.
gem install statsy
Default to UDP to a host in the current search domain called 'stats' on port 8125.
client = Statsy::Client.new
Use a custom transport or change the host/port pair for UDP.
client = Statsy::Client.new(Statsy::Transport::UDP.new("graphite.acme.com", 8125)) client = Statsy::Client.new(Acme::Transport::Statsd) # <- you made that client = Statsy::Client.new(Statsy::Transport::Queue.new) # <- if you want to test stuff
Increment by 1, arbitrary integer, or arbitrary integer at a uniform random distribution
client.increment("coffee.single-espresso") client.increment("coffee.single-espresso", 1) client.increment("coffee.single-espresso", 1, 0.5) # 50% of the time
Measure a timing stat that will calculate the mean, min, max, upper_90 and count
Bonus points: Batch up many things into a fewer packets like in a shell script
loop do batch_lines = 1000 client.batch do |batch| $stdin.each do |log_line| metric, timing = parse(log_line) # <- you made that batch.measure metric, timing break if (batch_lines -= 1) <= 0 end end end
These stats end up in your graphite interface under the top level keys. Look for them in this folders:
stats_counts stats/timings stats
Fork it out of love. Enjoy.