"bind_rndc" fixes
lgz committed
Oct 13, 2017 at 22:08 UTC
a5bab2b3d53d3c9147e9b261aa6a5fd6e4cfc375
2 files changed
+13
-10
python.d/bind_rndc.chart.py
+10
-9
@@ -2,11 +2,12 @@
2
# Description: bind rndc netdata python.d module
3
# Author: l2isbad
4
5
+from collections import defaultdict
6
from os.path import getsize
7
from os import access, R_OK
8
from subprocess import Popen
8
-from collections import defaultdict
9
-from base import SimpleService
9
+
10
+from bases.FrameworkServices.SimpleService import SimpleService
11
12
priority = 60000
13
retries = 60
@@ -94,7 +95,7 @@ class Service(SimpleService):
95
self.order = ORDER
96
self.definitions = CHARTS
97
self.named_stats_path = self.configuration.get('named_stats_path', '/var/log/bind/named.stats')
97
- self.rndc = self.find_binary('rndc')
98
+ self.rndc = self.functions.find_binary('rndc')
99
self.data = dict(nms_requests=0, nms_responses=0, nms_failure=0, nms_auth=0,
100
nms_non_auth=0, nms_nxrrset=0, nms_success=0, nms_nxdomain=0,
101
nms_recursion=0, nms_duplicate=0, nms_rejected_queries=0,
@@ -102,10 +103,10 @@ class Service(SimpleService):
103
104
def check(self):
105
if not self.rndc:
105
- self.error('Can\'t locate \'rndc\' binary or binary is not executable by netdata')
106
+ self.error('Can\'t locate "rndc" binary or binary is not executable by netdata')
107
return False
108
108
- if not access(self.named_stats_path, R_OK):
109
+ if not self.functions.is_file_readable(self.named_stats_path):
110
self.error('Cannot access file %s' % self.named_stats_path)
111
return False
112
@@ -159,12 +160,12 @@ class Service(SimpleService):
160
parsed_key, chart_name = elem[0], elem[1]
161
for dimension_id, value in queries_mapper(data=parsed[parsed_key],
162
add=chart_name[:9]).items():
163
+
164
if dimension_id not in self.data:
165
dimension = dimension_id.replace(chart_name[:9], '')
164
- self._add_new_dimension(dimension_id=dimension_id,
165
- dimension=dimension,
166
- chart_name=chart_name,
167
- priority=self.priority + self.order.index(chart_name))
166
+ if dimension_id not in self.charts[chart_name]:
167
+ self.charts[chart_name].add_dimension_and_push_chart([dimension_id, dimension, 'incremental'])
168
+
169
self.data[dimension_id] = value
170
171
self.data['stats_size'] = raw_data['size']
python.d/python_modules/bases/FrameworkServices/SimpleService.py
+3
-1
@@ -20,6 +20,7 @@ START_MSG = 'STARTED. Update frequency: {freq}, retries: {retries}.'
20
UPDATE_MSG = 'UPDATE {status}. Elapsed time: {elapsed}, retries left: {retries}.'
21
STOP_MSG = 'STOPPED after {retries_max} data collection failures in a row.'
22
SLEEP_MSG = 'SLEEPING for {sleep_time} to reach frequency of {freq} sec.'
23
+UNHANDLED_EXCEPTION = 'Unhandled exception in {method_name}(). Error: {error}.'
24
25
RUNTIME_CHART_UPDATE = 'BEGIN netdata.runtime_{job_name} {since_last}\n' \
26
'SET run_time = {elapsed}\n' \
@@ -160,7 +161,8 @@ class SimpleService(Thread, PythonDLimitedLogger, OldVersionCompatibility, objec
161
try:
162
updated = self.update(interval=job.SINCE_UPDATE)
163
except Exception as error:
163
- print(error)
164
+ self.debug(UNHANDLED_EXCEPTION.format(method_name='update',
165
+ error=error))
166
updated = False
167
168
if not updated: