Debian packaging of gstatsd
Go to file
Patrick Hensley e83d53f948 Release 0.3.1
* Created rst README.txt for PyPI
2011-06-29 12:09:23 -04:00
debian Release 0.3.1 2011-06-29 12:09:23 -04:00
gstatsd Release 0.3.1 2011-06-29 12:09:23 -04:00
.gitignore Initial release of gstatsd 0.1. 2011-06-28 21:03:22 -04:00
LICENSE Added license file, fix for PYPI. 2011-06-28 22:48:59 -04:00
README.md Release 0.3. 2011-06-29 11:59:34 -04:00
README.txt Release 0.3.1 2011-06-29 12:09:23 -04:00
setup.py Release 0.3. 2011-06-29 11:59:34 -04:00

README.md

gstatsd - A statsd service implementation in Python + gevent.

If you are unfamiliar with statsd, you can read why statsd exists, or look at the NodeJS statsd implementation.

License: Apache 2.0

Requirements

  • Python - I'm testing on 2.6/2.7 at the moment.
  • gevent - A libevent wrapper.
  • distribute - (or setuptools) for builds.

Using gstatsd

Show gstatsd help:

% gstatsd -h

Options:

Usage: gstatsd [options]

 A statsd service in Python + gevent.

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -b BIND_ADDR, --bind=BIND_ADDR
                        bind [host]:port (host defaults to '')
  -d DEST_ADDR, --dest=DEST_ADDR
                        receiver [backend:]host:port (backend defaults to
                        'graphite')
  -v                    increase verbosity (currently used for debugging)
  -f INTERVAL, --flush=INTERVAL
                        flush interval, in seconds (default 10)
  -p PERCENT, --percent=PERCENT
                        percent threshold (default 90)
  -l, --list            list supported backends
  -D, --daemonize       daemonize the service

Start gstatsd and send stats to port 9100 every 5 seconds:

% gstatsd -d :9100 -f 5

Bind listener to host 'hostname' port 8126:

% gstatsd -b hostname:8126 -d :9100 -f 5

To send the stats to multiple graphite servers, specify multiple destinations:

% gstatsd -b :8125 -d stats1:9100 stats2:9100

Using the client

The code example below demonstrates using the low-level client interface:

from gstatsd import client

# location of the statsd server
hostport = ('', 8125)

raw = client.StatsClient(hostport)

# add 1 to the 'foo' bucket
raw.increment('foo')

# timer 'bar' took 25ms to complete
raw.timer('bar', 25)

You may prefer to use the stateful client:

# wraps the raw client
cli = client.Stats(raw)

timer = cli.get_timer('foo')
timer.start()

... do some work ..

# when .stop() is called, the stat is sent to the server
timer.stop()