====== check_opsgenie_whoIsOnCall ====== This is a bash script to check who is listed as the on call person in Ops Genie ( [[https://www.opsgenie.com]] ). If you don't know what OpsGenie is, this check is probably useless to you. The OpsGenie API returns a json formatted output, this check uses ''[[linux:jq|jq]]'' to decode the json to text which can be processed. This is the check code, the command def is below:- #!/bin/bash # check_opsgenie_whoIsOnCall.sh # Written Andrew Stringer 12/10/2016 onwards # Purpose is to check who is the on-call bod as assigned through Ops Genie (https://www.opsgenie.com/) # It also gets the next schedule (Just in case required) # This relies on 'jq' to do the decoding of the json string returned by the API # You will need an API key from OpsGenie to pass to this check as $1 APIKEY=$1 OPSGENIEURL='https://api.opsgenie.com/v1.1/json/schedule/whoIsOnCall' ONCALL0=`curl -s "${OPSGENIEURL}?apiKey=${APIKEY}" | jq -r '.oncalls[0] .name + ":" + .oncalls[0] .participants[0] .name'` #ONCALLRET0=$? ONCALL1=`curl -s "${OPSGENIEURL}?apiKey=${APIKEY}" | jq -r '.oncalls[1] .name + ":" + .oncalls[1] .participants[0] .name'` ONCALLRET1=$? #daily_schedule:idavies@friendmts.com SCHEDULE0=`echo ${ONCALL0} | cut -d: -f1` BOD0=`echo ${ONCALL0} | cut -d: -f2` SCHEDULE1=`echo ${ONCALL1} | cut -d: -f1` BOD1=`echo ${ONCALL1} | cut -d: -f2` #just in case the second schedule is mot in use.... if [ -z "$SCHEDULE1" ]; then SCHEDULE1='Schedule not defined' BOD1='On Call is N/A' fi #This may be true if the API key is wrong, or maybe we haven't paid the bill?? if [ -z "$SCHEDULE0" ] && [ -z "$SCHEDULE1" ]; then echo "Somethings gone wrong." exit 3 fi #Start writing out status info echo "${SCHEDULE0}:- ${BOD0}, ${SCHEDULE1}:- ${BOD1}" exit 0 Command Def:- #Check who is on call from OpsGenie API define command { command_name WhoIsOnCall command_line /usr/lib/nagios/plugins/check_opsgenie_whoIsOnCall.sh '$ARG1$' } Example usage:- define service{ use generic-service host_name OpsGenie service_description OpsGenie WhoIsOnCall check_command WhoIsOnCall!YourAPIkeyGoesHere notification_options c }