try: plugin.verbose(2, "Reading sensor %s" % sensorid) data = file(filename).readlines() except IOError: plugin.back2nagios(3, 'Could not read file "%s"' % filename) if plugin.options.verbose >= 3: plugin.verbose(3, "Read line(s):" % data) for line in data: plugin.verbose(3, "--> " + line.lstrip().rstrip()) plugin.verbose(2, "Checking age of file") fileage = time.time() - os.path.getmtime(filename) if fileage > plugin.options.maxage: returncode = 3 plugin.add_output('Data of sensor "%s" to old' % sensorid) plugin.add_multilineoutput( "%s %s because of file age: %s, limit: %s" % ( sensorid, plugin.RETURNSTRINGS[returncode], plugin.seconds_to_timedelta(fileage), plugin.seconds_to_timedelta(plugin.options.maxage), ) ) plugin.add_returncode(returncode) plugin.verbose(2, "File to old, age: %s but only %s seconds allowed" % (long(fileage), plugin.options.maxage)) else: plugin.verbose(2, "File age OK, age: %s and %s seconds are allowed" % (long(fileage), plugin.options.maxage)) valuesinfile = 0
states = None if plugin.options.statistics: scoreboard = re.search('Scoreboard: (.*)\n', data) if scoreboard: states = {'_':0, 'S':0, 'R':0, 'W':0, 'K':0, 'D':0, 'C':0, 'L':0, 'G':0, 'I':0, '.':0,} for worker in scoreboard.group(1): states[worker] += 1 plugin.add_multilineoutput(str(states['_']) + ' waiting for connection') plugin.add_multilineoutput(str(states['S']) + ' starting up') plugin.add_multilineoutput(str(states['R']) + ' reading request') plugin.add_multilineoutput(str(states['W']) + ' writing/sending reply') plugin.add_multilineoutput(str(states['K']) + ' keepalive') plugin.add_multilineoutput(str(states['D']) + ' looking up in DNS') plugin.add_multilineoutput(str(states['C']) + ' closing connection') plugin.add_multilineoutput(str(states['L']) + ' logging') plugin.add_multilineoutput(str(states['G']) + ' gracefully finishing') plugin.add_multilineoutput(str(states['I']) + ' idle cleanup of worker') plugin.add_multilineoutput(str(states['.']) + ' open slots(up to ServerLimit)') returncode = plugin.value_wc_to_returncode(busy, plugin.options.warn, plugin.options.crit) plugin.add_output(str(busy) + ' busy workers, ' + str(idle) + ' idle') plugin.add_returncode(returncode) plugin.format_add_performancedata('busy', busy, '', warn=plugin.options.warn, crit=plugin.options.crit, min=0.0) plugin.format_add_performancedata('idle', idle, '') plugin.exit()
# Go! for version in versions: if version == '6': matcher = v6match else: matcher = v4match for proto in protos: filename = '/proc/net/%s%s' % (proto, version) f = file(filename) lines = f.readlines() for line in lines: m = matcher.match(line) if m: port = int(m.group(2), 16) if port == plugin.options.port and m.group(3) not in ['00000000','00000000000000000000000000000000']: count += 1 returncode = plugin.value_wc_to_returncode(count, plugin.options.warn, plugin.options.crit) plugin.add_returncode(returncode) plugin.add_output('%s network connections on port %s' % (count, plugin.options.port)) plugin.format_add_performancedata('netconns_%s' % plugin.options.port, count, '', warn=plugin.options.warn, crit=plugin.options.crit) plugin.exit()
failed_dns = [] for dns in plugin.options.dns.split(','): try: ip_dns = socket.gethostbyname(dns) except socket.gaierror: ip_dns = None if ip_dns: plugin.verbose(1, 'Found IP "%s" as DNS object "%s"' % (ip_dns, dns)) else: plugin.verbose(1, 'Did not find IP for "%s"' % dns) if ip_iface != ip_dns: plugin.add_multilineoutput('CRITICAL - "%s" has unexpected IP "%s"' % (dns, ip_dns)) failed_dns.append(dns) else: plugin.add_multilineoutput('OK - "%s" resolves to "%s"' % (dns, ip_dns)) if len(failed_dns) == 0: plugin.add_returncode(0) plugin.add_output('All DNS objects have a correct IP') else: plugin.add_returncode(2) plugin.add_output('Following DNS objects did not resolve as expected: "%s"' % '", "'.join(failed_dns)) plugin.exit()