]> arthur.barton.de Git - netdata.git/blobdiff - python.d/varnish.chart.py
delete obsolete charts and orphan hosts by default
[netdata.git] / python.d / varnish.chart.py
index 9b37c93d5cae330daf4830a8f55e7ea5066898c8..2665bb383b687d3ebb5b2e8acefb1acf98df784f 100644 (file)
@@ -4,10 +4,8 @@
 
 from base import SimpleService
 from re import compile
-from os import access as is_executable, X_OK
 from subprocess import Popen, PIPE
 
-
 # default module values (can be overridden per job in `config`)
 # update_every = 2
 priority = 60000
@@ -39,6 +37,7 @@ CHARTS = {'backend_health':
                        ['esi_errors_b', None, 'incremental', 1, 1],
                        ['esi_warnings_b', None, 'incremental', 1, 1],
                        ['sess_fail_b', None, 'incremental', 1, 1],
+                       ['sc_pipe_overflow_b', None, 'incremental', 1, 1],
                        ['sess_pipe_overflow_b', None, 'incremental', 1, 1]],
               'options': [None, 'Misbehavior', 'problems', 'Problems summary', 'varnish.bad', 'line']},
           'expunge':
@@ -79,17 +78,11 @@ CHARTS = {'backend_health':
               'options': [None, 'Varnish uptime', 'seconds', 'Uptime', 'varnish.uptime', 'line']}
 }
 
-DIRECTORIES = ['/bin/', '/usr/bin/', '/sbin/', '/usr/sbin/']
-
 
 class Service(SimpleService):
     def __init__(self, configuration=None, name=None):
         SimpleService.__init__(self, configuration=configuration, name=name)
-        try:
-            self.varnish = [''.join([directory, 'varnishstat']) for directory in DIRECTORIES
-                         if is_executable(''.join([directory, 'varnishstat']), X_OK)][0]
-        except IndexError:
-            self.varnish = False
+        self.varnish = self.find_binary('varnishstat')
         self.rgx_all = compile(r'([A-Z]+\.)?([\d\w_.]+)\s+(\d+)')
         # Could be
         # VBE.boot.super_backend.pipe_hdrbyte (new)
@@ -103,7 +96,7 @@ class Service(SimpleService):
     def check(self):
         # Cant start without 'varnishstat' command
         if not self.varnish:
-            self.error('\'varnishstat\' command was not found in %s or not executable by netdata' % DIRECTORIES)
+            self.error('Can\'t locate \'varnishstat\' binary or binary is not executable by netdata')
             return False
 
         # If command is present and we can execute it we need to make sure..
@@ -144,7 +137,7 @@ class Service(SimpleService):
         if not raw_data:
             return None
 
-        return raw_data
+        return raw_data.decode()
 
     def _get_data(self):
         """
@@ -159,10 +152,10 @@ class Service(SimpleService):
             return None
 
         # 1. ALL data from 'varnishstat -1'. t - type(MAIN, MEMPOOL etc)
-        to_netdata = {k: int(v) for t, k, v in data_all}
+        to_netdata = dict([(k, int(v)) for t, k, v in data_all])
         
         # 2. ADD backend statistics
-        to_netdata.update({'_'.join([n, k]): int(v) for n, k, v in data_backend})
+        to_netdata.update(dict([('_'.join([n, k]), int(v)) for n, k, v in data_backend]))
 
         # 3. ADD additional keys to dict
         # 3.1 Cache hit/miss/hitpass OVERALL in percent
@@ -187,7 +180,7 @@ class Service(SimpleService):
         self.cache_prev = [to_netdata.get('cache_hit', 0), to_netdata.get('cache_miss', 0), to_netdata.get('cache_hitpass', 0)]
 
         # 3.3 Problems summary chart
-        for elem in ['backend_busy', 'backend_unhealthy', 'esi_errors', 'esi_warnings', 'losthdr', 'sess_drop',
+        for elem in ['backend_busy', 'backend_unhealthy', 'esi_errors', 'esi_warnings', 'losthdr', 'sess_drop', 'sc_pipe_overflow',
                      'sess_fail', 'sess_pipe_overflow', 'threads_destroyed', 'threads_failed', 'threads_limited', 'thread_queue_len']:
             if to_netdata.get(elem) is not None:
                 to_netdata[''.join([elem, '_b'])] = to_netdata.get(elem)