#!/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 # ----------------------------------------------------------------------