File: dstat_redis.py

package info (click to toggle)
dstat 0.7.4-6.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 1,608 kB
  • sloc: python: 5,964; makefile: 70; sh: 3
file content (52 lines) | stat: -rw-r--r-- 1,386 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
### Author: Jihyun Yu <yjh0502@gmail.com>

global redis_host 
redis_host = os.getenv('DSTAT_REDIS_HOST') or "127.0.0.1"

global redis_port
redis_port = os.getenv('DSTAT_REDIS_PORT') or "6379"

class dstat_plugin(dstat):
    def __init__(self):
        self.type = 'd'
        self.width = 7
        self.scale = 10000
        self.name = 'redis'
        self.nick = ('tps',)
        self.vars = ('tps',)
        self.cmdInfo = '*1\r\n$4\r\ninfo\r\n'

    def get_info(self):
        global socket
        import socket

        global redis_host
        global redis_port

        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        try:
            s.settimeout(0.1)
            s.connect((redis_host, int(redis_port)))
            s.send(self.cmdInfo)
            dict = {};
            for line in s.recv(1024*1024).split('\r\n'):
                if line == "" or line[0] == '#' or line[0] == '*' or line[0] == '$':
                    continue
                pair = line.split(':', 2)
                dict[pair[0]] = pair[1]
            return dict
        except:
            return {}
        finally:
            try:
                s.close()
            except:
                pass

    def extract(self):
        key = "instantaneous_ops_per_sec"
        dic = self.get_info()
        if key in dic:
            self.val['tps'] = int(dic[key])

# vim:ts=4:sw=4:et