[Xymon] Clariion monitoring

Nico nicolas at lienard.name
Fri Sep 21 21:38:45 CEST 2012


here another one only to graph IO disk activity by LUN:

#!/bin/sh


bbhostgrep emcio*  | while read data;
do
        HOST=`echo $data | awk '{print $2}'`;
        IP=`echo $data | awk '{print $1}'`;

        datafile="/tmp/.emcio-datafile-$HOST"
        :> $datafile;
        lunlist=`/opt/hobbit/server/ext/navicli -h $IP getlun |grep "LOGICAL UNIT NUMBER" | awk '{print $4}'` 
        for lun in $lunlist
        do
                /opt/hobbit/server/ext/navicli -h $IP getlun $lun > /tmp/.emc-io-$HOST-lun-$lun 2>/dev/null
                if [ $? -eq 0 ]
                then
                        NAME=`egrep ^Name /tmp/.emc-io-$HOST-lun-$lun |sed 's/Name//;s/ //g'`;
                        BLOCK_READ=`grep "Blocks read:" /tmp/.emc-io-$HOST-lun-$lun | head -n1 | awk '{print $3}'`;
                        BLOCK_WRITTEN=`grep "Blocks written:" /tmp/.emc-io-$HOST-lun-$lun | head -n 1 | awk '{print $3}'`;
                        echo $NAME $BLOCK_READ $BLOCK_WRITTEN
                        echo "[emciolun.$NAME.rrd]" >> $datafile
                        echo "DS:blocks_read:DERIVE:600:0:U $BLOCK_READ" >> $datafile
                        echo "DS:blocks_written:DERIVE:600:0:U $BLOCK_WRITTEN" >> $datafile
                fi
        done
        echo "Publishing to hobbit."
        $BB $BBDISP "data $HOST.trends 
`cat $datafile`
"
done


[emciolun]
        FNPATTERN emciolun.(.*).rrd
        TITLE EMC Lun I/O
        YAXIS Bytes
        DEF:rb at RRDIDX@=@RRDFN@:blocks_read:AVERAGE
        DEF:wb at RRDIDX@=@RRDFN@:blocks_written:AVERAGE
        CDEF:r at RRDIDX@=rb at RRDIDX@,520,*
        CDEF:w at RRDIDX@=wb at RRDIDX@,520,*
        LINE1:r at RRDIDX@#@COLOR@:@RRDPARAM@ bytes/s Read
        -u 100
        GPRINT:r at RRDIDX@:LAST: %5.1lf (cur)
        GPRINT:r at RRDIDX@:MAX: %5.1lf (max)
        GPRINT:r at RRDIDX@:MIN: %5.1lf (min)
        GPRINT:r at RRDIDX@:AVERAGE: %5.1lf (avg)\n
        LINE1:w at RRDIDX@#@COLOR@:@RRDPARAM@ bytes/s Written
        GPRINT:w at RRDIDX@:LAST: %5.1lf (cur)
        GPRINT:w at RRDIDX@:MAX: %5.1lf (max)
        GPRINT:w at RRDIDX@:MIN: %5.1lf (min)
        GPRINT:w at RRDIDX@:AVERAGE: %5.1lf (avg)\n



Le 21 sept. 2012 à 17:15, Scott Pfister a écrit :

> Here's a script we used to monitor clariion.  It requires the navicli
> to be installed on the host that runs the monitoring script. In our
> case it was the xymon server.  We also found it better to split the
> test accross both service processors.  Hence the SPIP and SPIP2
> variables.   Ours had no NAS so we didn't montitor anything there.
> This was on the old deadcat site and we tweaked it a little.
> 
> #!/bin/sh
> #set -x
> #-------------------------------------------------
> # Big Brother - EMC CLARiiON FC-4700 Hardware Agent
> #
> #	This agent monitor the hardware of an EMC
> #	CLARiiON FC-4700 Array using the Navisphere
> #	Command Line Interface (NAVICLI)
> #
> #	Author: Sabey (sabey2000 at hotmail.com)
> #
> #	Feel free to improve or modify.
> #
> #==================================================
> # History
> #--------------------------------------------------
> #       Fri Feb 22 11:44:08 MET 2008
> #       added global state yellow and Disk status
> #
> #	Notes:
> #		If a disk failed, it was shown yellow in it`s list, but the global
> #		status was unchanged. This is fixed now
> #		
> #		The Disks will show now the status of a binding action in %
> #		the same for replacement of a disk
> #
> #
> #	Tue Aug 19 21:34:15 GMT 2003
> #	Docs and fixes by N. Rettinghouse (rettinghouse.n0spam at att.net)
> #
> #	Notes:
> #		GNU GAWK is needed. (www.sunfreeware.com for Solaris)
> #		Copy clariion.sh into the bb/ext directory.
> #		Add the following to your bb/etc/bb-bbexttab:
> #			localhost : : clariion.sh
> #			A restart of BigBro will be needed after adding bb-bbexttab.
> #		Configure the variables shown below.
> #		Add the BigBrother user to the /etc/Navisphere/agent.config file to
> #			allow running of navicli.
> #		Changed "HW" to "hw" to be consistant with other bb services.
> #		Fixed conflict with $MACHINE BigBro internal variable.
> #		Configure bb-hosts like this:
> #			10.10.30.34 SAN-BigusDiskus # testip noping
> #		
> #---------------------------------------------------
> #  Thu Sep  4 11:57:48 EDT 2003
> #  Docs and fixes by Sabey (sabey2000 at hotmail.com)
> #
> #  Notes:
> #		Add support to CLARiiON CX600 (maybe all CX series...)
> #
> #############################################################################
> ### Set these as needed. ####################################################
> #S#SPIP=172.25.2.239							# One of the two SP IP address
> #S#EMC_ARRAY="CLARiiON-1"					# The name of your CLARiiON array
> SPIP=							# One of the two SP IP address
> SPIP2=							# One of the two SP IP address
> EMC_ARRAY="emcsan"					# The name of your CLARiiON array
> navicli=/opt/Navisphere/bin/navicli	# Where is the NAVICLI cmd
> GAWK=/usr/bin/awk				# need GNU AWK
> #############################################################################
> #############################################################################
> 
> TEST="emc"									# The BB test name
> MYTMPFILE=CLARIION_STATUS.$$			# Use a buffer tmp file for NAVICLI output
> BBPROG=BB_CLARiiON; export BBPROG  	# ???
> 
> ##---[Check BBHOME is set]--------------------------------
> if test "$BBHOME" = ""; then
>   echo "BBHOME is not set... exiting"; exit 1
> fi
> if [ ! -x $GAWK ]; then
> 	echo "This agent need GNU Awk, check GAWK variable"; exit 1
> fi
> 
> #---[Load bb global parameter]---------------------------
> if test ! "$BBTMP"; then
> 	. $BBHOME/etc/bbdef.sh
> fi
> 
> #---[Collect DATA]---------------------------------------
> echo "Status of ${EMC_ARRAY} Storage System" > $BBTMP/ITC_CLARiiON.OUT.$$
> echo "============================================================================="
>>> $BBTMP/ITC_CLARiiON.OUT.$$
> 
> #---[1. Get cache
> status]---------------------------------------------------------
> $navicli -h $SPIP getcache > $BBTMP/$MYTMPFILE
> echo "SP Cache" >> $BBTMP/ITC_CLARiiON.OUT.$$
> echo "----------------------------" >> $BBTMP/ITC_CLARiiON.OUT.$$
> $CAT $BBTMP/$MYTMPFILE | $GAWK '
> {
>   if ($0 ~ /SP Write|Read Cache State/) {
>   sub ("    *"," ")
>   if ($0 ~ /State Enabled/) {
>   sub (" State Enabled","")
>   sub ("^","\\&green ")
>   } else {
>        sub (" State .*","")
>        sub ("^","\\&red ")
>   }
>   if ($0 !~ /SP Read Cache/) {
>   print
>   }
>   }
> }' >> $BBTMP/ITC_CLARiiON.OUT.$$
> 
> #---[2. Port status]--------------------------------------------------------------
> $navicli -h $SPIP2 port -list > $BBTMP/$MYTMPFILE
> echo -e "\nSP Link Status" >> $BBTMP/ITC_CLARiiON.OUT.$$
> echo "----------------------------" >> $BBTMP/ITC_CLARiiON.OUT.$$
> $CAT $BBTMP/$MYTMPFILE | $GAWK '
> {
>   if ($0 ~ /Information about each SPPORT:/) {
>      FLAG=1
>   }
>   if (FLAG == 1) {
>      if (($0 ~ /SP Name/) || ($0 ~ /SP Port ID/) || ($0 ~ /Link
> Status/) || ($0 ~ /Port Status/)) {
>         sub ("   *","")
>         if ($0 ~ /SP Name/) {
>            sub ("SP Name:","")
>            SP=$0
>         }
>         if ($0 ~ /SP Port ID/) {
>            sub ("SP Port ID:","Port ")
>            Port=$0
>         }
>         if ($0 ~ /Link Status/) {
>            if ($0 ~ /Status:Up/) {
>               sub ("Status:Up","\\&green")
>            } else {
> 	       if ((Port == "Port 3") || (Port == "Port 2" )) {
>                  sub ("Status:.*","\\&clear")
> 	       } else {
>                       sub ("Status:.*","\\&red")
>               }
> 	    }
>            LinkS=$0
>         }
>         if ($0 ~ /Port Status/) {
>            if ($0 ~ /Status:Online/) {
>               sub ("Status:Online","\\&green")
>            } else {
>               if ((Port == "Port 3") || (Port == "Port 2" )) {
>                  sub ("Status:.*","\\&clear")
>               } else {
>               sub ("Status:.*","\\&red")
>               }
>            }
>            sub ("Port","Status")
>            PortS=$0
>            sub ("Status:","",PortS)
>            sub ("Status:","",LinkS)
>            print SP,Port,PortS,LinkS
>         }
>      }
>   }
> }' >> $BBTMP/ITC_CLARiiON.OUT.$$
> 
> #---[3. DPE/DAE
> Status]-----------------------------------------------------------
> $navicli -h $SPIP getcrus > $BBTMP/$MYTMPFILE
> echo -e "\nDPE/DAE Status" >> $BBTMP/ITC_CLARiiON.OUT.$$
> echo "----------------------------" >> $BBTMP/ITC_CLARiiON.OUT.$$
> 
> $CAT $BBTMP/$MYTMPFILE | $GAWK '
> {
>   if (($0 ~ /[DPE|DAE] Bus . Enclosure ./) || ($0 ~ /State/)) {
>      if ($0 ~ /State/) {
>         sub ("Bus . Enclosure . ","")
>         sub ("   *"," ")
>         sub ("Power","Power Supply")
>         if (($0 ~ /State: Present/) || ($0 ~ /State: Valid/)) {
>            sub (" State:*","")
>            sub ("^","\\&green ")
>         }
>         else {
>            sub (" State:.*","")
>            sub ("^","\\&red ")
>         }
>      }
>      if ($0 ~ /[DPE|DAE] Bus . Enclosure ./) {
>         print ""
>      }
>      print
>      if ($0 ~ /[DPE|DAE] Bus . Enclosure ./) {
>        print "----------------------------"
>      }
>   }
> }' >> $BBTMP/ITC_CLARiiON.OUT.$$
> 
> #---[4. Disks status]-------------------------------------------------------------
> $navicli -h $SPIP2 getdisk -state -rb -bind > $BBTMP/$MYTMPFILE
> echo -e "\nDisks Status" >> $BBTMP/ITC_CLARiiON.OUT.$$
> echo "----------------------------" >> $BBTMP/ITC_CLARiiON.OUT.$$
> $CAT $BBTMP/$MYTMPFILE | $GAWK ' BEGIN { FLAG=0 }
> {
>   if (FLAG == 3) {
>     FLAG=0
>     sub ("   *","")
>     sub ("Prct Bound: *","")
>     while (sub ("[0123456789]+: +100 *",""))
>     sub (" +$","%")
>     bound=$0
>     if ((hotspare ~ /Enabled/) || (hotspare ~ /Ready/) || (hotspare ~
> /Unbound/) || (hotspare ~ /Empty/)) {
>       print status,"Disk",disk,hotspare
> 
>     }
>     else {
>       if (hotspare ~ /Binding/) {
> 	 status="&green"
>         print status,"Disk",disk,hotspare,"LUN",bound
> 
>       }
>       else {
> 	 status="&yellow"
>         print status,"Disk",disk,hotspare,"LUN",rebuild
> #         print status,"Disk",disk," Hostspare=",hotspare,"LUN","
> Rebuild=",rebuild
> 
>       }
>     }
>   }
>   if (FLAG == 2) {
>     FLAG=3
>     sub ("   *","")
>     sub ("Prct Rebuilt: *","")
>     while (sub ("[0123456789]+: +100 +",""))
>     rebuild=$0
>   }
>   if (FLAG == 1) {
>      sub ("   *","")
>      sub ("State: *","")
>      status=$0
>      FLAG=2
>      hotspare=""
>      if ($0 ~ /Hot Spare/) {
>         sub ("Hot Spare ","",status)
>         hotspare="(Hot Spare)"
>      }
>      if (status ~ /Empty/) {
> 	hotspare=$status
> 	status="&clear"
>      FLAG=3
>      }
>      else {
>      	if ((status ~ /Enabled/) || (status ~ /Ready/) || (status ~
> /Unbound/) || (status ~ /Binding/) || (status ~ /Expanding/)) {
> 	  hotspare=$status
> 	  status="&green"
> 	}
>      	else {
>             if ((status ~ /Copying/) || (status ~ /Equalizing/)) {
>             hotspare=$status
>             status="&yellow"
>             }
>         else {
> 	  hotspare=$status
> 	  status="&red"
> 	}
>      }
>      }
>   }
>   if (($0 ~ /Bus +[0-9]+ +Enclosure +[0-9]+ +Disk +[0-9]+/)) {
>      sub ("Bus +","")
>      sub (" +Enclosure +","_")
>      sub (" +Disk +","_")
>      disk=$0
>      FLAG=1
>   }
> }' >> $BBTMP/ITC_CLARiiON.OUT.$$
> 
> #---[5. Trespass
> status]-------------------------------------------------------------
> $navicli -h $SPIP getlun -ismetalun -trespass -status  > $BBTMP/$MYTMPFILE
> echo -e "\nTrespass Status" >> $BBTMP/ITC_CLARiiON.OUT.$$
> echo "----------------------------" >> $BBTMP/ITC_CLARiiON.OUT.$$
> $CAT $BBTMP/$MYTMPFILE | $GAWK '
> {
>      if ($0 ~ /LOGICAL UNIT NUMBER/) {
>      sub ("LOGICAL UNIT NUMBER ","")
>      lun=$0
> #      print "lun=",lun
>      }
>      else {
>           if ($0 ~ /Default Owner/) {
>           sub ("Default Owner:              ","")
>           preffered_sp=$0
> #          print "preferred sp="preffered_sp
>           }
>           else {
>                if ($0 ~ /Current owner/) {
>                sub ("Current owner:              ","")
>                current_sp=$0
> #                print "current_sp=",current_sp
>                status="&yellow"
>             if ( length(lun) < 4) {
>                print status " Lun " lun " -->\t Default
> Owner:",preffered_sp," Current Owner:",current_sp
> #                print status " Lun"
> #		printf "%4s", lun
> #		print " -->\t Default Owner:",preffered_sp," Current Owner:",current_sp
>                }
>                }
>           }
>     }
> 
> }' >> $BBTMP/ITC_CLARiiON.OUT.$$
> 
> 
> #---[Check global color output]---
> $CAT $BBTMP/ITC_CLARiiON.OUT.$$ | grep \&red > /dev/null 2>&1
> ret=$?
> if [ "$ret" = "0" ]; then
>   COLOR=red
> else
>   $CAT $BBTMP/ITC_CLARiiON.OUT.$$ | grep \&yellow > /dev/null 2>&1
>   ret=$?
>   if [ "$ret" = "0" ]; then
>      COLOR=yellow
>   else
>      COLOR=green
>   fi
> fi
> #---[Generate information to send]---
> LINE="status $EMC_ARRAY.$TEST $COLOR `date`
> `cat $BBTMP/ITC_CLARiiON.OUT.$$`"
> 
> #if [ "$COLOR" != "red" ]; then
> 	$RM -f $BBTMP/ITC_CLARiiON.OUT.$$ $BBTMP/$MYTMPFILE
> #fi
> 
> #---[Send page info to BBDISPLAY]---
> $BB $BBDISP "$LINE
> 
> $0 running on `hostname`"
> #echo $BB $BBDISP "$LINE"
> 
> On Mon, Sep 17, 2012 at 11:37 PM, Vernon Everett
> <everett.vernon at gmail.com> wrote:
>> 
>> Hi all
>> 
>> Has anybody done any work on monitoring an EMC Clariion system, that they are prepared to share?
>> I have no idea what I need to monitor yet, and we have nothing in place at the moment, so anything is better than what I have now.
>> 
>> All assistance appreciated.
>> 
>> Regards
>>    Vernon
>> 
>> 
>> --
>> "Accept the challenges so that you can feel the exhilaration of victory"
>> - General George Patton
>> 
>> 
>> _______________________________________________
>> Xymon mailing list
>> Xymon at xymon.com
>> http://lists.xymon.com/mailman/listinfo/xymon
>> 
> _______________________________________________
> Xymon mailing list
> Xymon at xymon.com
> http://lists.xymon.com/mailman/listinfo/xymon




More information about the Xymon mailing list