Projet

Général

Profil

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

root / plugins / twemproxy / nutcracker_requests_ @ 51864405

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

1 51864405 Lars Kruse
#!/usr/bin/env python3
2
"""
3
=head1 NAME
4 5baefd98 Edgar Veiga
5 51864405 Lars Kruse
nutcracker_requests_ - monitor twemproxy (aka: nutcracker)
6
7
8
=head1 CONFIGURATION
9
10
Config in /etc/munin/plugin-conf.d/nutcracker.conf:
11
12
 [nutcracker_*]
13
 env.NUTCRACKER_STATS_HOST 127.0.0.1
14
 env.NUTCRACKER_STATS_PORT 22222
15
16
17
=head1 AUTHORS
18
19
Copyright 2013 Edgar Veiga <edgarmveiga@gmail.com>
20
21
=cut
22
"""
23
24
25
import json
26 5baefd98 Edgar Veiga
import socket
27
import os
28 51864405 Lars Kruse
import sys
29 5baefd98 Edgar Veiga
30
31
def get_stats():
32 51864405 Lars Kruse
    data = ''
33 5baefd98 Edgar Veiga
34 51864405 Lars Kruse
    HOST = os.environ.get('NUTCRACKER_STATS_HOST', '127.0.0.1')
35 78e584dc minitux
    PORT = int(os.environ.get('NUTCRACKER_STATS_PORT', 22222))
36 5baefd98 Edgar Veiga
37
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
38
    s.connect((HOST, PORT))
39
40
    file = s.makefile('r')
41 51864405 Lars Kruse
    data = file.readline()
42 5baefd98 Edgar Veiga
    s.close()
43
44 51864405 Lars Kruse
    return json.loads(data)
45
46 5baefd98 Edgar Veiga
47
def process_data():
48 51864405 Lars Kruse
    data = get_stats()
49 5baefd98 Edgar Veiga
    # get pools
50 51864405 Lars Kruse
    for key, value in data.items():
51
        if isinstance(value, dict):
52 5baefd98 Edgar Veiga
            total = 0
53
            # get server requests
54 1e81c032 pboesch
            for pool_key, pool_value in value.items():
55 51864405 Lars Kruse
                if isinstance(pool_value, dict):
56 5baefd98 Edgar Veiga
                    total += pool_value["requests"]
57 51864405 Lars Kruse
            print("requests_" + key + ".value" + " " + str(total))
58
59 5baefd98 Edgar Veiga
60
def process_config():
61 51864405 Lars Kruse
    print("graph_title Nutcracker requests/s")
62
    print("graph_category other")
63
    print("graph_vlabel requests/s")
64 5baefd98 Edgar Veiga
65 51864405 Lars Kruse
    data = get_stats()
66 1e81c032 pboesch
    for key, value in data.items():
67 51864405 Lars Kruse
        if isinstance(value, dict):
68
            print("requests_" + key + ".label " + key)
69
            print("requests_" + key + ".type COUNTER")
70
            print("requests_" + key + ".min 0")
71
72 5baefd98 Edgar Veiga
73
if __name__ == "__main__":
74
    if len(sys.argv) > 1 and sys.argv[1] == "config":
75
        process_config()
76
    else:
77
        process_data()