Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / plugins / twemproxy / nutcracker_requests_ @ a7139bca

Historique | Voir | Annoter | Télécharger (1,61 ko)

1 a7139bca Lars Kruse
#!/usr/bin/env python
2 5baefd98 Edgar Veiga
3
# This is a monitoring plugin for twemproxy (aka: nutcracker)
4
# config in /etc/munin/plugin-conf.d/nutcracker.conf
5
#
6
# [nutcracker_*]
7
# env.NUTCRACKER_STATS_HOST 127.0.0.1
8
# env.NUTCRACKER_STATS_PORT 22222
9
#
10
# any questions to edgarmveiga at gmail dot com
11
#
12
13
import socket
14
import sys
15
import os
16
17
try:
18
    import json
19
except ImportError:
20
    import simplejson as json
21
22
def get_stats():
23
    data = '';
24
25
    HOST = os.environ.get('NUTCRACKER_STATS_HOST', '127.0.0.1');
26 78e584dc minitux
    PORT = int(os.environ.get('NUTCRACKER_STATS_PORT', 22222))
27 5baefd98 Edgar Veiga
28
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
29
    s.connect((HOST, PORT))
30
31
    file = s.makefile('r')
32
    data = file.readline();
33
    s.close()
34
35
    return json.loads(data);
36
37
def process_data():
38
    data = get_stats();
39
    # get pools
40
    for key, value in data.iteritems():
41
        if(type(value) == dict):
42
            total = 0
43
            # get server requests
44 1e81c032 pboesch
            for pool_key, pool_value in value.items():
45 5baefd98 Edgar Veiga
                if(type(pool_value) == dict):
46
                    total += pool_value["requests"]
47
            print "requests_"+key+".value"+" "+str(total)
48
49
def process_config():
50
    print "graph_title Nutcracker requests/s"
51 63351ab5 dipohl
    print "graph_category other"
52 5baefd98 Edgar Veiga
    print "graph_vlabel requests/s"
53
54
    data = get_stats();
55 1e81c032 pboesch
    for key, value in data.items():
56 5baefd98 Edgar Veiga
        if(type(value) == dict):
57
            print "requests_"+key+".label "+key
58
            print "requests_"+key+".type COUNTER"
59
            print "requests_"+key+".min 0"
60
61
if __name__ == "__main__":
62
    if len(sys.argv) > 1 and sys.argv[1] == "config":
63
        process_config()
64
    else:
65
        process_data()