#!/usr/bin/env python# nagios plugin to check response time of the rtapi "ping" function# Edelberto Mania <ed@zenoradio.com># 20160125## endpoint being monitoredendpoint_title="MySQL Data Query (via RTAPI)"endpoint="http://127.0.0.1:9000/api/DataGateway/list?data={%22did%22:%20%2216055625309%22}"#endpoint="https://rtapi.zenoradio.com/api/DataGateway/list?data={%22did%22:%20%2216055625309%22}"#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 sentnumber_of_queries=1## threshold (response time) to generate alertwarning_threshold=1critical_threshold=2ok=0warning=1critical=2importos,sys,requestsfromtimeitimporttimeitimportos,sys,requestsfromtimeitimporttimeit## 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()defping():try:p=requests.get(endpoint)except:return(critical,'endpoint is down')try:d=p.json()except:d=p.textifp.status_code!=requests.codes.ok:return(critical,'returns non-200 HTTP status code')return(ok,d)defreturn_status(elapsed):ifelapsed>=critical_threshold:returncriticalifelapsed>=warning_threshold:returnwarningreturnokif__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)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.