Nagios: Sinnvolle Struktur Hosts, Hostgroups, Services

converge

New Member
Hallo zusammen,

ich ziehe gerade einen neuen Monitoring-Server groß, um den alten mal abzulösen.

Nun ist mir die Nagios-Terminologie bzgl. Hosts nicht so ganz klar.

Ich hätte das eigentlich so verstanden, dass ein Host einem Server entspricht und ich die verschiedenen Subdomains dann über Services überprüfe.
Der check_http-command widerspricht mir hier allerdings etwas.

Entspricht ein Host einem VirtualHost?

Mal angenommen, ich habe einen "server1". Auf diesem liegen 5 vHosts mit Webseiten.

Mache ich nun 5 vHosts in Nagios zu jeweils einem Host und bündele diese in einer Hostgroup "server1"?

Der Server läuft bereits richtig. Es geht mir nur um das Verständnis und die Perfektion.
 
Machen kannst Du beides - "die richtige Lösung" gibt es nicht.

"Üblich" wäre aber host -> (reale oder virtuelle) Server, service -> div. Domains, Apache VHosts, ssh, mail, auf den Hosts, ...

Was am besten, hübschesten, ... hängt aber davon ab, wie Du für Dich es am sinnvollsten strukturiert ansiehst.
 
Besten Dank für Deine Antwort.

Das Problem bei der Konstellation Server = Nagios-Host ist bei mir zumindest folgender:

Angenommen, ich habe einen SERVER1, auf welchem VHOST1 und VHOST2 betrieben werden. Wenn ich nun per check_http überprüfen möchte, ob die Websites erreichbar sind, wird der Hostname mit übergeben. Wenn dieser nicht dem Hostnamen entspricht, funktioniert der check nicht.

z.B.

Code:
define host {
        use                          generic-host
        host_name               name_des_vhosts
        address                    XXX.XXX.XXX.XXX
}

define service {
        host_name               name_des_vhosts
        use                          http-service
        service_description    HTTP check
        check_command        check_http!www.domain1.de
}

define service {
        host_name               name_des_vhosts
        use                          http-service
        service_description    HTTP check
        check_command        check_http!www.domain2.de
}

Per cli funktioniert dies ebenfalls nur mit identischem Host und url:
Code:
/usr/lib/nagios/plugins/check_http -H www.domain1.de -u http://www.domain1.de/ -w 1000 -c 2000 -v

nicht aber mit
Code:
/usr/lib/nagios/plugins/check_http -H www.domain1.de -u http://www.domain2.de/ -w 1000 -c 2000 -v
 
Um es etwas genauer zu beschreiben:

Wenn ich check_http auf eine bestimmte URL zielen möchte, muss der Aufruf ja wie folgt sein:

Code:
check_http -H www.domain1.de -u /pfad/zur/seite

In dieser Konstellation muss ich also pro vHost auf dem Server einen eigenen Host in Nagios anlegen, richtig?
Die Alternative wäre, über ein Nagios-Plugin die Möglichkeit zu implementieren, direkt URLs (unabhängig vom Host) überprüfen zu können. Allerdings möchte ich den Einsatz von Plugins meiden, wenn diese keine wirklichen Mehrwerte zum Nagios-Core bieten.
 
Nö, auch da kannst Du problemlos den Server als Host einrichten und die einzelnen VHosts als Service. Du kannst entweder über AFAIK einen entsprechend gesetzten Header den Service erweitern oder ded. check_commands anlegen für die einzelnen Services.

Aber ja, Du kannst auch ded. Hosts anlegen - wie gesagt, es kommt immer drauf an.

Ich würde es in die Services packen - für mein Empfinden ist man damit am flexiblesten und bekommt am wenigsten Overhead in der Konfig. Es kommt aber immer drauf an, wie bei Dir die allg. Struktur organisiert ist, ...
 
check_command check_http!www.domain2.de

Es hängt meiner Meinung nach davon ab wie check_http definiert ist, bzw. ob es hier Alternativen gibt (kann man zur Not ja selbst definieren).

Bei Debian gibt es z.B.
check_http
check_http_hostname
check_http2
usw. (siehe /etc/nagios-plugins/config/http.cfg)

Mit check_http_hostname sollte es möglich sein vHosts als eigene Services zu einem Host zu definieren.

Ich persönlich tendiere allerdings dazu vHosts als Nagios-Hosts anzulegen und Zusammenhänge/Abhängigkeiten usw. über sonstige Methoden darzustellen (host/servicegruppen, 'parent'-Einträge usw).
 
Last edited by a moderator:
Besten Dank fürs Feedback.

Ich habe nun den Server als einzigen Host angelegt und die Abfrage der jeweiligen vHosts als Service definiert. Die Konfiguration ist dadurch übersichtlicher. Außerdem wurde durch das mehrfache Anlegen eines Nagios-Hosts dann auch mehrfach auf den Server gepingt. Dies hätte ich zwar umgehen können, in dem ich nur einem der Hosts das Pingen erlaubt hätte, aber da wären wir dann beim Thema Overhead.

Das check_http Problem habe ich einfach so gelöst, in dem ich dem Command den Host (-H) einfach als Parameter mit übergebe. Die Magic seitens Nagios war an dieser Stelle unangebracht...
 
Back
Top