Nagios

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der Security Sammlung.
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

'Persönliche Werkzeuge
Andere Sprachen