-
Hahn Axel (hahn) authoredHahn Axel (hahn) authored
check_opencpu 3.65 KiB
#!/bin/bash
# ======================================================================
#
# NAGIOS CLIENT CHECK :: test if opencpu is available
#
# REQUIREMENTS
# - wget
#
# It returns
# - OK if http request was successful
# - CRITICAL if http request fails
# - unknown if wget is not available
#
# ----------------------------------------------------------------------
#
# ah=axel.hahn@iml.unibe.ch
# ds=daniel.schueler@iml.unibe.ch
#
# 2019-05-10 v1.0 ah,ds
# 2019-05-22 v1.1 show built date
# 2020-03-05 v1.2 <axel.hahn@iml.unibe.ch> switch to ph.* helper functions
# 2022-04-01 v1.3 <axel.hahn@iml.unibe.ch> use wget default params; shell fixes
# 2023-08-23 v1.4 <axel.hahn@unibe.ch> add help; add param -p; fix critical status
# ======================================================================
. $(dirname $0)/inc_pluginfunctions
self_APPVERSION=1.4
tmpOk=/tmp/check_opencpu-ok
tmpErr=/tmp/check_opencpu-error
ocpuUrl=http://localhost/ocpu
packagesDefault="eosceGLM eosceLinReg eosceReliability eosceReporter msrdAnalytics"
paramsWget="-T 5 -t 1 --no-check-certificate"
# ^ ^
# | tries = 1
# timeout in seconds
# ----------------------------------------------------------------------
# FUNCTIONS
# ----------------------------------------------------------------------
# show help text
function showHelp(){
local _self; _self=$(basename $0)
cat <<EOF
$( ph.showImlHelpHeader )
Test if opencpu is available.
It returns OK if
- opencpu is running on $ocpuUrl
- all packages are installed:
$packagesDefault
SYNTAX:
$_self [-h] [-p PKG]
OPTIONS:
-h or --help show this help and exit.
PARAMETERS:
-p PKG(s) define package to test; for multiple packages quote
it and delimit them with space.
EXAMPLES:
$_self -p "myPackage1 myPackage2 anotherPackage"
Check given opencpu packages
$_self -p ""
Check Opencpu only (without packages)
EOF
}
# check if a givem packe is installed
# param string name of the package
function checkOpenCpuPackage(){
package=$1
pkgUrl=$ocpuUrl/library/$package/info
tmpfile=/tmp/check_opencpu-$package
wget $paramsWget -O $tmpfile $pkgUrl 2>/dev/null
if [ $? -ne 0 ]; then
echo "ERROR: package is NOT available [$package]" >>$tmpErr
else
echo "OK: package is available [$mypackage] .. Build: $(cat $tmpfile | grep "^Built" | cut -c 21-)" >>$tmpOk
fi
rm -f $tmpfile 2>/dev/null
}
# ----------------------------------------------------------------------
# MAIN
# ----------------------------------------------------------------------
# --- check param -h
case "$1" in
"--help"|"-h")
showHelp
exit 0
;;
*)
esac
packages=$( ph.getValueWithParam "$packagesDefault" "p" "$@" | sort )
rm -f $tmpOk 2>/dev/null
echo -n "OpenCpu: "
# ----- check if WGET exists
ph.require wget
# ----- check if openCpu is running
wget $paramsWget -O /dev/null $ocpuUrl 2>/dev/null
if [ $? -ne 0 ]; then
echo "ERROR: unable to connect to openCpu with $ocpuUrl"
echo
echo "I repeat the http request to show some more debug infos:"
wget $paramsWget -O /dev/null -S $ocpuUrl
ph.setStatus "critical"
ph.exit
fi
echo "OK: openCpu is running and reachable with http" >>$tmpOk
# ----- check custom modules
for mypackage in $packages
do
checkOpenCpuPackage $mypackage
done
# ----- result
ph.setStatus "ok"
if [ -f $tmpErr ]; then
echo "ERROR: openCpu is available but not all packages"
cat $tmpErr && rm -f $tmpErr
echo
ph.setStatus "critical"
else
echo "OK"
fi
cat $tmpOk 2>/dev/null && rm -f $tmpOk
ph.exit
# ----------------------------------------------------------------------