statsdpy sample config with default options:
[main] #graphite host and port to connect too graphite_host = 127.0.0.1 graphite_port = 2003 graphite_pickle_port = 2004 #address and port we should listen for udp packets on listen_addr = 127.0.0.1 listen_port = 8125 #If you track a large number of metrics you can use the pickle protocol pickle_protocol = no #max number of metrics to report in one go when using the pickle protocol pickle_batch_size = 300 #enabling debug mode and running in the foreground (with -f) is a great way #to debug an app generating new metrics debug = no #How often to flush stats to graphite flush_interval = 10 #calculate the XXth percentile percent_threshold = 90
- Edit the config file appropriately for your environment
- Start the service:
statsdpy-server start --conf=/path/to/your.conf
- Fire some udp counter, timer, or gauge events at statsdpy
- Check syslog for any errors starting up or processing events
Reporting using the pickle protocol
If you track a decent # of metrics you wanna switch to report to graphite using the pickle protocol. The pickle protocol is more efficient than the the plaintext protocol, and supports sending batches of metrics to carbon in one go. To enable it just set
pickle_protocol to "yes" in your statsdpy.conf. Optionally, you can also adjust the max number of items per batch that is reported by adjusting the
pickle_batch_size conf option.
As with the original statsd implementation from etsy the following event types are supported:
Simple counters. Add 1 to the "sitelogins" event bucket. It stays in memory until flushed to graphite as specified by the flush_interval.
Another counter, this time add "7" to the "500errors" event bucket.
The "pageload" event took 320ms to complete this time. statsdpy computes the XXth percentile (as specified in the config), average (mean), lower and upper bounds for the configured flush interval.
Gauge (simple arbitrary values)
The etsy statsd implementation now supports combined events via seperation by newline. Statsdpy supports this method now as well:
This counter is being sent sampled every 1/10th of the time.
This counter is being sampled at a 50% rate.
Building .deb packages
Clone the repo and build the package with stdeb (sudo apt-get install stdeb):
git clone firstname.lastname@example.org:pandemicsyn/statsdpy.git cd statsdpy python setup.py --command-packages=stdeb.command bdist_deb dpkg -i deb_dist/python-statsdpy_0.0.X-1_all.deb
Installation via setup.py
git clone email@example.com:pandemicsyn/statsdpy.git
python setup.py install
- Copy the sample config to /etc/statsdpy/statsdpy.conf
- Edit /etc/statsdpy/statsdpy.conf as required for your environment
- Start statsdpy
/usr/bin/statsdpy-server --conf=/etc/statsdpy/statsdpy.conf start
- Optionally, a basic init script is provided as etc/statsdpy/statsdpy.init