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.gzNun 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 nagiosIm 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/nrpeNach dieser Anpassung muß die Konfiguration des xinetd neu gelesen werden:
# 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
}
[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/sudoersPrinzipiell 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.
%nagios ALL=(ALL) NOPASSWD: ALL
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 90Hierbei 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 90Waren 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"Wie gut zu sehen ist, rufen die Überprüfungen nahezu allesamt Scripte unterhalb von /home/nasadmin/bin auf.
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
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.cfgUnd in der Definition der Checks:
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -u -t 60 -c $ARG1$ -a $ARG2$
}
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
}