Nagios- EMC-NS480/ Celerra/ VNX

Wie bei fast jeder proprietären Hardware ist ein Einbinden von EMC Speichersystemen in Nagios out of the box nicht möglich. Da auf einer gut zugänglichen, zentralen Komponente, der Controlstation, jedoch Linux läuft, kann man sich mit einem, selbstverständlich von EMC nicht supporteten, Workaround behelfen.

Das Prinzip ist recht einfach aber trotz alledem sehr effektiv- man installiert einen Nagios Remote Plugin Executor (NRPE) auf der Controlstation. Dieser ist dann, wie z.B. im Wiki von monitoring-portal.org gut dokumentiert, einfach zu konfigurieren und zu erweitern.

Im folgenden Beispiel werde ich mich auf die Vitalfunktionen des SANs, sowie den File- basierten Teil beschränken. Das Einbinden der Block- Seite (Storagepools, LUNs usw.) kann jedoch sehr einfach realisiert werden- Stichwort navicli bzw. naviseccli.

Download

Das Archiv mit allen benötigten Dateien gibt es hier zum Download.
Die Versionen im Archiv sind nicht die aktuellsten, reichen für die beschriebenen Zwecke, und der Annahme, dass die Controlstation vom regulären Anwendernetz aus nicht zugänglich ist, aber vollkommen aus.

Installation der Pakete

Da es um die Installation und Manipulation von Systemdateien geht, ist es unabdingbar den root- Account für das weitere Vorgehen zu benutzen. Nach dem Download des Archives in das Home- Verzeichnis von root wird dieses entpackt:  
[root@cs ~]$ tar xvfz /root/nagios-celerra.tar.gz 
  Nun folgt die Installation der Pakete:  
[root@cs ~]$ rpm -i fping-2.4-1.b2.1.el3.rf.i386.rpm 
[root@cs ~]$ rpm -i nagios-nrpe-2.12-0.el4.i386.rpm
[root@cs ~]$ rpm -i nagios-plugins-1.4.1-1.1.el3.rf.i386.rpm
[root@cs ~]$ rpm -i perl-Net-SNMP-5.2.0-1.rf.noarch.rpm
[root@cs ~]$ rpm -i nagios-plugins-1.4.1-1.1.el3.rf.i386.rpm
[root@cs ~]$ rpm -i nagios-nrpe-2.12-0.el4.i386.rpm
[root@cs ~]$ rpm -i nagios-nsca-2.7-2.rhel4.i386.rpm

Anlegen des Nagios- Benutzers

Der Aufruf der Scripte erfolgt als Benutzer nagios. Dieser muß erst noch angelegt werden:  
[root@cs ~]$ adduser nagios
  Im folgenden Dialog können alle Standardwerte übernommen und mit ENTER bestätigt werden. Hier wird auch eine Gruppe nagios angelegt und der Benutzer nagios als Mitglied aufgenommen.

Anpassen des inetd

Der nächste Schritt ist das Anpassen des inetd zum Ausführen von NRPE. Durch die Installation wurde die Datei prinzipiell ja schon angelegt. Lediglich die Zeile only_from muß noch angepasst werden, damit der Nagios- Server auch Zugriff hat:  
[root@cs ~]$ vi /etc/xinetd.d/nrpe 
# default: off
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe {
        flags           = REUSE
        type            = UNLISTED
        port            = 5666
        socket_type     = stream
        wait            = no
        user            = nagios
        group           = nagios
        server          = /usr/sbin/nrpe
        server_args     = -c /etc/nagios/nrpe.cfg --inetd
        log_on_failure  += USERID
        disable         = no
        only_from       = 127.0.0.1 172.18.300.192
}
  Nach dieser Anpassung muß die Konfiguration des xinetd neu gelesen werden:  
[root@cs ~]$ /etc/init.d/xinetd restart 

Einrichten der sudoers

Das Ausführen der verschiedenen Prüfscripte erfolgt als Benutzer nagios. Da jedoch einige Dinge dabei sind, für die nagios die notwendigen Rechte, sowie die Umgebungseinstellungen fehlen, muß dieser in die sudoers eingetragen werden:  
[root@cs ~]$ vi /etc/sudoers 
%nagios ALL=(ALL)       NOPASSWD: ALL
  Prinzipiell würde es genügen nagios zu ermöglichen Befehle als nasadmin auszuführen- da es allerdings einige Service- Kommandos gibt, die root- Rechte benötigen, habe ich mich gleich für die "große" Version entschieden.

Der erste Test

Für einen ersten Test meldet man sich als Benutzer nasadmin an und führt dann ein Checkcommand aus:  
[nasadmin@cs ~]$ bin/fs-abs.sh DATAMOVER FILESYSTEM 90 
  Hierbei sind selbstverständlich die Werte für Datamover und Filesystem an die jeweilige Umgebung anzupassen. Im nächsten Schritt meldet man sich als Benutzer nagios an (su - nagios) und prüft, ob auch dieser ausreichende Rechte besitzt- speziell ob die sudo- Konfiguration richtig ist:  
[nagios@cs ~]$ sudo su - nasadmin -c "/home/nasadmin/bin/fs-abs.sh DATAMOVER FILESYSTEM 90 
  Waren beide Kommandos erfolgreich so läuft nun prinzipell auf der Controlstation- Seite schon alles notwendige. Was für einen automatischen Check durch Nagios nun noch fehlt, ist die Seite auf dem Server der Systemüberwachung selbst.

Der Nagios- Part

Die Einrichtung in Nagios funktioniert wie bei jedem anderen NRPE- Check auch. Alle Checks, die in der Datei /etc/nagios/ce.cfg definiert sind, können abgerufen werden. Speziell die folgenden Checks prüfen VNX- spezifische Dinge:  
command[check_antivirus]=sudo su - nasadmin -c "/home/nasadmin/bin/antivirus.sh" 
command[check_datamover]=sudo su - nasadmin -c "/home/nasadmin/bin/datamover.sh"
command[check_replication]=sudo su - nasadmin -c "/home/nasadmin/bin/replication.sh $ARG1$"
command[check_savvol]=sudo su - nasadmin -c "/home/nasadmin/bin/savvol.sh $ARG1$ $ARG2$"
command[check_usermapper]=sudo su - nasadmin -c "/home/nasadmin/bin/usermapper.sh"
command[check_cifs]=sudo su - nasadmin -c "/home/nasadmin/bin/cifs.sh $ARG1$ $ARG2$ $ARG3$"
command[check_nfs]=sudo su - nasadmin -c "/home/nasadmin/bin/nfs.sh"
command[check_fs]=sudo su - nasadmin -c "/home/nasadmin/bin/fs.sh $ARG1$ $ARG2$ $ARG3$"
command[check_fs-abs]=sudo su - nasadmin -c "/home/nasadmin/bin/fs-abs.sh $ARG1$ $ARG2$ $ARG3$"
command[check_checkpoints]=sudo su - nasadmin -c "/home/nasadmin/bin/checkpoints.sh $ARG1$"
command[check_quota]=sudo su - nasadmin -c "/home/nasadmin/bin/quota.sh $ARG1$ $ARG2$ $ARG3$"
command[check_hardware]=sudo su - nasadmin -c "/home/nasadmin/bin/hardware.sh"
command[check_dumpvol]=/usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p /nbsnas/var/dump
  Wie gut zu sehen ist, rufen die Überprüfungen nahezu allesamt Scripte unterhalb von /home/nasadmin/bin auf.

Der vom Nagios- Server aufzurufende Check ist der Name, der in eckigen Klammern hinter command steht.
Auf eine genaue Auflistung aller Parameter will ich hier verzichten, da die Scripte selbsterklärend sind. In Nagios selbst könnte das in etwa so aussehen:  
checkcommands.cfg
define command{
  command_name    check_nrpe
  command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -u -t 60 -c $ARG1$ -a $ARG2$
}
  Und in der Definition der Checks:  
define service{
  use                     generic-service-slow
  host_name               san.rs.de
  service_description     Filesystem /fs1
  check_command           check_nrpe!check_fs-abs!DATAMOVER fs1 60
}