diff --git a/check_ceph_osd b/check_ceph_osd index 3a71a65bc5a4022a52feaa29046f9bf9294b27cc..aacd9317de67dfd3a12fddfef57a9c0eb06d1a49 100755 --- a/check_ceph_osd +++ b/check_ceph_osd @@ -7,7 +7,7 @@ # ---------------------------------------------------------------------- # # REQUIREMENTS: -# - ceph +# - sudo permissions on ceph command # # SYNTAX: # - check_ceph_status -w [count for warnming] -w [count for critical] @@ -25,28 +25,77 @@ # 2020-03-05 v1.2 <axel.hahn@iml.unibe.ch> switch to ph.* helper functions # 2022-10-21 v1.3 <axel.hahn@unibe.ch> remove grep: warning: stray \ before white space # 2023-04-24 v1.4 <axel.hahn@unibe.ch> update for newer ceph versions +# 2023-06-19 v1.5 <axel.hahn@unibe.ch> add help and param support; no more tmpfile # ====================================================================== . $(dirname $0)/inc_pluginfunctions -tmpfile=/tmp/ceph_status_output_$$ +self_APPNAME=$( basename $0 | tr [:lower:] [:upper:] ) +self_APPVERSION=1.5 + +# column number in output where to find the up/ down info iColUpDown=5 # ---------------------------------------------------------------------- # FUNCTIONS # ---------------------------------------------------------------------- +function showHelp(){ + _self=$(basename $0) +cat <<EOF +______________________________________________________________________ + +$self_APPNAME +v$self_APPVERSION + +(c) Institute for Medical Education - University of Bern +Licence: GNU GPL 3 +______________________________________________________________________ + +Show cheph osd status: how many OSDs exist and how many are up/ down. +This check sends performance data. + +On your cluster you might want to increase the values for warning and +critical level. + +SYNTAX: +$_self [-w WARN_LIMIT] [-c CRITICAL_LIMIT] + +OPTIONS: + -h or --help show this help. + -w VALUE warning level (default: 1) + -c VALUE critical level (default: 2) + +EXAMPLE: +$_self + no parameters; normal usage to get the ceph osd status + +$_self -c 10 + change to critical level if 10 osds are down. + +EOF +} + # fetch lines of OSD entries only from output of ceph osd tree +# global string data output of command ceph osd tree function getOsd(){ - grep "^ *[0-9]" $tmpfile + grep "^ *[0-9]" <<< "$data" } # ---------------------------------------------------------------------- # MAIN # ---------------------------------------------------------------------- -sudo /bin/ceph osd tree > $tmpfile 2>&1 +# --- check param -h +case "$1" in + "--help"|"-h") + showHelp + exit 0 + ;; + *) +esac + +data=$( sudo /bin/ceph osd tree 2>&1 ) if [ $? -ne 0 ]; then - rm -f $tmpfile ph.abort "UNKNOWN: ceph is not available or no sudo permissions to execute ceph commands." fi @@ -70,9 +119,7 @@ else fi ph.status "Check of available OSDs - $iOsdTotal OSDs total .. $iOsdUp up .. $iOsdDown down (Limits: warn at $iWarnLimit; critical $iCriticalLimit)" -cat $tmpfile - -rm -f $tmpfile +echo "$data" ph.perfadd "osd-total" "${iOsdTotal}" "" "" 0 ${iOsdTotal} ph.perfadd "osd-up" "${iOsdUp}" "" "" 0 ${iOsdTotal}