[hobbit] OSF physical memory, good reference

Anton Burkhalter anton.burkhalter at gmx.net
Sun Aug 7 10:24:35 CEST 2005


Henrik,

here is a script which produces the following output on Tru64 V5.1B

hobbit at hifpxx31 $ ./memory.sh
... ...  "status myhost,my,domaine.memory green Sun Aug  7 10:02:54 MEST 
2005 Memory OK
   Memory        Used    Total   Percentage
&green Physical     1951M    2048M          95%
&green Swap         1553M    8192M          18% "


--------------------------vvvvvvv--------------------------
#!/bin/ksh

################################################################################
#####  Environment settings
#####

## The following two values could be overwritten by 
$HCHOME/etc/common-def.sh
#

PERCENT_PHYS_WARN="100"         # go yellow at this level
PERCENT_PHYS_PANIC="101"        # go red and page at this level
PERCENT_SWAP_WARN="80"          # go yellow at this level
PERCENT_SWAP_PANIC="90"         # go red and page at this level

MyP1=$1

MyFCT=memory

ScriptName=`basename $0`; export ScriptName

HCHOME=/usr/local/hobbit/client
. $HCHOME/etc/common-def.sh


MEMDATA=$HCHOME/tmp/memdata.tmp.$$
SWAPDATA=$HCHOME/tmp/swapdata.tmp.$$


MyAGENT=`hostname | sed "s/\./,/g"`
MyAGENT=`echo ${MyAGENT}.${MyFCT}"`

### --



################################################################################
#####  Functions
#####

get_status()
{

COLOR="green"
STATUS="Memory OK"

/usr/bin/rm -f $MEMDATA
/usr/bin/rm -f $SWAPDATA

# initialize result values
PHYS_MEMORY=0
PHYS_MEMORY_USED=-1
SWAP_MEMORY=0
SWAP_MEMORY_USED=-1

/usr/bin/vmstat -P >$MEMDATA
/sbin/swapon -s >$SWAPDATA

PHYS_MEMORY=`cat $MEMDATA | grep "Total Physical Memory" | awk {'print 
$5'} | head -1 | cut -d. -f1`
PHYS_MEMORY_KB=`expr $PHYS_MEMORY \* 1024`
PHYS_MEMORY_FREE_PAGES=`cat $MEMDATA | grep "free pages" | awk {'print $4'}`
PHYS_MEMORY_FREE_KB=`expr $PHYS_MEMORY_FREE_PAGES \* 8`
PHYS_MEMORY_USED_KB=`expr $PHYS_MEMORY_KB - $PHYS_MEMORY_FREE_KB`
PHYS_MEMORY_USED=`expr $PHYS_MEMORY_USED_KB / 1024`

SWAP_MEMORY_PAGES=`cat $SWAPDATA | grep "Allocated space:" | awk {'print 
$3'} | tail -1`
SWAP_MEMORY=`expr $SWAP_MEMORY_PAGES \* 8 / 1024`
SWAP_MEMORY_USED_PAGES=`cat $SWAPDATA | grep "In-use space:" | awk 
{'print $3'} | tail -1`
SWAP_MEMORY_USED=`expr $SWAP_MEMORY_USED_PAGES \* 8 / 1024`

if [ $PHYS_MEMORY -eq 0 ]; then
   exit 0
fi

# percentage of memory used

PERCENT_PHYS_MEMORY_USED=0
PERCENT_SWAP_MEMORY_USED=0

if [ $PHYS_MEMORY -gt 0 ]; then
   PERCENT_PHYS_MEMORY_USED=`expr 100 \* $PHYS_MEMORY_USED / $PHYS_MEMORY`
fi

if [ $SWAP_MEMORY -gt 0 ]; then
   PERCENT_SWAP_MEMORY_USED=`expr 100 \* $SWAP_MEMORY_USED / $SWAP_MEMORY`
fi


# calculate physical memory usage

if [ $PHYS_MEMORY_USED -ge 0 ]; then
   if [ $PERCENT_PHYS_MEMORY_USED -ge $PERCENT_PHYS_PANIC ]; then
      COLOR="red"
      PHYS_COLOR="red"
      STATUS="Memory **very** low"
   else
      if [ $PERCENT_PHYS_MEMORY_USED -ge $PERCENT_PHYS_WARN ]; then
         PHYS_COLOR="yellow"
         if [ "$COLOR" != "red" ]; then
            COLOR="yellow"
            STATUS="Memory low"
         fi
      else
         PHYS_COLOR="green"
      fi
   fi
else
   PHYS_COLOR="clear"
fi


# virtual memory usage

if [ $SWAP_MEMORY_USED -ge 0 ]; then
   if [ $PERCENT_SWAP_MEMORY_USED -ge $PERCENT_SWAP_PANIC ]; then
      COLOR="red"
      SWAP_COLOR="red"
      STATUS="Memory **very** low"
   else
      if [ $PERCENT_SWAP_MEMORY_USED -ge $PERCENT_SWAP_WARN ]; then
         SWAP_COLOR="yellow"
         if [ "$COLOR" != "red" ]; then
            COLOR="yellow"
            STATUS="Memory low"
         fi
      else
         SWAP_COLOR="green"
      fi
   fi
else
   STATUS="--"
   SWAP_COLOR="clear"
fi

echo "$STATUS"

echo "   Memory        Used    Total   Percentage"

if [ ! "$PHYS_COLOR" = "clear" ]; then
   echo "&${PHYS_COLOR} Physical ${PHYS_MEMORY_USED}M ${PHYS_MEMORY}M 
${PERCENT_PHYS_MEMORY_USED}%" | \
      awk '{printf "%s %-9s %8s %8s %12s\n",$1,$2,$3,$4,$5}'
else
   echo "&${PHYS_COLOR} Unable to calculate virtual memory usage"
fi

if [ ! "$SWAP_COLOR" = "clear" ]; then
   echo "&${SWAP_COLOR} Swap ${SWAP_MEMORY_USED}M ${SWAP_MEMORY}M 
${PERCENT_SWAP_MEMORY_USED}%" | \
      awk '{printf "%s %-9s %8s %8s %12s\n",$1,$2,$3,$4,$5}'
else
   echo "&${SWAP_COLOR} Unable to calculate virtual memory usage"
fi

/usr/bin/rm -f $MEMDATA
/usr/bin/rm -f $SWAPDATA


}

/usr/bin/rm -f $HCHOME/tmp/$MyAGENT
touch $HCHOME/tmp/$MyAGENT

get_status > $HCHOME/tmp/$MyAGENT

MyDATE=`/bin/date "+%Y-%m-%d %H:%M"`

### Send the result to all Hobbit display servers
#

# debug version, do not send it ...
echo "... ...  \"status $MyAGENT $COLOR `date` `cat 
$HCHOME/tmp/$MyAGENT` \""


#/usr/bin/rm -f $FDMDATA
exit
-------------------------------^^^^^^^^^^^^^^^^^^^^^^^-------------------





I use the following function to get processor load informations.


--------------------------vvvvvvvvvvvvvvvvvvvvvvvvvvvvv---------------------


get_status()
{

COLOR="green"

set `uptime | awk  '{ gsub(/,/,""); printf "%s %s 
%s\n",$(NF-2),$(NF-1),$NF}'`

AVG1=$1
AVG5=$2; export AVG5
AVG15=$3

NRPROC=`ps -ef | wc -l | sed "s/ //g"`; export NRPROC

# The Hobbit "do_la.c" requires a line like "up: 36 days, 6 users, 239 
procs, load=0.72"

uptime | awk '{printf "%s: %s %s %s %s %3s procs, 
load=%s\n",$2,$3,$4,$(NF-6),$(NF-5),ENVIRON["NRPROC"],ENVIRON["AVG5"]}'

### set condition red yellow green

echo "LOAD average on `hostname` is:"
echo ""
echo " over the last 60 seconds : ${AVG1}"
echo " over the last  5 minutes : ${AVG5}"
echo " over the last 15 minutes : ${AVG15}"

COLOR=`echo "$AVG5 $CPUWARN $CPUPANIC" | awk '{ $1 < $2 ? x="green" : $1 
< $3 ? x="yellow" :x="red"; print (x)}'`


}

--------------------------^^^^^^^^^^^^^^^^^^^^^^^^^--------------------------



Regards,
Tony




More information about the Xymon mailing list