@cryptotaxi247 / netdata-1 / commits / 05d8772ff

varnish module fixes

lgz committed Nov 3, 2017 at 11:32 UTC 05d8772ffcd5ad9691b889375f35c2e4b8d84b0a
1 file changed +21 -17
python.d/varnish.chart.py
+21 -17
@@ -105,15 +105,10 @@ class Service(SimpleService):
105 def __init__(self, configuration=None, name=None):
106 SimpleService.__init__(self, configuration=configuration, name=name)
107 self.varnish = find_binary('varnishstat')
108 - self.rgx_all = compile(r'([A-Z]+\.)?([\d\w_.]+)\s+(\d+)')
109 - # Could be
110 - # VBE.boot.super_backend.pipe_hdrbyte (new)
111 - # or
112 - # VBE.default2(127.0.0.2,,81).bereq_bodybytes (old)
113 - # Regex result: [('super_backend', 'beresp_hdrbytes', '0'), ('super_backend', 'beresp_bodybytes', '0')]
114 - self.rgx_bck = (re.compile(r'VBE.([\d\w_.]+)\(.*?\).(beresp[\w_]+)\s+(\d+)'),
115 - re.compile(r'VBE\.[\d\w-]+\.([\w\d_]+).(beresp[\w_]+)\s+(\d+)'))
108 + self.regex_all = re.compile(r'([A-Z]+\.)?([\d\w_.]+)\s+(\d+)')
109 + self.regex_backend = None
110 self.cache_prev = list()
111 + self.backend_list = list()
112
113 def check(self):
114 # Cant start without 'varnishstat' command
@@ -129,18 +124,27 @@ class Service(SimpleService):
124 return False
125
126 # 2. Output is parsable (list is not empty after regex findall)
132 - is_parsable = self.rgx_all.findall(reply)
133 - if not is_parsable:
127 + found = self.regex_all.findall(reply)
128 + if not found:
129 self.error('Cant parse output...')
130 return False
131
132 # We need to find the right regex for backend parse
138 - self.backend_list = self.rgx_bck[0].findall(reply)[::2]
133 + # Could be
134 + # VBE.boot.super_backend.pipe_hdrbyte (new)
135 + # or
136 + # VBE.default2(127.0.0.2,,81).bereq_bodybytes (old)
137 + # Regex result: [('super_backend', 'beresp_hdrbytes', '0'), ('super_backend', 'beresp_bodybytes', '0')]
138 +
139 + regex1 = re.compile(r'VBE.([\d\w_.]+)\(.*?\).(beresp[\w_]+)\s+(\d+)')
140 + regex2 = re.compile(r'VBE\.[\d\w-]+\.([\w\d_]+).(beresp[\w_]+)\s+(\d+)')
141 +
142 + self.backend_list = regex1.findall(reply)[::2]
143 if self.backend_list:
140 - self.rgx_bck = self.rgx_bck[0]
144 + self.regex_backend = regex1
145 else:
142 - self.backend_list = self.rgx_bck[1].findall(reply)[::2]
143 - self.rgx_bck = self.rgx_bck[1]
146 + self.backend_list = self.regex2.findall(reply)[::2]
147 + self.regex_backend = regex2
148
149 self.create_charts()
150 return True
@@ -164,15 +168,15 @@ class Service(SimpleService):
168 :return: dict
169 """
170 raw_data = self._get_raw_data()
167 - data_all = self.rgx_all.findall(raw_data)
168 - data_backend = self.rgx_bck.findall(raw_data)
171 + data_all = self.regex_all.findall(raw_data)
172 + data_backend = self.regex_backend.findall(raw_data)
173
174 if not data_all:
175 return None
176
177 # 1. ALL data from 'varnishstat -1'. t - type(MAIN, MEMPOOL etc)
178 to_netdata = dict((k, int(v)) for t, k, v in data_all)
175 -
179 +
180 # 2. ADD backend statistics
181 to_netdata.update(dict(('_'.join([n, k]), int(v)) for n, k, v in data_backend))
182