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-graphiteudp - 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 home 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 Waldo, 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 home page.

Last updated

Was this helpful?