From 5baefd986b093df93befbfda668e5d57ab7e4f2a Mon Sep 17 00:00:00 2001 From: Edgar Veiga Date: Mon, 2 Sep 2013 10:33:31 +0100 Subject: [PATCH] Add nutcracker plugin. --- plugins/nutcracker/nutcracker_requests_ | 65 +++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 plugins/nutcracker/nutcracker_requests_ diff --git a/plugins/nutcracker/nutcracker_requests_ b/plugins/nutcracker/nutcracker_requests_ new file mode 100755 index 00000000..affba97c --- /dev/null +++ b/plugins/nutcracker/nutcracker_requests_ @@ -0,0 +1,65 @@ +#!/usr/bin/python + +# This is a monitoring plugin for twemproxy (aka: nutcracker) +# config in /etc/munin/plugin-conf.d/nutcracker.conf +# +# [nutcracker_*] +# env.NUTCRACKER_STATS_HOST 127.0.0.1 +# env.NUTCRACKER_STATS_PORT 22222 +# +# any questions to edgarmveiga at gmail dot com +# + +import socket +import sys +import os + +try: + import json +except ImportError: + import simplejson as json + +def get_stats(): + data = ''; + + HOST = os.environ.get('NUTCRACKER_STATS_HOST', '127.0.0.1'); + PORT = os.environ.get('NUTCRACKER_STATS_PORT', 22222) + + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((HOST, PORT)) + + file = s.makefile('r') + data = file.readline(); + s.close() + + return json.loads(data); + +def process_data(): + data = get_stats(); + # get pools + for key, value in data.iteritems(): + if(type(value) == dict): + total = 0 + # get server requests + for pool_key, pool_value in value.iteritems(): + if(type(pool_value) == dict): + total += pool_value["requests"] + print "requests_"+key+".value"+" "+str(total) + +def process_config(): + print "graph_title Nutcracker requests/s" + print "graph_category nutcracker" + print "graph_vlabel requests/s" + + data = get_stats(); + for key, value in data.iteritems(): + if(type(value) == dict): + print "requests_"+key+".label "+key + print "requests_"+key+".type COUNTER" + print "requests_"+key+".min 0" + +if __name__ == "__main__": + if len(sys.argv) > 1 and sys.argv[1] == "config": + process_config() + else: + process_data()