dns_query_time plugin: replace "." with "_" in dimensions
Ilya committed
Mar 26, 2017 at 10:57 UTC
9dccc16d3763392f0b13349de18c3a838a667653
1 file changed
+26
-20
python.d/dns_query_time.chart.py
+26
-20
@@ -1,3 +1,7 @@
1
+# -*- coding: utf-8 -*-
2
+# Description: dns_query_time netdata python.d module
3
+# Author: l2isbad
4
+
5
try:
6
from time import monotonic as time
7
except ImportError:
@@ -57,17 +61,18 @@ class Service(SimpleService):
61
62
data = self._get_data(timeout=1)
63
60
- down_servers = [s[2:] for s in data if data[s] == -100]
61
- if down_servers:
62
- self.info('Removed due to non response %s' % down_servers)
63
- self.server_list = [s for s in self.server_list if s not in down_servers]
64
- if self.server_list:
65
- self._data_from_check = data
66
- self.order, self.definitions = create_charts(aggregate=self.aggregate, server_list=self.server_list)
67
- self.info(str({'domains': len(self.domains), 'servers': self.server_list}))
68
- return True
69
- else:
70
- return False
64
+ down_servers = [s for s in data if data[s] == -100]
65
+ for down in down_servers:
66
+ down = down[3:].replace('_', '.')
67
+ self.info('Removed due to non response %s' % down)
68
+ self.server_list.remove(down)
69
+ if not self.server_list:
70
+ return False
71
+
72
+ self._data_from_check = data
73
+ self.order, self.definitions = create_charts(aggregate=self.aggregate, server_list=self.server_list)
74
+ self.info(str({'domains': len(self.domains), 'servers': self.server_list}))
75
+ return True
76
77
def _get_data(self, timeout=None):
78
return dns_request(self.server_list, timeout or self.timeout, self.domains)
@@ -87,9 +92,9 @@ def dns_request(server_list, timeout, domains):
92
dns.query.udp(request, ns, timeout=t)
93
dns_end = time()
94
query_time = round((dns_end - dns_start) * 1000)
90
- q.put({''.join(['ns', ns]): query_time})
95
+ q.put({'_'.join(['ns', ns.replace('.', '_')]): query_time})
96
except dns.exception.Timeout:
92
- q.put({''.join(['ns', ns]): -100})
97
+ q.put({'_'.join(['ns', ns.replace('.', '_')]): -100})
98
99
for server in server_list:
100
th = Thread(target=dns_req, args=(server, timeout, que))
@@ -113,17 +118,18 @@ def check_ns(ns):
118
def create_charts(aggregate, server_list):
119
if aggregate:
120
order = ['dns_group']
116
- definitions = {'dns_group': {'options': [None, "DNS Response Time", "ms", 'name servers',
117
- 'resp.time', 'line'], 'lines': []}}
121
+ definitions = {'dns_group': {'options': [None, 'DNS Response Time', 'ms', 'name servers',
122
+ 'dns_query_time.response_time', 'line'], 'lines': []}}
123
for ns in server_list:
119
- definitions['dns_group']['lines'].append([''.join(['ns', ns]), ns, 'absolute'])
124
+ definitions['dns_group']['lines'].append(['_'.join(['ns', ns.replace('.', '_')]), ns, 'absolute'])
125
126
return order, definitions
127
else:
123
- order = [''.join(['dns_', ns]) for ns in server_list]
128
+ order = [''.join(['dns_', ns.replace('.', '_')]) for ns in server_list]
129
definitions = dict()
130
for ns in server_list:
126
- definitions[''.join(['dns_', ns])] = {'options': [None, "DNS Response Time", "ms", ns,
127
- 'resp.time', 'area'],
128
- 'lines': [[''.join(['ns', ns]), ns, 'absolute']]}
131
+ definitions[''.join(['dns_', ns.replace('.', '_')])] = {'options': [None, 'DNS Response Time', 'ms', ns,
132
+ 'dns_query_time.response_time', 'area'],
133
+ 'lines': [['_'.join(['ns', ns.replace('.', '_')]),
134
+ ns, 'absolute']]}
135
return order, definitions