Skip to content

Instantly share code, notes, and snippets.

@stantonk
Created January 30, 2018 15:59
Show Gist options
  • Save stantonk/77b184ede880e0be0af148ee809a2434 to your computer and use it in GitHub Desktop.
Save stantonk/77b184ede880e0be0af148ee809a2434 to your computer and use it in GitHub Desktop.
statsd demo code in python
import re
import time
import sys
from socket import socket
from socket import AF_INET
from socket import SOCK_DGRAM
import os
UDP_SOCK = socket(AF_INET, SOCK_DGRAM)
STATS_PREFIX = 'kevin.test'
STATSD_HOST = os.environ.get('STATSD_HOST')
if STATSD_HOST is None:
print 'error: STATSD_HOST not set'
sys.exit(1)
STATSD_ADDR = (STATSD_HOST, 8125)
replacements = (
(re.compile(r'\s+'), '_'),
(re.compile(r'/'), '-'),
(re.compile(r'[^a-zA-Z_\-0-9\.]'), ''),
)
def sanitize_stat_name(statname):
"""
Sanitize invalid characters so Graphite hate me.
https://github.com/etsy/statsd/issues/110
"""
for regex, replacement in replacements:
statname = regex.sub(replacement, statname)
return statname
def send_gauge_stat(stat_name, val):
payload = ("%s.%s:%s|g" % (STATS_PREFIX, sanitize_stat_name(stat_name), val))
print payload
UDP_SOCK.sendto(payload.encode('utf-8'), STATSD_ADDR)
if __name__ == '__main__':
for i in range(10):
for j in range(10):
send_gauge_stat('silly', j)
time.sleep(10.1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment