]> arthur.barton.de Git - netdata.git/commitdiff
search for command + exim.chart.py
authorpaulfantom <paulfantom@gmail.com>
Thu, 7 Jul 2016 10:36:44 +0000 (12:36 +0200)
committerpaulfantom <paulfantom@gmail.com>
Thu, 7 Jul 2016 10:36:44 +0000 (12:36 +0200)
python.d/exim.chart.py [new file with mode: 0644]
python.d/python_modules/base.py

diff --git a/python.d/exim.chart.py b/python.d/exim.chart.py
new file mode 100644 (file)
index 0000000..a267c23
--- /dev/null
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+# Description: exim netdata python.d module
+# Author: Pawel Krupa (paulfantom)
+
+from base import ExecutableService
+
+# default module values (can be overridden per job in `config`)
+# update_every = 2
+priority = 60000
+retries = 5
+
+# charts order (can be overridden if you want less charts, or different order)
+ORDER = ['qemails']
+
+CHARTS = {
+    'qemails': {
+        'options': [None, "Exim Queue Emails", "emails", 'queue', 'exim.queued.emails', 'line'],
+        'lines': [
+            ['emails', None, 'absolute']
+        ]}
+}
+
+
+class Service(ExecutableService):
+    def __init__(self, configuration=None, name=None):
+        ExecutableService.__init__(self, configuration=configuration, name=name)
+        self.command = "exim -bpc"
+        self.order = ORDER
+        self.definitions = CHARTS
+
+    def _get_data(self):
+        """
+        Format data received from shell command
+        :return: dict
+        """
+        try:
+            raw = self._get_raw_data()[-1].split(' ')
+            return {'emails': raw[4],
+                    'size': raw[1]}
+        except (ValueError, AttributeError):
+            return None
index 604f729bea3401dff3e9857901602a9b48a72ce8..c2d5793801119c38d4d0eb0b0ae6c2b055f1f772 100644 (file)
@@ -606,6 +606,14 @@ class ExecutableService(SimpleService):
             else:
                 self.error("Wrong command. Probably not on whitelist.")
                 return False
+        # test command and search for it in /usr/sbin or /sbin when failed
+        base = self.command[0]
+        if self._get_raw_data() is None:
+            for prefix in ['/sbin/', '/usr/sbin/']:
+                self.command[0] = prefix + base
+                if self._get_raw_data() is not None:
+                    break
+
         if self._get_data() is None or len(self._get_data()) == 0:
             return False
         return True