StatsD was created by Erik Kastner at Etsy in 2010. The tool was developed to solve a specific problem: how to collect and aggregate application metrics without overwhelming the monitoring backend. StatsD introduced the concept of aggregating metrics in memory before flushing them to a backend like Graphite.
The name “StatsD” is straightforward: “Stats” (statistics) + “D” (daemon).
- Created to aggregate application metrics
- UDP-based protocol for low overhead
- Graphite integration
- Released on GitHub under MIT license
- Rapid adoption in the DevOps community
- Spawned numerous implementations
- Multiple language implementations (Node.js, Python, Go, Ruby)
- Integration with monitoring stacks
- Backend support beyond Graphite
¶ 2016-Present - Standardization
- De facto standard for application metrics
- Built into many frameworks and libraries
- Competition from direct-to-backend approaches
StatsD introduced a novel approach:
- Applications send individual metric events via UDP
- StatsD aggregates in memory (count, sum, average, percentiles)
- Backend receives aggregated data at fixed intervals
This model dramatically reduces the load on storage backends.
- UDP-based: Fire-and-forget, no connection overhead
- Simple format:
metric.name:value|type
- Sampling: Support for statistical sampling of high-volume metrics
- Counters: Increment/decrement values (requests, errors)
- Timers: Measure durations (response times, query times)
- Gauges: Absolute values (temperature, queue size)
- Sets: Unique value counting (unique users)
StatsD is licensed under the MIT License, contributing to its widespread adoption.
StatsD is maintained but faces competition from newer approaches:
- Still widely used in production
- Many implementations available
- Some teams moving to direct Prometheus/InfluxDB instrumentation
- Remains popular for simple use cases
| Implementation |
Language |
Notes |
| statsd/statsd |
Node.js |
Original Etsy implementation |
| statsite |
C |
High-performance alternative |
| statsd-proxy |
Go |
Proxy with additional features |
| telegraf (statsd input) |
Go |
Part of Telegraf ecosystem |
The original StatsD doesn’t use traditional versioning:
- 2010-2012: Initial development, core features
- 2013-2015: Stability, bug fixes
- 2016-Present: Maintenance, occasional improvements
StatsD fundamentally changed application monitoring:
- Made application metrics collection easy
- Popularized UDP-based metric submission
- Influenced Prometheus, InfluxDB, and others
- Created the metrics aggregation pattern
- Simple aggregation needs
- Existing Graphite infrastructure
- High-volume metric collection
- Language without direct backend support
- Need for metric labels/tags (Prometheus)
- Complex queries required (InfluxDB)
- Pull-based collection preferred (Prometheus)
- Direct instrumentation available
Any questions?
Feel free to contact us. Find all contact information on our contact page.