Snippets

Edel SM nagios plugin for RTAPI API/Widget/Listen/and Broadcast site response time

Created by Edelberto Mania last modified
#!/usr/bin/env python
# nagios plugin to check response time of the rtapi "ping" function
# Edelberto Mania <ed@zenoradio.com>
# 20160125

## endpoint being monitored
endpoint_title="API Response Time"
endpoint="https://rtapi.zenoradio.com/api/Ping/read?data=1"
#endpoint_title="Broadcast Site Response Time"
#endpoint="https://broadcast.zenolive.com/"
#endpoint_title="Listener Site Response Time"
#endpoint="https://listen.zenolive.com/republik"
#endpoint_title="Widget Response Time"
#endpoint="https://prod-player-250.zenoradio.com/widget/type/default/?did=17001005764"

## number of queires to be sent
number_of_queries=1

## threshold (response time) to generate alert
warning_threshold=1
critical_threshold=2

ok=0
warning=1
critical=2

import os,sys,requests
from timeit import timeit

## on version python2, we sometimes encounter 'InsecurePlatformWarning'
## uncomment below to disable the warning
#if sys.version[0]=='2':
#	import requests.packages.urllib3
#	requests.packages.urllib3.disable_warnings()

def ping():
        try:p=requests.get(endpoint)
        except:return(critical,'endpoint is down')
        try:d=p.json()
        except:d=p.text
        if p.status_code!=requests.codes.ok:return(critical,'returns non-200 HTTP status code')
        return(ok,d)

def return_status(elapsed):
	if elapsed>=critical_threshold:return critical
	if elapsed>=warning_threshold:return warning
	return ok
	
if __name__=='__main__':
	elapsed_time_in_seconds=timeit("ping()",number=number_of_queries,setup="from __main__ import ping")
	print("{1}: {0:.2f} secs|response_time={0:.2f}".format(elapsed_time_in_seconds,endpoint_title))
	sys.exit(return_status(elapsed_time_in_seconds))


Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.