Package: python-statsd
statsdis a client for Etsy’s statsd server, a front end/proxy for the
Graphite stats collection and graphing server.LinksThe source:https://github.com/WoLpH/python-statsdProject page:https://pypi.python.org/pypi/python-statsdReporting bugs:https://github.com/WoLpH/python-statsd/issuesDocumentation:http://python-statsd.readthedocs.io/en/latest/My blog:http://w.wol.ph/Statsd:https://github.com/etsy/statsdGraphite:http://graphite.wikidot.comInstallTo install simply executepython setup.py install.
If you want to run the tests first, runpython setup.py nosetestsUsageTo get started real quick, just try something like this:Basic UsageTimers>>> import statsd
>>>
>>> timer = statsd.Timer('MyApplication')
>>>
>>> timer.start()
>>> # do something here
>>> timer.stop('SomeTimer')Counters>>> import statsd
>>>
>>> counter = statsd.Counter('MyApplication')
>>> # do something here
>>> counter += 1Gauge>>> import statsd
>>>
>>> gauge = statsd.Gauge('MyApplication')
>>> # do something here
>>> gauge.send('SomeName', value)RawRaw strings should be e.g. pre-summarized data or other data that will
get passed directly to carbon.  This can be used as a time and
bandwidth-saving mechanism sending a lot of samples could use a lot of
bandwidth (more b/w is used in udp headers than data for a gauge, for
instance).>>> import statsd
>>>
>>> raw = statsd.Raw('MyApplication', connection)
>>> # do something here
>>> raw.send('SomeName', value, timestamp)The raw type wants to have a timestamp in seconds since the epoch (the
standard unix timestamp, e.g. the output of “date +%s”), but if you leave it out or
provide None it will provide the current time as part of the messageAverage>>> import statsd
>>>
>>> average = statsd.Average('MyApplication', connection)
>>> # do something here
>>> average.send('SomeName', 'somekey:%d'.format(value))Connection settingsIf you need some settings other than the defaults for yourConnection,
you can useConnection.set_defaults().>>> import statsd
>>> statsd.Connection.set_defaults(host='localhost', port=8125, sample_rate=1, disabled=False)Every interaction with statsd after these are set will use whatever you
specify, unless you explicitly create a differentConnectionto use
(described below).Defaults:host='localhost'port=8125sample_rate=1disabled=FalseAdvanced Usage>>> import statsd
>>>
>>> # Open a connection to `server` on port `1234` with a `50%` sample rate
>>> statsd_connection = statsd.Connection(
...     host='server',
...     port=1234,
...     sample_rate=0.5,
... )
>>>
>>> # Create a client for this application
>>> statsd_client = statsd.Client(__name__, statsd_connection)
>>>
>>> class SomeClass(object):
...     def __init__(self):
...         # Create a client specific for this class
...         self.statsd_client = statsd_client.get_client(
...             self.__class__.__name__)
...
...     def do_something(self):
...         # Create a `timer` client
...         timer = self.statsd_client.get_client(class_=statsd.Timer)
...
...         # start the measurement
...         timer.start()
...
...         # do something
...         timer.intermediate('intermediate_value')
...
...         # do something else
...         timer.stop('total')If there is a need to turnOFFthe service and avoid sending UDP messages,
theConnectionclass can be disabled by enabling the disabled argument:>>> statsd_connection = statsd.Connection(
...     host='server',
...     port=1234,
...     sample_rate=0.5,
...     disabled=True
... )If logging’s level is set to debug theConnectionobject will inform it is
not sending UDP messages anymore.