#!/bin/bash ######################################################## # Author: Brian T. Hunter # Date: 9/1/2023 # Script: bb-iostat.sh ######################################################## # 1. YOU Need to install iostat on Linux by: # sudo apt install sysstat # # 2. ADD to the bottom of file /etc/xymon/tasks.cfg # # [iostat] # ENVFILE $XYMONCLIENTHOME/etc/xymonclient.cfg # CMD $XMONCLIENTHOME/ext/bb-iostat.sh # LOGFILE $XYMONCLIENTLOGS/bb-iostat.log # INTERVAL 5m # # 3. I ADDED to TEST2RRD variable in /etc/xymon/xymonservers.cfg # iostat=ncv # # 4. I ADDED to GRAPHS variable in /etc/xymon/xymonservers.cfg # iostat::100 # # 5. I ADDED to BOTTOM in /etc/xymon/xymonservers.cfg # SPLINTNCV_iostat="*:GUAGE" # # 6. ADD [iostat] to /etc/xymon/graphs.cfg and COMMENT EXISTING [iostat] OUT ! # # [iostat] # FNPATTERN ^iostat,(.*).rrd # TITLE I/O Utilization # YAXIS Stats # DEF:***@RRDIDX@=@RRDFN@:lambda:AVERAGE # LINE2:***@RRDIDX@#@COLOR@:@RRDPARAM@ # GPRINT:***@RRDIDX@:LAST: \: %8.1lf (cur) # GPRINT:***@RRDIDX@:MAX: \: %8.1lf (max) # GPRINT:***@RRDIDX@:MIN: \: %8.1lf (min) # GPRINT:***@RRDIDX@:AVERAGE: \: %8.1lf (avg)\n # 7. THEN RESTART XYMON: sudo systemctl restart xymon # # NOTES: # iostat -N 300 2 ######################################################## COLUMN=iostat COLOR=green MACHINE=`hostname` MSG="IOSTAT DISK PERFORMANCE CHECK" LOGFILE=/tmp/$MACHINE.$COLUMN.out OUTPUT=/tmp/$MACHINE.$COLUMN.output MOUNT="/bin/mount" AWK="/usr/bin/awk" GREP="/bin/grep" SORT="/usr/bin/sort" SED="/bin/sed" RM="/bin/rm" /usr/bin/iostat -N 10 2 | tail -10 > $LOGFILE # /usr/bin/iostat -N 10 1 > $LOGFILE for device in `$MOUNT | $AWK '{print $1}' | $GREP "\/dev" | $SORT -u | $AWK -F/ '{print $3}'` do DEVICE=`$GREP $device $LOGFILE | $SED 's/ */:/g'` MYDEV=`echo $DEVICE | $AWK -F: '{print $1}'` TPS=`echo $DEVICE | $AWK -F: '{print $2}'` READPERSEC=`echo $DEVICE | $AWK -F: '{print $3}'` WRITEPERSEC=`echo $DEVICE | $AWK -F: '{print $4}'` DSCDPERSEC=`echo $DEVICE | $AWK -F: '{print $5}'` READ=`echo $DEVICE | $AWK -F: '{print $6}'` WRITE=`echo $DEVICE | $AWK -F: '{print $7}'` DSCD=`echo $DEVICE | $AWK -F: '{print $8}'` printf " ${MYDEV}_TPS:$TPS ${MYDEV}_READPERSEC:$READPERSEC ${MYDEV}_WRITEPERSEC:$WRITEPERSEC ${MYDEV}_DSCDPERSEC:$DSCDPERSEC ${MYDEV}_READ:$READ ${MYDEV}_WRITE:$WRITE ${MYDEV}_DSCD:$DSCD " >> $OUTPUT done MESSAGE="IOSTAT DISK PERFORMANCE CHECK" MSG="${MESSAGE} `cat $OUTPUT` " $XYMON $XYMSRV "status $MACHINE.$COLUMN $COLOR `date` ${MSG} " $RM $OUTPUT exit 0