def main(url, timeout=30, redirect_unknown=True, debug=False):
"""Actual monitoring execution"""
logging.basicConfig(level=logging.WARNING)
logger = logging.getLogger(__name__)
if debug: # pragma: no cover
logger.setLevel(logging.DEBUG)
logger.info('debug logging enabled')
# Check if URL is valid
logger.debug('perform URL validation check')
if not valid_http_url(url):
nagios.plugin_exit(nagios.Codes.UNKNOWN, 'provided URL is not valid')
# Send a HEAD request
logger.debug('send HEAD request')
try:
response = requests.head(url, timeout=timeout)
except requests.ConnectTimeout:
nagios.plugin_exit(nagios.Codes.CRITICAL, 'connection timeout')
except requests.ReadTimeout:
nagios.plugin_exit(nagios.Codes.CRITICAL, 'no response received before'
'timeout')
except requests.ConnectionError:
nagios.plugin_exit(nagios.Codes.UNKNOWN, 'connection error')
else:
logger.debug('response received')
if response.status_code == requests.codes.ok:
# Response is OK
nagios.plugin_exit(nagios.Codes.OK,
'status code is %d' % response.status_code)
elif redirect_unknown and response.status_code == requests.codes.found:
# Redirect considered as UNKNOWN
nagios.plugin_exit(nagios.Codes.UNKNOWN,
'redirection with code %d' %
response.status_code)
else:
# Other code, considered not working
nagios.plugin_exit(nagios.Codes.CRITICAL,
'status code is %d' % response.status_code)
评论列表
文章目录