diff --git a/check_couchdb b/check_couchdb new file mode 100755 index 0000000000000000000000000000000000000000..a829276e85a505cb90f60daa6930cb86a5003766 --- /dev/null +++ b/check_couchdb @@ -0,0 +1,93 @@ +#!/bin/bash +# ====================================================================== +# +# Icinga/ Nagios Check +# COUCHDB +# +# ---------------------------------------------------------------------- +# +# REQUIREMENTS: +# - curl +# +# SYNTAX: +# - check_couchdb [-h] [-t FILE] -m MODE +# +# ---------------------------------------------------------------------- +# 2023-08-28 v0.1 <axel.hahn@unibe.ch> +# ====================================================================== + +. $(dirname $0)/inc_pluginfunctions + +export self_APPVERSION=0.1 + +function showHelp(){ + local _self; _self=$(basename $0) + cat <<EOF +$( ph.showImlHelpHeader ) + +Show couchdb status. + +SYNTAX: +$_self [-h] [-t FILE] -m MODE + +OPTIONS: + -h or --help show this help. + -m MODE test a value; for debugging purposes + -t FILE take couchdb auth from Telegraph config + add file like /etc/telegraf/telegraf.conf + +EXAMPLE: +$_self -m up + Check if couchdb is up and running + +EOF +} + +# --- check param -h +case "$1" in + "--help"|"-h") + showHelp + exit 0 + ;; + *) +esac + +sTelegraph=$(ph.getValueWithParam "" "t" "$@") +sMode=$(ph.getValueWithParam '' "m" "$@") + +if [ -n "$sTelegraph" ]; then + if [ ! -r "${sTelegraph}" ]; then + echo "ERROR: Telegraph config file [${sTelegraph}] cannot be read." + showHelp + ph.abort + fi + _user=$( grep "basic_username = " "${sTelegraph}" | cut -f 2 -d '"' ) + _pw=$( grep "basic_password = " "${sTelegraph}" | cut -f 2 -d '"' ) + export COUCH_URL=http://${_user}:${_pw}@localhost:5984 +fi + +if [ -z "$COUCH_URL" ]; then + echo "ERROR: I have no couchdb url + autentication yet." + echo "Maybe you need to add -t /etc/telegraf/telegraf.conf." + ph.abort +fi + +case "${sMode}" in + "up") + response=$( curl -s "${COUCH_URL}/_up" ) + _status=$( jq '.status' <<< "${response}" | tr -d '"') + if ! echo "$_status" | grep "ok" >/dev/null; then + ph.setStatus critical + fi + ph.status "Couchdb status (value in /_up is '$_status')" + echo "Reponse: "; echo "${response}" | jq + _status=$( jq '.status' <<< "${response}" | tr -d '"') + ;; + *) + echo "ERRROR: [${sMode}] is an INVALID mode" + showHelp + ph.abort + +esac + +ph.exit