Skip to main content

Metric classes for Statsd

Project description

https://travis-ci.org/farzadghanei/statsd-metrics.svg?branch=master

Metric classes for Statsd and and functionality to create, parse and send Statsd requests (each metric in a single request, or send batch requests).

Metric Classes

Available metrics:

  • Counter

  • Timer

  • Gauge

  • Set

  • GaugeDelta

from statsdmetrics import Counter, Timer

counter = Counter('event.login', 1, 0.2)
counter.to_request() # returns event.login:1|c|@0.2

timer = Timer('db.search.username', 27.4)
timer.to_request() # returns db.search.username:27.4|ms

Parse metrics from a Statsd request

from statsdmetrics import parse_metric_from_request

event_login = parse_metric_from_request('event.login:1|c|@.2')
# event_login is a Counter object with count = 1 and sample_rate = 0.2

mem_usage = parse_metric_from_request('resource.memory:2048|g')
# mem_usage is a Gauge object with value = 2028

Statsd Client

Send Statsd requests

from statsdmetrics.client import Client

client = Client("stats.example.org")
client.increment("login")
client.timing("db.search.username", 3500)
client.set("unique.ip_address", "10.10.10.1")
client.gauge("memory", 20480)
# settings can be updated later
client.host = "localhost"
client.port = 8126
client.gauge_delta("memory", -256)
client.decrement(name="connections", 2)

Sending multiple metrics in batch requests is supported through BatchClient class, either by using an available client as the context manager:

from statsdmetrics.client import Client

client = Client("stats.example.org")
with client.batch_client() as batch_client:
    batch_client.increment("login")
    batch_client.decrement(name="connections", 2)
    batch_client.timing("db.search.username", 3500)
# now all metrics are flushed automatically in batch requests

or by creating a BatchClient object explicitly:

from statsdmetrics.client import BatchClient

client = BatchClient("stats.example.org")
client.set("unique.ip_address", "10.10.10.1")
client.gauge("memory", 20480)
client.flush() # sends one UDP packet to remote server, carrying both metrics

Dependencies

There are no specific dependencies, it runs on Python 2.7+ (CPython 2.7, 3.2, 3.3 3.4 and 3.5, PyPy 2.6 and PyPy3 2.4, and Jython 2.7 are tested)

However on development (and test) environment mock is required, and distutilazy (or setuptools as a fallback) is used to run the tests.

# on dev/test env
pip install -r requirements-dev.txt

Tests

If you have make available

make test

You can always use the setup.py file

python setup.py test

License

Statsd metrics is released under the terms of the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

statsdmetrics-0.1.0.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

statsdmetrics-0.1.0-py2.py3-none-any.whl (8.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file statsdmetrics-0.1.0.tar.gz.

File metadata

  • Download URL: statsdmetrics-0.1.0.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for statsdmetrics-0.1.0.tar.gz
Algorithm Hash digest
SHA256 36c549b27fae5355dcdfaf85c178a0831c0836abf87e02ab53174b4628bdbdf2
MD5 8e7a00de996cefe49cbabfe71a00c9be
BLAKE2b-256 9fb000c645b802243aa2ab83660b68ff93bf5206e3f8532da4ec86cf22e0f464

See more details on using hashes here.

File details

Details for the file statsdmetrics-0.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for statsdmetrics-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2ea8cac2cdd142d9a4d918392d57ca62d6fd26304c622bb04d1e1d8f99b308cc
MD5 02c30b5713c2bb0579321d756d8c300e
BLAKE2b-256 eb8b6b62bfb7f06a8446e6b9b41358223fb16034f92c7e70a1076d485e322d85

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page