“If Engineering at Etsy has a religion, it’s the Church of Graphs,” Ian Malpass writes on the Etsy Code as Craft blog. And how is Etsy fulfilling its religious obligations? With a Node.js daemon called StatsD, which the company has made available on GitHub. StatsD listens for messages on a UDP port, conducts its counting or timing, and then sends the info off to graphite for graphing.
We like graphite for a number of reasons: it’s very easy to use, and has very powerful graphing and data manipulation capabilities. We can combine data from StatsD with data from our other metrics-gathering systems. Most importantly for StatsD, you can create new metrics in graphite just by sending it data for that metric. That means there’s no management overhead for engineers to start tracking something new: simply tell StatsD you want to track “grue.dinners” and it’ll automagically appear in graphite. (By the way, because we flush data to graphite every 10 seconds, our StatsD metrics are near-realtime.)