rj / estatsd Goto Github PK
View Code? Open in Web Editor NEWErlang stats aggregation app that periodically flushes data to graphite
License: MIT License
Erlang stats aggregation app that periodically flushes data to graphite
License: MIT License
estatsd is a simple stats aggregation service that periodically dumps data to Graphite: http://graphite.wikidot.com/ NB: Graphite is good, despite the website being a bit ghetto. Inspired heavily by etsy statsd: http://codeascraft.etsy.com/2011/02/15/measure-anything-measure-everything/ QUICK DEMO ========== 1) Install and configure graphite (quick-ish) 2) Install rebar, have it in your path 3) rebar compile 4) erl -pa ebin 5) > application:start(estatsd). > estatsd:increment(foo, 123). 6) Observe graphite now has 1 data point. USAGE ===== Add this app to your rebar deps, and make sure it's started somehow eg: application:start(estatsd). You can configure custom graphite host/port and flush interval using application environment vars. See estatsd_sup for details. The following calls to estatsd are all gen_server:cast, ie non-blocking. Gauges -------- estatsd:gauge(temperature, 45). %% set temperature to 45 Counters -------- estatsd:increment(num_foos). %% increment num_foos by one estatsd:decrement(<<"num_bars">>, 3). %% decrement num_bars by 3 estatsd:increment("tcp.bytes_in", 512). %% increment tcp.bytes_in by 512 Timers ------ estatsd:timing(sometask, 1534). %% report that sometask took 1534ms Or for your convenience: Start = erlang:now(), do_sometask(), estatsd:timing(sometast, Start). %% uses now() and now_diff for you NOTES ===== This could be extended to take a callback for reporting mechanisms. Right now it's hardcoded to stick data into graphite. I've been running this since May 2011 in production for irccloud. Richard Jones <[email protected]> @metabrew
estatsd/src/estatsd_server.erl
Line 209 in 2643d30
Gauge data are associated with timestamp in second if several updates occurred within the same timestamp graphite will interpret the first update as the last one because the list is reversed when building gauges report. It could be solved by using lists:foldr/3
instead of lists:foldl/3
when building the Fragments
in estatsd_server:do_report_gauges/1
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.