From 5d865639781359fce776e71a791a1b93ce7fa7f5 Mon Sep 17 00:00:00 2001
From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch>
Date: Fri, 15 Sep 2023 09:22:54 +0200
Subject: [PATCH] add detection for disabled hosts; update texts

---
 check_onehost                   | 32 ++++++++++++++++++--------------
 docs/20_Checks/check_onehost.md | 31 ++++++++++++++++---------------
 2 files changed, 34 insertions(+), 29 deletions(-)

diff --git a/check_onehost b/check_onehost
index 8726718..dff24d2 100755
--- a/check_onehost
+++ b/check_onehost
@@ -10,12 +10,13 @@
 # 2023-06-09  v1.0  <axel.hahn@unibe.ch>  initial version
 # 2023-06-12  v1.1  <axel.hahn@unibe.ch>  show message if no sudo permissions on onehost command exist
 # 2023-08-23  v1.2  <axel.hahn@unibe.ch>  update help; show help without requirements
+# 2023-09-15  v1.3  <axel.hahn@unibe.ch>  add detection for disabled hosts; update texts
 # ======================================================================
 
 
 . $(dirname $0)/inc_pluginfunctions
 
-self_APPVERSION=1.2
+self_APPVERSION=1.3
 
 # ----------------------------------------------------------------------
 # functions
@@ -26,13 +27,14 @@ function showHelp(){
 cat <<EOF
 $( ph.showImlHelpHeader )
 
-Show count of hosts in OpenNebula and warn if a host is down.
+Show count of hosts in OpenNebula and warn if a host is disabled or on error.
+It switches to critical if more than a given critical level are not running.
 
 SYNTAX:
 $_self [ -w value -c value -h ]
 
-    -w VALUE       cpu usage warning level  (default: 1)
-    -c VALUE       cpu usage critical level (default: 2)
+    -w VALUE       warning level  (default: 1)
+    -c VALUE       critical level (default: 2)
     -h or --help   show this help.
 
 PARAMETERS:
@@ -83,22 +85,24 @@ csvdata=$( echo "$cmdout" | sed -n '2,$p' )
 out=""
 typeset -i iTotal; iTotal=$( echo "$csvdata" | wc -l )
 typeset -i iOn;    iOn=$(    echo "$csvdata" | grep -c "on$" )
-typeset -i iOther; iOther=$iTotal-$iOn
+typeset -i iDis;   iDis=$(   echo "$csvdata" | grep -c "dsbl$" )
+typeset -i iNotOn; iNotOn=$iTotal-$iOn
+typeset -i iOther; iOther=$iTotal-$iOn-$iDis
 
-ph.perfadd "total"   "${iTotal}"
-ph.perfadd "on"      "${iOn}"
-ph.perfadd "other"   "${iOther}"
+ph.perfadd "total"     "${iTotal}"
+ph.perfadd "on"        "${iOn}"
+ph.perfadd "disabled"  "${iDis}"
+ph.perfadd "other"     "${iOther}"
 
-
-if [ $iOther -ge $iCriticalLimit ]; then
-        out="ERROR: not all hosts are up - count $iOther reached critical value $iCriticalLimit"
+if [ $iNotOn -ge $iCriticalLimit ]; then
+        out="ERROR: not all hosts are up - count $iNotOn reached critical value $iCriticalLimit"
         ph.setStatus "critical"
-elif [ $iOther -ge $iWarnLimit ]; then
-        out="ERROR: not all hosts are up - count $iOther reached critical value $iWarnLimit"
+elif [ $iNotOn -ge $iWarnLimit ]; then
+        out="WARNING: not all hosts are up - count $iNotOn reached warning value $iWarnLimit"
         ph.setStatus "warning"        
 fi
 
-ph.status "ONEHOST - Total: $iTotal .. on: $iOn .. other: $iOther"
+ph.status "ONEHOST - Total: $iTotal .. on: $iOn .. disabled: $iDis ... other: $iOther"
 echo "$cmdout"
 echo "$out"
 ph.exit
diff --git a/docs/20_Checks/check_onehost.md b/docs/20_Checks/check_onehost.md
index e5c5e6d..bfb34e9 100644
--- a/docs/20_Checks/check_onehost.md
+++ b/docs/20_Checks/check_onehost.md
@@ -23,7 +23,7 @@ icingaclient ALL=(ALL) NOPASSWD: /bin/onehost
 ______________________________________________________________________
 
 CHECK_ONEHOST
-v1.1
+v1.3
 
 (c) Institute for Medical Education - University of Bern
 Licence: GNU GPL 3
@@ -31,13 +31,14 @@ Licence: GNU GPL 3
 https://os-docs.iml.unibe.ch/icinga-checks/Checks/check_onehost.html
 ______________________________________________________________________
 
-show count of hosts in OpenNebula and warn if a host is down.
+Show count of hosts in OpenNebula and warn if a host is disabled or on error.
+It switches to critical if more than a given critical level are not running.
 
 SYNTAX:
 check_onehost [ -w value -c value -h ]
 
-    -w VALUE       cpu usage warning level  (default: 1)
-    -c VALUE       cpu usage critical level (default: 2)
+    -w VALUE       warning level  (default: 1)
+    -c VALUE       critical level (default: 2)
     -h or --help   show this help.
 
 PARAMETERS:
@@ -51,17 +52,17 @@ check_onehost -c 1   set to critical if the 1st host is off.
 
 ## Example
 
-Without parameter
+Without parameter we get a warning if the 1st host is disabled or on error.
+``./check_onehost`` returns
 
 ```txt
-/check_onehost 
-OK: ONEHOST - Total: 5 .. on: 5 .. other: 0
+WARNING: ONEHOST - Total: 5 .. on: 4 .. disabled: 1 ... other: 0
 ID,NAME,CLUSTER,TVM,ALLOCATED_CPU,ALLOCATED_MEM,STAT
-4,kvm5.backend.one.intra,default,5,600 / 2400 (25%),13G / 503.1G (2%),on
-3,kvm4.backend.one.intra,default,5,1100 / 2400 (45%),22G / 503.1G (4%),on
-2,kvm3.backend.one.intra,default,8,1150 / 2400 (47%),20G / 251.1G (7%),on
-1,kvm2.backend.one.intra,default,6,1000 / 2400 (41%),12G / 188.1G (6%),on
-0,kvm1.backend.one.intra,default,8,1350 / 2400 (56%),18.5G / 188.1G (9%),on
-
- |total=5;; on=5;; other=0;; 
-```
\ No newline at end of file
+4,kvm5.example.com,default,11,1930 / 2400 (80%),76G / 503.1G (15%),dsbl
+3,kvm4.example.com,default,2,400 / 2400 (16%),5G / 503.1G (0%),on
+2,kvm3.example.com,default,9,1600 / 2400 (66%),55G / 251.1G (21%),on
+1,kvm2.example.com,default,14,1770 / 2400 (73%),71.5G / 188.1G (38%),on
+0,kvm1.example.com,default,16,2380 / 2400 (99%),75G / 188.1G (39%),on
+WARNING: not all hosts are up - count 1 reached warning value 1
+ |total=5;; on=4;; disabled=1;; other=0;;
+ ```
-- 
GitLab