plugin.add_cmdlineoption("-s", "", "sensorid", "(comma separated list of) sensor id(s), no spaces", default=None) plugin.add_cmdlineoption( "-m", "", "maxage", "maximum age of data files (default: 900 seconds/15 minutes)", type="int", default=900 ) plugin.add_cmdlineoption("-p", "", "path", "path to data files", default="/tmp") plugin.add_cmdlineoption("-b", "", "basefilename", "base of sensor file name", default="sensor_") plugin.add_cmdlineoption("-w", "", "tempwarn", "warning thresold for temperature sensors", default=None) plugin.add_cmdlineoption("-c", "", "tempcrit", "critical thresold for temperature sensors", default=None) plugin.add_cmdlineoption("-W", "", "humwarn", "warning thresold for humidity sensors", default=None) plugin.add_cmdlineoption("-C", "", "humcrit", "critical thresold for humidity sensors", default=None) plugin.parse_cmdlineoptions() # No sensor id if not plugin.options.sensorid: plugin.back2nagios(3, "Need at least one sensor id!") # Make list of sensor ids if "," in plugin.options.sensorid: plugin.options.sensorid = plugin.options.sensorid.split(",") else: plugin.options.sensorid = [plugin.options.sensorid] # Check all sensor ids are hex re_hex = re.compile("^[0-9A-Fa-f]+$") for sid in plugin.options.sensorid: if not re_hex.search(sid): plugin.back2nagios(3, 'Sensor id "%s" must be integer or hex!' % sid) plugin.verbose(1, "Sensor id(s): " + " - ".join([str(s) for s in plugin.options.sensorid]))
plugin.add_cmdlineoption('-w', '', 'warn', 'warning thresold', default='') plugin.add_cmdlineoption('-c', '', 'crit', 'warning thresold', default='') plugin.parse_cmdlineoptions() if not plugin.options.nagiostats: plugin.verbose(2, 'Auto-detecting path to "nagiostats"...') for nagiostats in NAGIOSTATSs: if os.path.exists(nagiostats): plugin.options.nagiostats = nagiostats plugin.verbose(2, 'Found it at "%s"' % nagiostats) break if not os.path.exists(plugin.options.nagiostats): plugin.back2nagios(3, 'Could not find "nagiostats"') if not plugin.options.checks and not plugin.options.vars: plugin.back2nagios(3, 'Need either "-C" or "-V"') # Checks and Variables varlist = [] varlist_unknown = [] # Built var list out of -C if plugin.options.checks: for check in plugin.options.checks.split(','): if check not in CHECKs: plugin.back2nagios(3, 'Unknown check "%s"' % check) varlist.extend(CHECKs[check])
plugin = MonitoringPlugin(pluginname='check_apaches', tagforstatusline='APACHE', description='Check Apache workers', version='0.1') plugin.add_cmdlineoption('-H', '', 'host', 'Hostname/IP to check', default='localhost') plugin.add_cmdlineoption('-p', '', 'port', 'port to connect', default=None) plugin.add_cmdlineoption('-P', '', 'proto', 'protocol to use', default='http') plugin.add_cmdlineoption('-u', '', 'url', 'path to "server-status"', default='/server-status') plugin.add_cmdlineoption('-a', '', 'httpauth', 'HTTP Username and Password, separated by ":"') plugin.add_cmdlineoption('-w', '', 'warn', 'warning thresold', default='20') plugin.add_cmdlineoption('-c', '', 'crit', 'warning thresold', default='50') plugin.add_cmdlineoption('', '--statistics', 'statistics', 'Output worker statistics', action='store_true') plugin.parse_cmdlineoptions() if plugin.options.proto not in ['http', 'https']: plugin.back2nagios(3, 'Unknown protocol "' + plugin.options.proto + '"') if not plugin.options.port: if plugin.options.proto == 'https': plugin.options.port = '443' else: plugin.options.port = '80' url = plugin.options.proto + '://' + plugin.options.host + ':' + plugin.options.port + '/' + plugin.options.url + '?auto' plugin.verbose(1, 'Status URL: ' + url) if plugin.options.httpauth: httpauth = plugin.options.httpauth.split(':') if len(httpauth) != 2: plugin.back2nagios(3, 'Wrong format of authentication data! Need "USERNAME:PASSWORD", got "' + plugin.options.httpauth + '"') passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
plugin = MonitoringPlugin(pluginname='check_netconnections', tagforstatusline='NETCONNS', description='Count network connections', version='0.1') plugin.add_cmdlineoption('-p', '', 'port', 'port number', default=None) plugin.add_cmdlineoption('-t', '--tcp', 'tcp', 'count TCP connections (default)', action='store_true') plugin.add_cmdlineoption('-u', '--udp', 'udp', 'count TCP connections', action='store_true') plugin.add_cmdlineoption('-4', '', 'v4', 'count IPv4 connections (default)', action='store_true') plugin.add_cmdlineoption('-6', '', 'v6', 'count IPv6 connections (default)', action='store_true') plugin.add_cmdlineoption('-w', '', 'warn', 'warning thresold', default='20') plugin.add_cmdlineoption('-c', '', 'crit', 'warning thresold', default='50') plugin.parse_cmdlineoptions() # Need a port number if not plugin.options.port: plugin.back2nagios(3, 'No port number specified!') else: plugin.options.port = int(plugin.options.port) # Settings defaults if not plugin.options.udp and not plugin.options.tcp: plugin.options.tcp = True if not plugin.options.v4 and not plugin.options.v6: plugin.options.v4 = True plugin.options.v6 = True # RegExp v4match = re.compile('^\s*\d*:\s*([0-9A-Fa-f]{8}):([0-9A-Fa-f]{4})\s+([0-9A-Fa-f]{8}):([0-9A-Fa-f]{4})')
#if not plugin.options.v4 and not plugin.options.v6: # plugin.options.v4 = True # #if plugin.options.v4: # plugin.verbose(1, 'Using IPv4') # #if plugin.options.v6: # plugin.verbose(1, 'Using IPv6') # Get IP from interface try: ip_iface = get_ipv4_address(plugin.options.iface) except IOError, (errno, strerror): if errno == 19: plugin.back2nagios(2, 'Interface "%s" does not exist!' % plugin.options.iface) elif errno == 99: plugin.back2nagios(2, 'Interface "%s" has no IP!' % plugin.options.iface) plugin.back2nagios(2, 'I/O error(%s): %s, interface "%s"' % (errno, strerror, plugin.options.iface)) plugin.verbose(1, 'Found IP "%s" on interface "%s"' % (ip_iface, plugin.options.iface)) # Get IP(s) from DNS if not ',' in plugin.options.dns: # Only one DNS object try: ip_dns = socket.gethostbyname(plugin.options.dns) except socket.gaierror: ip_dns = None plugin.back2nagios(1, 'Could not find "%s" in DNS!' % plugin.options.dns)