主な出力結果表示要求

主な出力結果表示要求

正常に動作するチェックスクリプトがありますが、重要なディスクが出力に表示されるように修正したいと思います。

echo -e "

################################################################
#             SERVER HELATH SCRIPT                             #
################################################################
#
# PROGRAM:      Server Helth
# DATE   :      24-Jan-2017
# # DESCRIPTION:  Script to Check CPU,Memory and Disk Usage
#
# Modified      Date
# By:           Modified:          Description:
#----------------------------------------------------------------
#
#################################################################
"

#!/bin/sh
[email protected]

sysstat ()
 {
echo -e "
#####################################################################
    Health Check Report (CPU,Process,Disk Usage, Memory)
#####################################################################


Hostname         : `hostname`
Kernel Version   : `uname -r`
Uptime           : `uptime | sed 's/.*up \([^,]*\), .*/\1/'`
Last Reboot Time : `who -b | awk '{print $3,$4}'`



*********************************************************************
CPU Load - > Threshold < 1 Normal > 1 Caution , > 2 Warning 
*********************************************************************
"
MPSTAT=`which mpstat`
MPSTAT=$?
if [ $MPSTAT != 0 ]
then
        #echo "Please install mpstat!"
        #echo "On Debian based systems:"
        #echo "sudo apt-get install sysstat"
        #echo "On RHEL based systems:"
        #echo "yum install sysstat"
else
echo -e ""
LSCPU=`which lscpu`
LSCPU=$?
if [ $LSCPU != 0 ]
then
        RESULT=$RESULT" lscpu required to producre acqurate reults"
else
cpus=`lscpu | grep -e "^CPU(s):" | cut -f2 -d: | awk '{print $1}'`
i=0
while [ $i -lt $cpus ]
do
        echo "CPU$i : `mpstat -P ALL | awk -v var=$i '{ if ($3 == var ) print $4 }' `"
        let i=$i+1
done
fi
echo -e "
Load Average   : `uptime | awk -F'load average:' '{ print $2 }' | cut -f1 -d,`

Heath Status : `uptime | awk -F'load average:' '{ print $2 }' | cut -f1 -d, | awk '{if ($1 > 2) print "Unhealthy"; else if ($1 > 1) print "Caution"; else print "Normal"}'`
"
fi


echo -e "
*********************************************************************
                             Process
*********************************************************************

=> Top memory using processs/application

PID %MEM RSS COMMAND
`ps aux | awk '{print $2, $4, $6, $11}' | sort -k3rn | head -n 10`

=> Top CPU using process/application
`top b -n1 | head -17 | tail -11`
"

#*************************************************************#********
#Disk Usage - > Threshold < 90 Normal > 90% Caution > 95 #Warning
#*************************************************************#********
#"
#df -Pkh | grep -v 'Filesystem' > /tmp/df.status
#while read DISK
#do
#        LINE=`echo $DISK | awk '{print $1,"\t",$6,"\t",$5," #used","\t",$4," free space"}'`
#        echo -e $LINE
#        echo
#done < /tmp/df.status
echo -e "

Heath Status"
echo
while read DISK
do
        USAGE=`echo $DISK | awk '{print $5}' | cut -f1 -d%`
        if [ $USAGE -ge 90 ]
        then
                STATUS='Critical'
        elif [ $USAGE -ge 85 ]
        then
                STATUS='Caution'

 fi

        LINE=`echo $DISK | awk '{print $1,"\t",$6}'`
        echo -ne $LINE "\t\t" $STATUS
        echo
done < /tmp/df.status
rm /tmp/df.status
TOTALMEM=`free -m | head -2 | tail -1| awk '{print $2}'`
TOTALBC=`echo "scale=2;if($TOTALMEM<1024 && $TOTALMEM > 0) print 0;$TOTALMEM/1024"| bc -l`
USEDMEM=`free -m | head -2 | tail -1| awk '{print $3}'`
USEDBC=`echo "scale=2;if($USEDMEM<1024 && $USEDMEM > 0) print 0;$USEDMEM/1024"|bc -l`
FREEMEM=`free -m | head -2 | tail -1| awk '{print $4}'`
FREEBC=`echo "scale=2;if($FREEMEM<1024 && $FREEMEM > 0) print 0;$FREEMEM/1024"|bc -l`
TOTALSWAP=`free -m | tail -1| awk '{print $2}'`
TOTALSBC=`echo "scale=2;if($TOTALSWAP<1024 && $TOTALSWAP > 0) print 0;$TOTALSWAP/1024"| bc -l`
USEDSWAP=`free -m | tail -1| awk '{print $3}'`
USEDSBC=`echo "scale=2;if($USEDSWAP<1024 && $USEDSWAP > 0) print 0;$USEDSWAP/1024"|bc -l`
FREESWAP=`free -m |  tail -1| awk '{print $4}'`
FREESBC=`echo "scale=2;if($FREESWAP<1024 && $FREESWAP > 0) print 0;$FREESWAP/1024"|bc -l`

echo -e "
*********************************************************************
                     Memory
*********************************************************************

=> Physical Memory

Total\tUsed\tFree\t%Free

${TOTALBC}GB\t${USEDBC}GB \t${FREEBC}GB\t$(($FREEMEM * 100 / $TOTALMEM  ))%

=> Swap Memory

Total\tUsed\tFree\t%Free

${TOTALSBC}GB\t${USEDSBC}GB\t${FREESBC}GB\t$(($FREESWAP * 100 / $TOTALSWAP  ))%
"
}

# Invoke your function
#sysstat

FILENAME="health-`hostname`-`date +%y%m%d`-`date +%H%M`.txt"
sysstat > /monitor/$FILENAME

echo -e "Reported file $FILENAME generated in current directory." $RESULT
if [ "$EMAIL" != '' ]
then
        STATUS=`which mail`
        if [ "$?" != 0 ]
        then
                echo "The program 'mail' is currently not installed."
        else
                cat $FILENAME | mail -s "/monitor/$FILENAME" $EMAIL
        fi
fi

電流出力

[root@connect areddy]# sh diskusage
/dev/mapper/centos-root / 38% used 92G free space

devtmpfs /dev 0% used 3.8G free space

tmpfs /dev/shm 2% used 3.7G free space

tmpfs /run 1% used 3.8G free space

tmpfs /sys/fs/cgroup 0% used 3.8G free space

/dev/sda1 /boot 95% used 138M free space

tmpfs /run/user/1000 1% used 764M free space



Heath Status

/dev/mapper/centos-root /        Normal
devtmpfs /dev        Normal
tmpfs /dev/shm       Normal
tmpfs /run       Normal
tmpfs /sys/fs/cgroup         Normal
/dev/sda1 /boot          Critical
tmpfs /run/user/1000         Normal

希望の出力

[root@connect areddy]# sh diskusage

/dev/sda1 /boot 95% used 138M free space

Heath Status

/dev/sda1 /boot          Critical

答え1

これに合わせてディスク使用量セクションを修正してください。

    #*************************************************************#********
    #Disk Usage - > Threshold < 90 Normal > 90% Caution > 95 #Warning
    #*************************************************************#********
    #"
    #df -Pkh | grep -v 'Filesystem' > /tmp/df.status
    #while read DISK
    #do
    #        LINE=`echo $DISK | awk '{print $1,"\t",$6,"\t",$5," #used","\t",$4," free space"}'`
    #        echo -e $LINE
    #        echo
    #done < /tmp/df.status
    echo -e "

    Heath Status"
    echo
    while read DISK
    do
            USAGE=`echo $DISK | awk '{print $5}' | cut -f1 -d%`
            if [ $USAGE -ge 90 ]
            then
                    STATUS='Critical'
            elif [ $USAGE -ge 85 ]
            then
                    STATUS='Caution'
                    LINE=`echo $DISK | awk '{print $1,"\t",$6}'`
                    echo -ne $LINE "\t\t" $STATUS
                    echo
            fi

    done < /tmp/df.status 
    rm /tmp/df.status

関連情報