diff --git a/check_ceph_io b/check_ceph_io index f698704fd9a2d024e03414e13f0b16ffe17e4b6a..e5b65a88ea9da87904851ad027d8d97307eb6d50 100755 --- a/check_ceph_io +++ b/check_ceph_io @@ -17,12 +17,13 @@ # 2023-05-09 v1.0 <axel.hahn@unibe.ch> # 2023-05-10 v1.1 <axel.hahn@unibe.ch> fix for small transfer rates in B/s # 2023-05-10 v1.2 <axel.hahn@unibe.ch> add tests +# 2023-05-11 v1.3 <axel.hahn@unibe.ch> handle ceph status without io data in output # ====================================================================== . $(dirname $0)/inc_pluginfunctions self_APPNAME=$( basename $0 | tr [:lower:] [:upper:] ) -self_APPVERSION=1.2 +self_APPVERSION=1.3 function showHelp(){ _self=$(basename $0) @@ -75,6 +76,7 @@ if [ "$1" = "-t" ]; then # TEST: client: 8.9 KiB/s rd, 887 KiB/s wr, 138 op/s rd, 140 op/s wr # TEST: client: 255 B/s rd, 85 B/s wr, 0 op/s rd, 0 op/s # TEST: client: 255 B/s rd, 0 op/s rd, 0 op/s wr + # TEST: no line with client if [ -z "$2" ]; then echo; echo ">>>>>>>>>> TESTS"; echo grep '# TEST: ' $0 | grep -v grep | cut -f 2- -d ':' | while read -r teststring @@ -90,16 +92,20 @@ if [ "$1" = "-t" ]; then else # --- check required tools ph.require ceph - CEPHIO=$( sudo ceph status 2>/dev/null | grep "client:") -fi - -if [ -z "${CEPHIO}" ]; then + # --- get output of ceph + if ! CEPHOUT=$( sudo ceph status 2>&1 ); then ph.setStatus "unknown" ph.status "no data" echo "There is no output from 'sudo ceph status'." echo "No ceph here or no sudo permissions on ceph command?" -else + echo "$CEPHOUT" + fi + CEPHIO=$( echo "$CEPHOUT" | grep "client:") +fi + + +if [ -n "${CEPHOUT}${CEPHIO}" ]; then CEPHDATA=$( echo "${CEPHIO}" | cut -f 2 -d ':' ) SEG_R=$( echo "${CEPHDATA}" | cut -f 1 -d "," | grep "rd" | awk '{ print $1 " " $2 }') @@ -111,6 +117,7 @@ else IO_READ=$( echo "${SEG_R}" | sed -E "s#([0-9]*) (.).(.).*#\1\2\3#g" | tr -d 's') IO_WRITE=$( echo "${SEG_W}" | sed -E "s#([0-9]*) (.).(.).*#\1\2\3#g" | tr -d 's') + test -z "$CEPHIO" && CEPHIO="'ceph status' successful - but there are no io data in output." test -z "$IO_READ" && IO_READ="0" test -z "$IO_WRITE" && IO_WRITE="0" ph.status "$( echo "${CEPHIO}" | cut -f 2 -d ":" )" diff --git a/docs/20_Checks/check_ceph_io.md b/docs/20_Checks/check_ceph_io.md index 162ea29773f5307296f606d7fa8ff257eee2e3ad..f406e88150418cf87c1ac6e2fd623823f34da697 100644 --- a/docs/20_Checks/check_ceph_io.md +++ b/docs/20_Checks/check_ceph_io.md @@ -15,7 +15,7 @@ It returns a single line for the status and performance data. ______________________________________________________________________ CHECK_CEPH_IO -v1.2 +v1.3 (c) Institute for Medical Education - University of Bern Licence: GNU GPL 3