redis: "rdb_bgsave_in_progress" and "rdb_last_bgsave_status" tracking added
Ilya committed
Sep 14, 2017 at 10:18 UTC
89a89fbb24e43fa009ff77ddf5e684e0b8afeca1
1 file changed
+24
-2
python.d/redis.chart.py
+24
-2
@@ -19,7 +19,8 @@ retries = 60
19
# 'unix_socket': None
20
# }}
21
22
-ORDER = ['operations', 'hit_rate', 'memory', 'keys', 'net', 'connections', 'clients', 'slaves', 'persistence']
22
+ORDER = ['operations', 'hit_rate', 'memory', 'keys', 'net', 'connections', 'clients', 'slaves', 'persistence',
23
+ 'bgsave_now', 'bgsave_health']
24
25
CHARTS = {
26
'operations': {
@@ -72,6 +73,18 @@ CHARTS = {
73
'redis.rdb_changes', 'line'],
74
'lines': [
75
['rdb_changes_since_last_save', 'changes', 'absolute']
76
+ ]},
77
+ 'bgsave_now': {
78
+ 'options': [None, 'Duration of the RDB Save Operation', 'seconds', 'persistence',
79
+ 'redis.bgsave_now', 'absolute'],
80
+ 'lines': [
81
+ ['rdb_bgsave_in_progress', 'rdb save', 'absolute']
82
+ ]},
83
+ 'bgsave_health': {
84
+ 'options': [None, 'Status of the Last RDB Save Operation', 'status', 'persistence',
85
+ 'redis.bgsave_health', 'line'],
86
+ 'lines': [
87
+ ['rdb_last_bgsave_status', 'rdb save', 'absolute']
88
]}
89
}
90
@@ -87,6 +100,7 @@ class Service(SocketService):
100
self.port = self.configuration.get('port', 6379)
101
self.unix_socket = self.configuration.get('socket')
102
password = self.configuration.get('pass', str())
103
+ self.bgsave_time = 0
104
self.requests = dict(request='INFO\r\n'.encode(),
105
password=' '.join(['AUTH', password, '\r\n']).encode() if password else None)
106
self.request = self.requests['request']
@@ -132,7 +146,7 @@ class Service(SocketService):
146
self.debug("invalid line received: " + str(line))
147
pass
148
135
- if len(data) == 0:
149
+ if not data:
150
self.error("received data doesn't have any records")
151
return None
152
@@ -142,6 +156,14 @@ class Service(SocketService):
156
except (KeyError, ZeroDivisionError, TypeError):
157
data['hit_rate'] = 0
158
159
+ if data['rdb_bgsave_in_progress'] != '0\r':
160
+ self.bgsave_time += self.update_every
161
+ else:
162
+ self.bgsave_time = 0
163
+
164
+ data['rdb_last_bgsave_status'] = 0 if data['rdb_last_bgsave_status'] == 'ok\r' else 1
165
+ data['rdb_bgsave_in_progress'] = self.bgsave_time
166
+
167
return data
168
169
def _check_raw_data(self, data):