summaryrefslogtreecommitdiffstats
path: root/python.d/redis.chart.py
diff options
context:
space:
mode:
Diffstat (limited to 'python.d/redis.chart.py')
-rw-r--r--python.d/redis.chart.py36
1 files changed, 16 insertions, 20 deletions
diff --git a/python.d/redis.chart.py b/python.d/redis.chart.py
index 4bc1d41f..7c3c43f5 100644
--- a/python.d/redis.chart.py
+++ b/python.d/redis.chart.py
@@ -68,7 +68,8 @@ CHARTS = {
['connected_slaves', 'connected', 'absolute']
]},
'persistence': {
- 'options': [None, 'Redis Persistence Changes Since Last Save', 'changes', 'persistence', 'redis.rdb_changes', 'line'],
+ 'options': [None, 'Redis Persistence Changes Since Last Save', 'changes', 'persistence',
+ 'redis.rdb_changes', 'line'],
'lines': [
['rdb_changes_since_last_save', 'changes', 'absolute']
]}
@@ -78,34 +79,30 @@ CHARTS = {
class Service(SocketService):
def __init__(self, configuration=None, name=None):
SocketService.__init__(self, configuration=configuration, name=name)
- self.request = "INFO\r\n"
self.order = ORDER
self.definitions = CHARTS
self._keep_alive = True
self.chart_name = ""
- self.passwd = None
- self.port = 6379
- if 'port' in configuration:
- self.port = configuration['port']
- if 'pass' in configuration:
- self.passwd = configuration['pass']
- if 'host' in configuration:
- self.host = configuration['host']
- if 'socket' in configuration:
- self.unix_socket = configuration['socket']
+ self.host = self.configuration.get('host', 'localhost')
+ self.port = self.configuration.get('port', 6379)
+ self.unix_socket = self.configuration.get('socket')
+ password = self.configuration.get('pass', str())
+ self.requests = dict(request='INFO\r\n'.encode(),
+ password=' '.join(['AUTH', password, '\r\n']).encode() if password else None)
+ self.request = self.requests['request']
def _get_data(self):
"""
Get data from socket
:return: dict
"""
- if self.passwd:
- self.request = "AUTH " + self.passwd + "\r\n"
+ if self.requests['password']:
+ self.request = self.requests['password']
raw = self._get_raw_data().strip()
if raw != "+OK":
self.error("invalid password")
return None
- self.request = "INFO\r\n"
+ self.request = self.requests['request']
response = self._get_raw_data()
if response is None:
# error has already been logged
@@ -117,7 +114,7 @@ class Service(SocketService):
self.error("response is invalid/empty")
return None
- data = {}
+ data = dict()
for line in parsed:
if len(line) < 5 or line[0] == '$' or line[0] == '#':
continue
@@ -140,8 +137,9 @@ class Service(SocketService):
return None
try:
- data['hit_rate'] = (int(data['keyspace_hits']) * 100) / (int(data['keyspace_hits']) + int(data['keyspace_misses']))
- except:
+ data['hit_rate'] = (int(data['keyspace_hits']) * 100) / (int(data['keyspace_hits'])
+ + int(data['keyspace_misses']))
+ except (KeyError, ZeroDivisionError, TypeError):
data['hit_rate'] = 0
return data
@@ -172,7 +170,6 @@ class Service(SocketService):
Parse configuration, check if redis is available, and dynamically create chart lines data
:return: boolean
"""
- self._parse_config()
if self.name == "":
self.name = "local"
self.chart_name += "_" + self.name
@@ -183,5 +180,4 @@ class Service(SocketService):
for name in data:
if name.startswith('db'):
self.definitions['keys']['lines'].append([name, None, 'absolute'])
-
return True