From: paulfantom Date: Thu, 7 Jul 2016 10:36:44 +0000 (+0200) Subject: search for command + exim.chart.py X-Git-Tag: v1.3.0~82^2~1 X-Git-Url: https://arthur.barton.de/gitweb/?a=commitdiff_plain;h=b41774a194082eb532c1d6f796c6ec014f4a5c5d;p=netdata.git search for command + exim.chart.py --- diff --git a/python.d/exim.chart.py b/python.d/exim.chart.py new file mode 100644 index 00000000..a267c239 --- /dev/null +++ b/python.d/exim.chart.py @@ -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 diff --git a/python.d/python_modules/base.py b/python.d/python_modules/base.py index 604f729b..c2d57938 100644 --- a/python.d/python_modules/base.py +++ b/python.d/python_modules/base.py @@ -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