Nagios
Aus Gentoo Linux Wiki
| Firewall • Dienste absichern • Verschlüsselung • alphabetischer Security Index |
Inhaltsverzeichnis |
[Bearbeiten] Einleitung
Der Nagios-Server dient dazu, Netzwerke zu überwachen, inklusive der angeschlossenen Geräte.
Hierzu sind vielfältige Möglichkeiten vorhanden, z.B. kann man über SNMP Systeminformationen wie CPU-Last, Temperaturen, Spannungen, etc. auslesen, als auch neue Informationsquellen selbst einbringen.
Dieses Howto beschäftigt sich damit, einen Nagios mit grafischer Analyse der gesammelten Daten aufzusetzen.
[Bearbeiten] Installation
[Bearbeiten] Voraussetzungen
Das System sollte alle gewollten Protokolle auch unterstützen, wie z.B. SNMP. Nagios selbst braucht keinen Webserver, dieser ist integriert.
Des weiteren habe ich bereits MySQL installiert.
[Bearbeiten] emerge
Mit dem Nagios-Metapackage installiert man automatisch alles, was mit Nagios primär zusammenhängt. Sehen wir uns nun mal die USE-Flags an:
# emerge -pv nagios These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild N ] net-analyzer/fping-2.4_beta2-r1 59 kB [ebuild N ] sys-libs/db-1.85-r2 279 kB [ebuild N ] dev-perl/TermReadKey-2.21 34 kB [ebuild N ] sys-apps/lm_sensors-2.9.2 -sensord 840 kB [ebuild N ] dev-perl/perl-tk-804.027 5,870 kB [ebuild N ] net-analyzer/net-snmp-5.2.1.2-r1 +X -doc -elf +ipv6 +lm_sensors -minimal +perl -rpm (-selinux) -smux +ssl +tcpd 3,779 kB [ebuild N ] dev-perl/Crypt-DES-2.03-r1 14 kB [ebuild N ] perl-core/MIME-Base64-3.05 15 kB [ebuild N ] perl-core/digest-base-1.10 6 kB [ebuild N ] perl-core/Digest-MD5-2.33 43 kB [ebuild N ] dev-perl/libnet-1.19 63 kB [ebuild N ] dev-perl/Digest-SHA1-2.10 37 kB [ebuild N ] dev-perl/Digest-HMAC-1.01-r1 13 kB [ebuild N ] dev-perl/Net-SNMP-5.0.0 77 kB [ebuild N ] net-dns/bind-tools-9.2.5 +ipv6 4,398 kB [ebuild N ] net-analyzer/nagios-plugins-1.4 +ipv6 -ldap +mysql +nagios-dns -nagios-game +nagios-ntp +nagios-ping +nagios-ssh -postgres -samba +snmp +ssl -ups 950 kB [ebuild N ] net-analyzer/nagios-nsca-2.4 53 kB [ebuild N ] media-libs/gd-2.0.32 +X -fontconfig +jpeg +png +truetype 573 kB [ebuild N ] mail-client/mailx-support-20030215 8 kB [ebuild N ] net-libs/liblockfile-1.06 31 kB [ebuild N ] mail-client/mailx-8.1.2.20040524-r1 126 kB [ebuild N ] net-analyzer/nagios-core-1.2-r4 +apache2 -debug +mysql -noweb +perl -postgres 1,587 kB [ebuild N ] net-analyzer/nagios-imagepack-1.0 1,610 kB [ebuild N ] net-analyzer/nagios-nrpe-2.0-r1 -command-args +ssl 50 kB [ebuild N ] net-analyzer/nagios-1.2 0 kB Total size of downloads: 20,525 kB
Interessant sind ipv6, lm_sensors, mysql, snmp, ups und die nagios-* Flags. In meinem Fall soll ein komplettes Servernetz mit verteilten Standorten gemanaget werden, weshalb ich alles außer ldap, nagios-game und postgres aktiviere, da auf MySQL gesetzt wird.
in Bearbeitung
[Bearbeiten] Konfiguration
[Bearbeiten] Apache2
Unter /etc/apache2/modules.d findet sich eine entsprechende Konfigurationsdatei für nagios, also muß dazu nichts mehr getan werden, außer das Modul explizit zu laden.
Dazu sollte die Datei /etc/conf.d/apache2 folgendermaßen geändert werden:
APACHE2_OPTS="-D DEFAULT_VHOST -D SSL -D PHP4 -D NAGIOS"
Wichtig ist natürlich nur das NAGIOS-Modul, die anderen sind je nach Installation und Verwendungszweck optional. Jetzt den Apachen neu starten und weiter.
[Bearbeiten] /etc/nagios/*.cfg
Erstmal habe ich sämtliche vorkompilierten .cfg-Dateien aus dem /usr/share/doc/nagios-core.../sample-configs Verzeichnis nach /etc/nagios kopiert. Unabhängig von diesem Howto bietet es sich an, diese Konfigurationsdateien einfach mal zu lesen, denn die einzelnen Variablen sind sehr ausführlich dokumentiert und helfen oft schon direkt weiter.
Diese sind gezipped, daher tut ein "gunzip *" im /etc/nagios-Verzeichnis Not. Dann sollte noch das "-sample" verschwinden, gebt einfach folgende Zeile wiederum im gleichen Verzeichnis ein:
cd /etc/nagios \ && cp /usr/share/doc/nagios-core-*/sample-configs/* . \ && gzip -dv *.gz \ && rename .cfg-sample .cfg *.cfg-sample
Neuere Nagios-Versionen nutzen bzip2 statt gzip. Der Befehl lautet hier:
cd /etc/nagios \ && cp /usr/share/doc/nagios-core-*/sample-configs/* . \ && bzip2 -dv *.bz2 \ && rename .cfg-sample .cfg *.cfg-sample
[Bearbeiten] /etc/nagios/nagios.cfg
Dies ist die wichtigste Datei. Hier werden alle anderen Dateien mit Pfaden hinterlegt und, ähnlich wie in der httpd.conf, die User und Gruppen, etc. definiert.
Ändert nur, was unbedingt geändert werden muß, erleichtert später die Fehlersuche. Achja, der NAGIOS-Dienst sucht seine Konfiguration direkt unter /etc. Ein Symlink hilft in diesem Fall:
ln -s /etc/nagios/nagios.cfg /etc/nagios.cfg
Außerdem lohnt es sich, für user, hosts und services sogenannte Templates, also Vorlagen anzulegen. Dazu einfach folgendes hinzufügen:
#Now the templates cfg_file=/etc/nagios/templates/contact.cfg cfg_file=/etc/nagios/templates/host.cfg cfg_file=/etc/nagios/templates/service.cfg
Und ich fand es subjektiv besser, die "dependencies" nach "hosts" und "services" zu trennen also:
cfg_file=/etc/nagios/hostdependencies.cfg cfg_file=/etc/nagios/servicedependencies.cfg
Anstelle von
cfg_file=/etc/nagios/dependencies.cfg
[Bearbeiten] /etc/nagios/cgi.cfg
Innerhalb dieser Datei legt man die Rechte zu den einzelnen Modulen (CGI-Module, daher der Name) fest. Um die folgenden Variablen zu nutzen müssen sie zumeist auch einkommentiert werden!
Praktisch ist
show_context_help=1
Um die Authentifizierung generell einzuschalten
use_authentication=1
Nun folgen einige "authorized_for_*"-Variablen, es ist empfehlenswert erstmal überall nur den "nagiosadmin" freizugeben, lockern kann man später immer noch ;)
[Bearbeiten] /etc/nagios/templates/contact.cfg
Folgendes ermöglicht nun, die Vorlagen "contact-template" und "admin-template" in /etc/nagios/contacts.cfg zu verwenden:
define contact {
name contact-template
service_notification_period 24x7
host_notification_period 24x7
service_notification_options c
host_notification_options d
service_notification_commands process-service-perfdata
host_notification_commands process-service-perfdata
register 0
}
define contact {
use contact-template
name admin-template
service_notification_options w,u,r
host_notification_options u,r
service_notification_commands notify-by-email,notify-by-epager
host_notification_commands host-notify-by-email,host-notify-by-epager
}
Dadurch ist es nicht mehr nötig, die hier angegebenen Eigenschaften dort zu setzen.
Das gleiche Prinzip wenden wir nun bei den beiden folgendenan, will heißen die Gemeinsamkeiten die wir haben in den Templates zusammenfassen!
[Bearbeiten] /etc/nagios/templates/host.cfg
define host{
use generic-host
host_name Nagios-Host
alias Nagios-Host
address 192.168.0.2
check_command check-host-alive
max_check_attempts 20
notification_interval 60
notification_period 24x7
notification_options d,u,r
}
[Bearbeiten] /etc/nagios/templates/service.cfg
Wo sind die Templates for sevice.cfg?
[Bearbeiten] Struktur
Zuletzt, und hier gibt's dann leider keine einfache Hilfe mehr, legen wir die Benutzer, Dienste und Rechner an. Dem Zweck entsprehend sind nun die Dateien zu füllen:
* contacts.cfg - Alle Benutzer
* contactgroups.cfg - Benutzergruppen die Benutzer zusammenfassen
* hosts.cfg - Alle Maschinen im Netzwerkverbund
* hostgroups.cfg - Gruppierung anhand z.B. der Firmen, oder der Art, wei z.B. Switche. Ein Host
kann in mehreren Gruppen sein.
* services.cfg - Im Grunde die Protokolle pro Host. Leider gibt es keine Möglichkeit mehrere
Services zusammenzufassen, weshalb dieses nun sehr mühselig wird. Ab Version
2.0 von Nagios wird sich das ändern, ist aber zur Zeit noch beta.
* hostdependencies.cfg - Abhängigkeiten zwischen Server und Client
* servicedependencies.cfg - Abhängigkeiten zwischen Diensten
Alle weiteren habe ich im Moment noch nicht genutzt.
Um die Änderungen zu überprüfen, dient der Befehl
/etc/init.d/nagios checkconfig
Dieser ist sehr erbarmungslos, es sollte jeder Fehler auftauchen der irgendwie vorhanden ist ;)
[Bearbeiten] Verzeichnissicherheit
Um Nagios nun mit dem "nagiosadmin" auch benutzen zu können, muß in den Verzeichnissen /usr/nagios.. /bin, /sbin und /share eine Datei ".htaccess" angelegt werden mit folgendem Inhalt:
AuthName "Nagios Access" AuthType Basic AuthUserFile /etc/apache2/htpasswd.users require valid-user
Und dazu fehlt noch die Datei /etc/apache2/htpasswd.users, die ihr folgendermaßen generiert:
htpasswd2 -c /etc/apache2/htpasswd.users nagiosadmin
Jetzt ist es an der Zeit, das Frontend mal zu testen. Gebt im Browser die Adresse "http://localhost/nagios/" ein. Ihr solltet nun einen Login bekommen und anschließend in Nagios landen.
in Bearbeitung
[Bearbeiten] Plugins
in Bearbeitung
[Bearbeiten] Dokumentation
in Bearbeitung
