The benefits of using statsd?

So I've been playing around with graphite for the past few days and I can see the potential there and why it is so powerful.

My main question is why should I use statsd in front of it like esty and so many other people do? As of right now I don't see the big benefit of putting another stack in front of graphite.

I hope someone can clear it up

https://github.com/etsy/statsd


Solution 1:

So I got into the IRC channel and got this

<jY> what are the benefits of putting statsd in front of graphite
 <vvuksan> data aggregation
 <vvuksan> say you wanted to find out how many registrations you have per time period
 <vvuksan> you can either keep track of it yourself
 <vvuksan> send to graphite every minute
 <vvuksan> or
 <vvuksan> any time there is a successful registration send a packet to statsd and let statsd deal with it
 <jY> ok.. so i  just keep incing the counter then to statsd?
 <vvuksan> no
 <vvuksan> you just send to statsd
 <vvuksan> statsd will increment it for you
 <jY> ok
 <vvuksan> you can do all this yourself
 <vvuksan> it's just more work
 <jY> could i also send stuff like load avg to statsd.. or should that go right to graphite?
 <vvuksan> that should go right to graphite
 <vvuksan> cause that is already a composite metric
 <vvuksan> not just a data point
 <jY> ok so it's really only app specific stuff 
 <jY> ok thanks.. clears up a lot
 <jY> statsd would be good to send logins to.. so i can see how many logins per minute i get in other words
 <vvuksan> yeah
 <vvuksan> or what's average response time of an external API
 <vvuksan> it will also do percentiles which is useful
 <vvuksan> you could even do how long it took to execute a particular important query
 <jY> great.. thanks that cleared up a lot

So my take away is send system stats like free memory/drive space/users logged in right to graphite and send app stats like if a user logged in to statsd and lets statsd do its magic to generate nice data for graphite to graph