Python 2.x

How to send metrics using Python

Interesting Python Graphite Libraries

  • A Python module for sending metrics to Graphite over UDP https://github.com/derpston/python-graphiteudparrow-up-right - Charlie wrote this library, and we use it internally. It’s a good simple library for sending metrics over UDP in Python.

  • Diamond - Send system metrics to Graphite Diamond - A really useful Python daemon to send system metrics such as CPU usage, load, Disk IO, etc.

Sending a metric via TCP

import socket

conn = socket.create_connection(("YOUR-UID.carbon.hostedgraphite.com", 2003))
conn.send("YOUR-API-KEY.foo.py-tcp 1.2\n")
conn.close()

Sending a metric via UDP

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto("YOUR-API-KEY.foo.py-udp 1.2\n", ("YOUR-UID.carbon.hostedgraphite.com", 2003))

Sending a metric using HTTP POST

import urllib2, base64

url = "https://www.hostedgraphite.com/api/v1/sink"
api_key = "YOUR-API-KEY"

request = urllib2.Request(url, "foo.py-http 1.2")
request.add_header("Authorization", "Basic %s" % base64.encodestring(api_key).strip())
result = urllib2.urlopen(request)

Sending a metric via TCP over TLS tunnel

Your API key can be found on your account homearrow-up-right page.

Python 3.x

Sending a metric via TCP

Sending a metric via UDP

Sending a metric using HTTP POST

With the requests module:

Using only stdlib modules: (Contributed by Waldoarrow-up-right, thanks!)

Sending a metric via TCP over TLS tunnel

Sending a metric via StatsD

When sending StatsD metrics, make sure to specify counters (c), gauges (g), or timers (ms).

Your API key can be found on your account homearrow-up-right page.

Last updated