http://www.bxtra.net/articles/2008-09-16/Dell-Perc6i-RAID-Monitoring-Script-using-MegaCli-LSI-CentOS-52-64-bits
I got a Dell Perc6/i Integrated RAID card a few days ago. By using it with CentOS 5.2 64 bits without GUI, I'm looking the way to monitor RAID status. I then, found that I can use MegaCLI from LSI to do the task. (Dell Perc6/i uses LSI Chip)
First, get MegaCLI from LSI website -> MegaCLI 2.00.11 for Linux
Unzip it, and install it by RPM. Files will place at /opt/MegaRAID/MegaCli . However, since I use 64 bits version, the file I got is MegaCli64 . (32 bits OS will get MegaCli instead.
I, then, followed what said on this website (Most information came from that website.)
1. Created a file called "analysis.awk" in the /opt/MegaRAID/MegaCli directory with the following contents:
# This is a little AWK program that interprets MegaCLI output
/Device Id/ { counter += 1; device[counter] = $3 }
/Firmware state/ { state_drive[counter] = $3 }
/Inquiry/ { name_drive[counter] = $3 " " $4 " " $5 " " $6 }
END {
for (i=1; i<=counter; i+=1) printf ( "Device %02d (%s) status is: %s <br/>\n", device[i], name_drive[i], state_drive[i]); }
2. Tested by run the command : ./MegaCli64 -PDList -aALL | awk -f analysis.awk
[root@xxxxx MegaCli]# ./MegaCli64 -PDList -aALL | awk -f analysis.awk
Device 00 (ATA ST3xxxxxxxx Sxxx 5xxxxx) status is: Online
Device 01 (ATA ST3xxxxxxxx Sxxx 5xxxxx) status is: Online
3. Create a file raidstatus in /etc/cron.hourly . Put below script in it :
/opt/MegaRAID/MegaCli/MegaCli64 -PdList -aALL | awk -f /opt/MegaRAID/MegaCli/analysis.awk | grep -qEv "*: Online" > /dev/null && echo "Warning: RAID status no longer optimal"
4. Run below command to make the file executable by all users.
chmod a+x /etc/cron.hourly/raidstatus
5. Check where the e-mail notification goes to in CRONTAB. Check this file -> /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
I didn't change anything in CRONTAB. Instead, I changed that in /etc/aliases file. Specify root : [email protected] in there. So, that all mail to root will go to [email protected]
There is no e-mail notification if you run cron task (run-parts /etc/cron.hourly ) by yourself. So, you need to wait for CRON to run automatically and you will get an E-mail.
Below are command that maybe useful :
Command to list Adapter Information :
/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aAll
Command to List all Logical Drives :
/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LALL -aAll
Command to list all Physical Information :
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll
To check if cron works, run command :
run-parts /etc/cron.hourly