Nagios installieren und konfigurieren: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 164: | Zeile 164: | ||
dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3 | dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3 | ||
/etc/init.d/nagios3 start</pre></code> | /etc/init.d/nagios3 start</pre></code> | ||
<br /><br /> | |||
==Plugin Remote ausführen== | |||
Jetzt wird es deutlich kniffeliger, da wir nun einen Check auf den Zielrechner direkt durchführen wollen. Einige Plugins müssen auch entsprechend auf dem Zielrechner gestartet werden, da wir eine Information über den Festplattenstatus, den Serverload etc. nur vom jeweilgen Server direkt geliefert bekommen können. | |||
<br /><br /> | |||
Dafür müssen wir unseren Zielrechner erstmal einwenig vorbereiten. Die folgenden Schritte werden somit alle erstmal auf dem Zielserver durchgeführt: | |||
<br /><br /> | |||
'''a)''' Nutzer und Gruppe Nagios erzeugen: | |||
<code><pre> | |||
groupadd -g 9001 nagios | |||
useradd -u 9001 -g nagios -d /home/nagios -m -c "Nagios Monitoring" nagios</pre></code> | |||
'''b)''' Nutzerverzeichnisrechte anpassen: | |||
<code><pre> | |||
chown -R nagios:nagios /home/nagios</pre></code> | |||
'''c)''' Neues Verzeichnis anlegen: | |||
<code><pre> | |||
su nagios | |||
mkdir /home/nagios/.ssh | |||
exit</pre></code> | |||
'''d)''' Plugins installieren: | |||
<code><pre> | |||
apt-get install nagios-plugins</pre></code> | |||
Das wars dann soweit auf dem Zielrechner. Den Rest machen wir wieder vom Nagios Rechner aus: | |||
<br /><br /> | |||
Schlüssel erzeugen: | |||
<code><pre> | |||
su nagios | |||
cd /home/nagios/.ssh | |||
ssh-keygen -b 1024 -f id_dsa -t dsa -N ''</pre></code> | |||
Das hat zum einen den Schlüssel erzeugt. Damit Nagios auch den Zielrechner als "known-hosts" einträgt, loggt Euch einfach kurz in den Zielrechner ein: | |||
<code><pre> | |||
ssh 192.168.0.2</pre></code> | |||
Ihr werdet aufgefordert, den Fingerprint des Zielrechner zu speichern. | |||
<br /><br /> | |||
Jetzt verlasst wieder den Zielrechner: | |||
<code><pre> | |||
exit</pre></code> | |||
Danach den Nutzer nagios: | |||
<code><pre> | |||
exit</pre></code> | |||
Wir schieben nun unseren Schlüssel auf den Zielrechner: | |||
<code><pre> | |||
scp /home/nagios/.ssh/id_dsa.pub 192.168.0.2:/home/nagios/.ssh/authorized_keys</pre></code> | |||
Jetzt nochmal kurz auf unserem Zielrechner die Rechte angepasst: | |||
<code><pre> | |||
chown -R nagios:nagios /home/nagios/.ssh | |||
chmod 700 /home/nagios/.ssh</pre></code> | |||
Das waren soweit erstmal die Vorbereitungen. Wir testen gleich einmal, ob alles klappt. Gebt hierzu auf dem Nagiosrechner folgendes ein: | |||
<code><pre> | |||
su nagios | |||
/usr/lib/nagios/plugins/check_by_ssh -H 192.168.0.2 -i /home/nagios/.ssh/id_dsa -C "/usr/lib/nagios/plugins/check_users -w 10 -c 20"</pre></code> | |||
Das sollte Euch nun anzeigen, wieviele User auf dem Zielrechner eingeloggt sind. Ihr dürft an der Stelle nicht mehr nach irgendeinem Passwort gefragt werden. Sollte das dennoch der Fall sein, dann überprüft bitte Eure Installation. | |||
<br /><br /> | |||
Ihr habt gesehen, dass wir auf dem Nagios Server einen check_by_ssh ausführen und auf dem Zielrechner das entsprechende tatsächliche Plugin. So gestalten wir auch in Zukunft den Aufbau von einem Remote Check. Dies muss aber bevor wir den als normalen Dienst integrieren entsprechend definiert werden. Wir schauen uns dazu wieder das Verzeichnis '''/etc/nagios-plugins/config''' an. Dort sehen wir eine '''load.cfg'''. Diese Datei öffnen wir einfach mal und sehen uns an, was bereits dort definiert ist: | |||
<code><pre> | |||
# 'check_load' command definition | |||
define command{ | |||
command_name check_load | |||
command_line /usr/lib/nagios/plugins/check_load --warning='$ARG1$,$ARG2$,$ARG3$' --critical='$ARG4$,$ARG5$,$ARG6$' | |||
}</pre></code> | |||
Diese definition ist für einen lokalen Check ausgelegt. Wir fügen nun folgende Zeilen darunter ein: | |||
<code><pre> | |||
# 'ssh_check_load' command definition | |||
define command{ | |||
command_name ssh_check_load | |||
command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -i /home/nagios/.ssh/id_dsa -C "/usr/lib/nagios/plugins/check_load --warning=$ARG1$,$ARG2$,$ARG3$ --critical=$ARG4$,$ARG5$,$ARG6$" | |||
}</pre></code> | |||
Ihr seht, dass wir ein neues Kommando gebaut haben, das auf den Aufruf ssh_check_load hört. Wir übernemen im Grunde die alte Kommandozeile und erweitern die um den check_by_ssh Aufruf. Diese Erweiterung ist dann auch für alle anderen Plugins gleich. Die alte Zeile wird dann in Hochkommas " " gefasst und bei den Argumenten $ARGS$ die einfachen Hochkommas ' ' weggelassen. Das ist wichtig, da sonst der Auffruf nicht funktioniert! Auch wenn später innerhalb des Remotebefehls das '''$HOSTADDRESS$''' rein muss, müssen wir die einfachen Hochkommas weglassen! | |||
<br /><br /> | |||
Wir speichern die Änderung und bauen nun den Check in unsere '''/etc/nagios3/conf.d/server1_nagios2.cfg''' ein: | |||
<code><pre> | |||
define service{ | |||
use generic-service | |||
host_name Server1 | |||
service_description Current Load | |||
check_command ssh_check_load!5.0!4.0!3.0!10.0!6.0!4.0 | |||
}</pre></code> | |||
Hinter unserem '''ssh_check_load''' Kommando werden dann die entsprechenden Argumente gesetzt ( '''$ARGS1$ ...''' ) und mit Ausrufezeichen getrennt. | |||
<br /><br /> | |||
Das war's dann auch schon. Startet Nagios neu: | |||
<code><pre> | |||
/etc/init.d/nagios3 reload</pre></code> | |||
<br /><br /> | <br /><br /> |
Version vom 24. Oktober 2012, 17:45 Uhr
Vorwort
Vertrauen ist gut, Kontrolle ist besser ... ein Spruch, der sich gerade was Server betrifft sich immer wieder bewahrheitet. Deswegen ist ein ordentliches Servermonitoring das A und O wenn es darum geht, die darauf laufenden Dienste auch immer im Auge zu behalten und schnell einzuschreiten, wenn es einmal wo kracht. Oder noch besser: Wenn es sogar automatisch wieder ans Laufen gebracht wird und unser Eingreifen nur noch dann gefordert ist, wenn es nicht mehr anders geht.
Um Server zu Überwachen gibt es sicherlich teure Lösungen. Aber wir wollen uns einmal daran halten, was uns die Opensource Welt an Softwaregeschenken macht. Das führt mich zu Nagios, eine freie Servermonitoring Software, die weit verbreitet ist und es eine Vielzahl an Erweiterungen mittlerweile gibt, die einem das Leben noch leichter machen.
Mich hat es zudem interessiert, ob wir auf unserer NSLU2 auch die Chance haben, derartige Software zum Laufen zu bringen.
Dazu habe ich erstmal ein aktuelles Debian (Debian 6 Squeeze) für die ARML Plattform installiert (eine Anleitung dazu findet Ihr hier, doch macht hier nur die Basisinstallation und keine weiteren Dienste! http://myslug.de/index.php?title=Debian_6_auf_der_NSLU2
Wenn Ihr ein Basissystem installiert habt, kann es schonmal los gehen. Wir installieren zuerst ein Standard Nagios über den apt:
Nagios installieren
Um das System auf einem Debian Lenny zu installieren kann der Apt Paketmanager relativ einfach verwendet werden. Auf einem einfachen Basissystem setzt hierzu ein
apt-get install nagios3 nagios-plugins
ab. Die folgenden beiden Abfragen beantwortet einfach mit den jeweiligen Standardvorgaben:
Ansonsten dürfte das Standardsystem damit installiert sein. Der vorgegebene User innerhalb der Standardkonfiguration lautet nagiosadmin.
Ihr werdet dann noch nach einem Admin Passwort gefragt, das via htaccess den Zugriff steuert.
Ihr könnt nun Nagios mit einem Browser unter
http://IP_ODER_DEINE_DOMAINE/nagios3
aufrufen.
Solltet Ihr irgendwelche Konfigurationsdateien von Nagios ändern, dann vergesst nicht, nagios mittels
/etc/init.d/nagios3 reload
neu zu starten.
Erste Änderung nach der Installation von Nagios
Ändern des Homeverzeichnis in der /etc/passwd:
nano /etc/passwd
Suchen nach folgender Zeile:
nagios:x:104:106::/var/run/nagios3:/bin/false
Danach diese in
nagios:x:104:106::/home/nagios:/bin/bash
ändern, bzw. besser alte Zeile auskommentieren und diese neu anlegen. Dadurch wird auch für das Erste ein su auf den User nagios ermöglicht, was wir später für die Erzeugung eines privaten und öffentlichen Schlüssels benötigen.
Nun legen wir das neue Homeverzeichnis an:
mkdir /home/nagios
Die korrekten Nutzerrechte:
chown -R nagios:nagios /home/nagios
Erstes Monitoring
Im Netzwerk befindet sich der Server 192.168.0.2 der Server1 heißen soll. Diesen müssen wir erstmal Nagios bekannt machen. Dazu legen wir im /etc/nagios3/conf.d/ eine neue Konfiguration fest:
touch /etc/nagios3/conf.d/server1_nagios2.cfg
Diese editieren wir und füllen die Datei wie folgt:
define host{
use generic-host
host_name Server1
alias Server1
address 192.168.0.2
}
Diese Datei wird Dreh- und Angelpunkt für unser Monitoring werden. Aber wir bekommen so erstmal noch nichts zu sehen. Also machen wir einfach mal die Datei /etc/nagios3/conf.d/hostgroups_nagios2.cfg auf. Dort schauen wir uns einmal den folgenden Abschnitt an:
# A list of your web servers
define hostgroup {
hostgroup_name http-servers
alias HTTP servers
members localhost
}
Hier ist bereits schon der Monitoringdienst für Webserver vordefiniert. Wenn wir immer wieder die gleichen Dienste für verschiedene Server haben, können wir diese Dienst als eine Gruppe auch hier hinterlegen. Das macht Sinn, wenn es besonders viele Server sind. In unserem Fall wollen wir, dass unser Server auch ein Mitglied der http-server wird und damit ein Monitoring auf den http gemacht wird. Ändert dafür den Abschnitt wie folgt ab:
# A list of your web servers
define hostgroup {
hostgroup_name http-servers
alias HTTP servers
members localhost,Server1
}
Gleiches kann dann auch für die ssh Gruppe usw. gemacht werden. Hierzu müsst Ihr Euch einfach zunächst die fordefinierten Gruppen in dieser Konfigurationsdatei ansehen. Wenn Ihr Eure Änderungen vorgenommen und alles gespeichert habt, müsst Ihr den Nagios wieder neu starten:
/etc/init.d/nagios3 reload
Jetzt sollte Euer Server mit den ersten Diensten im Monitoring sein.
Weitere Dienste einrichten
Im Folgenden werden wir ein paar weitere Dienste einrichten. Diese Dienste werden erstmal recht einfach sein, da sie nicht lokal auf dem Zielrechner ausgeführt werden müssen. Hier bietet sich erstmal der FTP Dienst an.
Jetzt möchten wir erstmal wissen, wie dieser Check genau aussieht und ob dieser bereits definiert ist. Hierzu spitzen wir einfach einmal in das /etc/nagios-plugins/config Verzeichnis. Dort finden wir eine ftp.cfg Datei, die wir zunächst uns einmal näher ansehen:
# 'check_ftp' command definition
define command{
command_name check_ftp
command_line /usr/lib/nagios/plugins/check_ftp -H '$HOSTADDRESS$'
}
####
# use these checks, if you want to test IPv4 connectivity on IPv6 enabled syste$
####
# 'check_ftp_4' command definition
define command{
command_name check_ftp_4
command_line /usr/lib/nagios/plugins/check_ftp -H '$HOSTADDRESS$' -4
}
Der erstere Aufruf ist für uns interessant. Hier sehen wir, dass das Check Kommando check_ftp heißt.
Jetzt rufen wir wieder unsere /etc/nagios3/conf.d/server1_nagios2.cfg auf. Dort bauen wir folgenden Abschnitt unter unserer Hostdefinition ein:
define service {
host_name Server1
service_description FTP
check_command check_ftp
use generic-service
notification_interval 0
}
Speichert die Änderung und startet den Nagios neu:
/etc/init.d/nagios3 restart
Schaut Euch im Plugins Verzeichnis ein wenig um, dort findet Ihr sicherlich schnell in den Konfigurationsdateien einen Hinweis darauf, welchen Dienst Ihr bereits einfach einbauen könnt.
Allerdings geht nicht jedes Plugin direkt vom Nagios Server aus, sondern muss auf dem Zielserver teilweise remote ausgeführt werden. Das ist ein wenig tricky, aber das schauen wir uns dennoch gleich einmal an.
Externe Kommandos aktivieren
Um später externe Kommandos abzusetzen muss noch etwas gedreht werden.
Zuerst mittels einem Editor die Zeile check_external_commands=1 in der /etc/nagios3/nagios.cfg setzen.
Folgende Befehle dann an der Konsole absetzen:
/etc/init.d/nagios3 stop
dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
/etc/init.d/nagios3 start
Plugin Remote ausführen
Jetzt wird es deutlich kniffeliger, da wir nun einen Check auf den Zielrechner direkt durchführen wollen. Einige Plugins müssen auch entsprechend auf dem Zielrechner gestartet werden, da wir eine Information über den Festplattenstatus, den Serverload etc. nur vom jeweilgen Server direkt geliefert bekommen können.
Dafür müssen wir unseren Zielrechner erstmal einwenig vorbereiten. Die folgenden Schritte werden somit alle erstmal auf dem Zielserver durchgeführt:
a) Nutzer und Gruppe Nagios erzeugen:
groupadd -g 9001 nagios
useradd -u 9001 -g nagios -d /home/nagios -m -c "Nagios Monitoring" nagios
b) Nutzerverzeichnisrechte anpassen:
chown -R nagios:nagios /home/nagios
c) Neues Verzeichnis anlegen:
su nagios
mkdir /home/nagios/.ssh
exit
d) Plugins installieren:
apt-get install nagios-plugins
Das wars dann soweit auf dem Zielrechner. Den Rest machen wir wieder vom Nagios Rechner aus:
Schlüssel erzeugen:
su nagios
cd /home/nagios/.ssh
ssh-keygen -b 1024 -f id_dsa -t dsa -N ''
Das hat zum einen den Schlüssel erzeugt. Damit Nagios auch den Zielrechner als "known-hosts" einträgt, loggt Euch einfach kurz in den Zielrechner ein:
ssh 192.168.0.2
Ihr werdet aufgefordert, den Fingerprint des Zielrechner zu speichern.
Jetzt verlasst wieder den Zielrechner:
exit
Danach den Nutzer nagios:
exit
Wir schieben nun unseren Schlüssel auf den Zielrechner:
scp /home/nagios/.ssh/id_dsa.pub 192.168.0.2:/home/nagios/.ssh/authorized_keys
Jetzt nochmal kurz auf unserem Zielrechner die Rechte angepasst:
chown -R nagios:nagios /home/nagios/.ssh
chmod 700 /home/nagios/.ssh
Das waren soweit erstmal die Vorbereitungen. Wir testen gleich einmal, ob alles klappt. Gebt hierzu auf dem Nagiosrechner folgendes ein:
su nagios
/usr/lib/nagios/plugins/check_by_ssh -H 192.168.0.2 -i /home/nagios/.ssh/id_dsa -C "/usr/lib/nagios/plugins/check_users -w 10 -c 20"
Das sollte Euch nun anzeigen, wieviele User auf dem Zielrechner eingeloggt sind. Ihr dürft an der Stelle nicht mehr nach irgendeinem Passwort gefragt werden. Sollte das dennoch der Fall sein, dann überprüft bitte Eure Installation.
Ihr habt gesehen, dass wir auf dem Nagios Server einen check_by_ssh ausführen und auf dem Zielrechner das entsprechende tatsächliche Plugin. So gestalten wir auch in Zukunft den Aufbau von einem Remote Check. Dies muss aber bevor wir den als normalen Dienst integrieren entsprechend definiert werden. Wir schauen uns dazu wieder das Verzeichnis /etc/nagios-plugins/config an. Dort sehen wir eine load.cfg. Diese Datei öffnen wir einfach mal und sehen uns an, was bereits dort definiert ist:
# 'check_load' command definition
define command{
command_name check_load
command_line /usr/lib/nagios/plugins/check_load --warning='$ARG1$,$ARG2$,$ARG3$' --critical='$ARG4$,$ARG5$,$ARG6$'
}
Diese definition ist für einen lokalen Check ausgelegt. Wir fügen nun folgende Zeilen darunter ein:
# 'ssh_check_load' command definition
define command{
command_name ssh_check_load
command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -i /home/nagios/.ssh/id_dsa -C "/usr/lib/nagios/plugins/check_load --warning=$ARG1$,$ARG2$,$ARG3$ --critical=$ARG4$,$ARG5$,$ARG6$"
}
Ihr seht, dass wir ein neues Kommando gebaut haben, das auf den Aufruf ssh_check_load hört. Wir übernemen im Grunde die alte Kommandozeile und erweitern die um den check_by_ssh Aufruf. Diese Erweiterung ist dann auch für alle anderen Plugins gleich. Die alte Zeile wird dann in Hochkommas " " gefasst und bei den Argumenten $ARGS$ die einfachen Hochkommas ' ' weggelassen. Das ist wichtig, da sonst der Auffruf nicht funktioniert! Auch wenn später innerhalb des Remotebefehls das $HOSTADDRESS$ rein muss, müssen wir die einfachen Hochkommas weglassen!
Wir speichern die Änderung und bauen nun den Check in unsere /etc/nagios3/conf.d/server1_nagios2.cfg ein:
define service{
use generic-service
host_name Server1
service_description Current Load
check_command ssh_check_load!5.0!4.0!3.0!10.0!6.0!4.0
}
Hinter unserem ssh_check_load Kommando werden dann die entsprechenden Argumente gesetzt ( $ARGS1$ ... ) und mit Ausrufezeichen getrennt.
Das war's dann auch schon. Startet Nagios neu:
/etc/init.d/nagios3 reload