Raid:LSI Monitoring

From SME Server
Jump to: navigation, search
PythonIcon.png Skill level: Medium
The instructions on this page require a basic knowledge of linux.

LSI Controller Monitoring

Introduction

Dell Servers - and others (I guess) come the LSI Logic Raid controllers, but ..

The excellent native Raid monitoring in SME is bypassed, this howto describes how to install the mpt-status package and write a small customizable monitoring app

Establish a Console session to do this.

Download

From
  http://sven.stormbind.net/mpt-status-rhel/
download
  mpt-status-1.2.0-2.el6.i686.rpm

Install

yum localinstall mpt-status-1.2.0-2.el5.centos.i386.rpm

Support Program

  • CheckMPT
#!/usr/bin/perl
# With credit to :
#   => check_mpt.pl Copyright (C) 2006 Claudio Messineo <claudio@zero.it>

$mpt_path="/usr/sbin/mpt-status";
$num_raid=2;
$enabled=1;
$sendto="admin";
$sendfrom="admin";

`/sbin/modprobe mptctl`;
sleep 1;

if ( ! open( MPT_STAT, " $mpt_path | " ) ) {
    print "ERROR: could not open $mpt_path\n";
    exit 1;
} else {
    while (<MPT_STAT>) {
        if ( $_ =~ m/ENABLED/ ) {
            # print "$_";
            $enabled--;
        }
        if ( $_ =~ m/ONLINE/ ) {
             # print "$_";
             $num_raid--;
        }
        next;
    }

    my $hostname=`/bin/hostname -f 2>&1`;
    chomp($hostname);
    if (($num_raid==0) and ($enabled==0)) {

#        sendEmail( $sentto, $sendfrom, "$hostname Mpt-status OK", "$results" );
#        print "$hostname Mpt-status OK\n";
         exit 0;
    } else {

        sendEmail( $sentto, $sendfrom, "$hostname Mpt-status Alert", "$results" );
        print "$hostname Mpt-status Alert\n";
        exit 1;
    }
}

# Simple Email Function
# ($to, $from, $subject, $message)
sub sendEmail {
    my ($to, $from, $subject, $message) = @_;
    my $sendmail = '/var/qmail/bin/sendmail';
    open(MAIL, "|$sendmail -f $from -oi -t");
        print MAIL "From: $from\n";
        print MAIL "To: $to\n";
        print MAIL "Subject: $subject\n\n";
        print MAIL "$message\n";
    close(MAIL);
}