Created
January 30, 2018 15:59
-
-
Save stantonk/77b184ede880e0be0af148ee809a2434 to your computer and use it in GitHub Desktop.
statsd demo code in python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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