====== Monitoring LSI SAS RAID Controllers on Linux ======
See also **[[computing:storage:lsi:megaraid|LSI MegaRAID]]**
**Cheat Sheet**: http://tools.rapidsoft.de/perc/
**LSI MegaRAID SAS User's Guide**: http://www.lsi.com/downloads/Public/MegaRAID%20Common%20Files/MegaRAID_SAS_SW_UG_51530-00_RevI.pdf
This configuration uses ''cron'' and the MegaCLI RAID configuration utility to monitor a Linux server with a newer LSI SAS RAID controller.
Warning messages are sent to the system administrator using the ''sendmail'' command.
The script checks for the controller to report it is running in 'Degraded' status. You might have it run from ''cron'' every 10 minutes.
===== XenServer =====
With XenServer, there is no 'mail' command nor MTA daemons running, but it does come with SSMTP installed. SSMTP is cool because you don't need an extra process running on your box and it eliminates a lot of problems you can run into with mail relaying.
==== Configure SSMTP ====
vi /etc/ssmtp/ssmtp.conf
root=admin@yourdomain.com
mailhub=mailserver.yourdomain.com:465
RewriteDomain=yourdomain.com
FromLineOverride=YES
UseTLS=YES
AuthUser=smtpuser
AuthPass=smtppassword
==== Test SSMTP ====
Test with no 'mail' command and no subject line:
echo test | ssmtp -v admin@yourdomain.com
==== Install the MegaCLI Utility ====
See also **[[computing:storage:lsi:megaraid|LSI MegaRAID]]**
==== cron ====
Added to ''/etc/crontab'' to run the script every 10 minutes:
# check for RAID array problems every 10 minutes and send out a message
*/10 * * * * root /root/raid-status-megacli.sh 2>&1
==== raid-status-megacli.sh ====
Place this script in the ''/root'' directory and make it executable:
chmod +x /root/raid-status-megacli.sh
You will want to edit the variables to fit your needs.
#!/bin/bash
#
# raid-status-megacli.sh - Gene Cooper
#
# For newer LSI RAID controllers
#
# Uses MegaCLI utility and sendmail command and should be run from cron
# Sender of e-mail warnings
# For WHMCS Ticket System, use the contact address here for automatic account assignment
FROM='"RAID Status" '
# Subject of e-mail warning
SUBJECT="RAID Array Failure on `hostname`"
# Recipient of e-mail warnings
ADMIN='"Your Name" '
# RAID utility check command
COMMAND='/opt/MegaRAID/MegaCli/MegaCli -ldinfo -Lall -Aall -NoLog'
# RAID status check results
STATUS='/root/raidinfo.txt'
# dump hardware failure info to a text file
nice -n 19 ${COMMAND} > $STATUS
# Comment this section and run manually to test mail sending
# Check for error
if [ -z "$(grep "^State.*: Degraded$" $STATUS | awk '{print $NF}')" ]; then
exit 0
fi
# Send mail
/usr/sbin/sendmail -t -i <
Here is someone else's script for ideas:
#!/bin/sh
CONT="a0"
STATUS=0
MEGACLI=/opt/MegaRAID/MegaCli/MegaCli64
echo -n "Checking RAID status on "
hostname
for a in $CONT
do
NAME=`$MEGACLI -AdpAllInfo -$a |grep "Product Name" | cut -d: -f2`
echo "Controller $a: $NAME"
noonline=`$MEGACLI PDList -$a | grep Online | wc -l`
echo "No of Physical disks online : $noonline"
DEGRADED=`$MEGACLI -AdpAllInfo -a0 |grep "Degrade"`
echo $DEGRADED
NUM_DEGRADED=`echo $DEGRADED |cut -d" " -f3`
[ "$NUM_DEGRADED" -ne 0 ] && STATUS=1
FAILED=`$MEGACLI -AdpAllInfo -a0 |grep "Failed Disks"`
echo $FAILED
NUM_FAILED=`echo $FAILED |cut -d" " -f4`
[ "$NUM_FAILED" -ne 0 ] && STATUS=1
done
exit $STATUS