@cryptotaxi247 / netdata-1 / commits / a5bab2b3d

"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: