def performance(self, metric, resource): """ Format performance data. :param metric: Metric :param resource: Resource :return: Performance """ # for dev mode if len(metric.value) == 1: crit = nagiosplugin.Range("~:0".format(int(round(len(metric.value) / 2)))) warn = None # for 3 node cluster elif 1 < len(metric.value) < 4: crit = nagiosplugin.Range("~:2".format(int(round(len(metric.value) / 2)))) warn = None # anything bigger if len(metric.value) >= 4: crit = nagiosplugin.Range("~:{}".format(int(round(len(metric.value) / 2)))) warn = nagiosplugin.Range("{}:{}".format(int(round(len(metric.value) / 2))+1, len(metric.value)-1)) return nagiosplugin.Performance( label="OK ZK nodes", value=len(metric.value), uom="Number", warn=warn, crit=crit, )
def add_explicit(self): seen = set() for params in self.filesystems: (mp, warn, crit, disksize, normsize, magic) = ( params.split(",") + [None, None, None, None, None] )[0:6] seen.add(mp) if not warn: warn = self.ranges[0] if not crit: crit = self.ranges[1] disksize = float(disksize) if disksize else None normsize = float(normsize) if normsize else self.normsize magic = float(magic) if magic else self.magic params = Parameters( self.check, mp, (nagiosplugin.Range(warn), nagiosplugin.Range(crit)), self.cap, normsize, magic, disksize, ) params.register_resource() return seen
def __init__(self, check, args): self.check = check self.allowed_types = [f.strip() for f in args.fstypes.split(',')] self.ranges = (nagiosplugin.Range(args.warning), nagiosplugin.Range(args.critical)) self.cap = (float(args.min_warning), float(args.min_critical)) self.normsize = float(args.normsize) self.magic = float(args.magic) self.filesystems = args.filesystem
def __init__(self, name, check_lifetime=True, warning_days=0, critical_days=0, fmt_metric='Valid for {value} days') -> None: super().__init__(name, fmt_metric=fmt_metric) self.name = name self.check_lifetime = check_lifetime self.warning_days = warning_days self.critical_days = critical_days self.warning = nagiosplugin.Range('@%d:' % self.warning_days) self.critical = nagiosplugin.Range('@%d:' % self.critical_days)
def main(): args = parser() check = nagiosplugin.Check( QJM(args), nagiosplugin.ScalarContext('processing', args.process_warn, args.process_crit), nagiosplugin.ScalarContext('sync', args.sync_threshold_warn, args.sync_threshold_crit), stringContext.StringContext('connection', "OK"), nagiosplugin.ScalarContext( 'quorum', nagiosplugin.Range("%s:" % str(len(args.qjm.split(',')) / 2)), nagiosplugin.Range("%s:" % str(len(args.qjm.split(',')) / 2)))) check.main()
def magic_range(self, range, cap): relsize = self.disksize / self.normsize effective_size = relsize**self.magic scale = effective_size / relsize new_max = round(100.0 - (100.0 - range.end) * scale, 1) new = '{}:{}'.format(range.start, max(new_max, cap)) _log.debug('magic({}, {}) -> {}'.format(self.disksize, range, new)) return nagiosplugin.Range(new)
def main(): argp = argparse.ArgumentParser() argp.add_argument('-H', '--host', required=True, help='The hostname of a Mesos master to check') argp.add_argument('-P', '--port', default=5050, help='The Mesos master HTTP port - defaults to 5050') argp.add_argument( '-n', '--slaves', default=1, help='The minimum number of slaves the cluster must be running') argp.add_argument( '-F', '--framework', default=[], action='append', help= 'Check that a framework is registered matching the given regex, may be specified multiple times' ) argp.add_argument('-v', '--verbose', action='count', default=0, help='increase output verbosity (use up to 3 times)') args = argp.parse_args() unhealthy_range = nagiosplugin.Range('%d:%d' % (HEALTHY - 1, HEALTHY + 1)) slave_range = nagiosplugin.Range('%s:' % (args.slaves, )) check = nagiosplugin.Check( MesosMaster('http://%s:%d' % (args.host, int(args.port)), args.framework), nagiosplugin.ScalarContext('leader redirect', unhealthy_range, unhealthy_range), nagiosplugin.ScalarContext('master health', unhealthy_range, unhealthy_range), nagiosplugin.ScalarContext('active slaves', slave_range, slave_range), nagiosplugin.ScalarContext('active leader', '1:1', '1:1'), nagiosplugin.ScalarContext('framework', '0:0', '0:0')) check.main(verbose=args.verbose)
def main(): argp = argparse.ArgumentParser() argp.add_argument('-d', '--discovery', required=True, help='The URL of the discovery server') argp.add_argument('-s', '--service', required=True, help='The service name to check') argp.add_argument('-e', '--endpoint', default='/health', help='The endpoint to check') argp.add_argument('-t', '--timeout', default=5, help='Timeout') argp.add_argument('-n', '--instances', default=1, help='Minimum instances before critical') argp.add_argument('-w', '--warn', default=-1, help='Minimum instances before warn') argp.add_argument('-v', '--verbose', action='count', default=0, help='increase output verbosity (use up to 3 times)') args = argp.parse_args() unhealthy_range = nagiosplugin.Range('%d:%d' % (HEALTHY - 1, HEALTHY + 1)) warn_services_range = nagiosplugin.Range('%s:' % (args.warn, )) crit_services_range = nagiosplugin.Range('%s:' % (args.instances, )) try: discovery_state = requests.get(args.discovery + '/state', timeout=4).json() except ValueError, e: log.error('ValueError while parsing discovery state: %s', e) discovery_state = []
def main(config): """ Required configs: - host """ kwargs = dict( host=config['host'], port=config['port'] ) return ( SslConfiguration(**kwargs), nap.ScalarContext('sslscore', nap.Range('@65:80'), nap.Range('@0:65')), nap.ScalarContext('serverHostname', nap.Range('@65:80'), nap.Range('@0:65')), nap.ScalarContext('validationResult', nap.Range('@65:80'), nap.Range('@0:65')), nap.ScalarContext('expireInDays', nap.Range('@65:80'), nap.Range('@0:65')), SslSummary(**kwargs) )
def test_accept_none_warning_critical(self): c = ScalarContext('ctx') self.assertEqual(nagiosplugin.Range(), c.warning) self.assertEqual(nagiosplugin.Range(), c.critical)
def __init__(self, name, r, fmt_metric='{name} expires in {valueunit}', result_cls=np.Result): super(CertificateContext, self).__init__(name, fmt_metric, result_cls) self.r = np.Range(r)
def __init__(self, r): self.r = np.Range(r)
def __init__(self): super(StartupTimeContext, self).__init__('startup_time') if opts.scope_startup_time: self.warning = nagiosplugin.Range(opts.warning) self.critical = nagiosplugin.Range(opts.critical)