
Für jeden der mit Webserver zu tun hat, ist es von Interesse diesen zu Überwachen. In diesem Fall will ich prüfen, dass meine owncloud Installation verfügbar ist. Dafür braucht ihr lediglich eine Icinga Grundinstallation.
Schritt 1: Anlegen der Host Datei
Um unsere owncloud Installation zu überwachen zu können, müssen wir für diese eine Host Datei anlegen.
Dafür wechseln wir als erstes in das Icinga2 conf Verzeichnis.
1 | cd /etc/icinga2/conf.d/hosts/ |
In diesem Verzeichnis befindet sich bereits die localhost.conf aus meinem Artikel zur Überwachung des ersten Hosts. Hier legen wir nun einen zweite Host Datei mit dem Namen owncloud.conf an.
1 | touch owncloud.conf |
In diese Datei wird al erstes mit dem Inhalt der localhost.conf gefüllt. Anschließend wird der Eintrag bei address zur IP Adresse des owncloud Servers geändert und bei allen Services der host_name zu owncloud. Dies sollten dann wie folgt aussehen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | object Host "owncloud"{ import "generic-host" address = "192.168.10.37" vars.os = "Linux" check_command = "hostalive" } object Service "ping4" { host_name = "owncloud" check_command = "ping4" } object Service "swap"{ host_name = "owncloud" check_command = "swap" } object Service "load"{ host_name = "owncloud" check_command = "load" } object Service "ssh"{ host_name = "owncloud" check_command = "ssh" } |
Nach dem speichern der Datei, können wir erstmal den icinga2 Service neustarten. Wird diese ohne Fehler neugestartet funktioniert der Host schonmal und wir können im Icinga Web diesen sehen.
Schritt 2: Erweiterung um den HTTP Check
Nun wollen wir unsere Überwachung noch um den http_check erweitern. Dafür sind zwei Änderungen erforderlich.
Als erstes müssen wir die Host Definition um den folgenden Zusatz erweitern:
1 2 3 | vars.http_vhosts["owncloud"] = { http_uri = "/owncloud" } |
Damit definieren wir für den Host eine Variable, die den Hostnamen um /owncloud erweitert. D.h. wir prüfen den Aufruf 192.168.10.37/owncloud.
Als zweites müssen wir nun am Ende der Datei einen neuen Service definieren. Dies sieht dann wie folgt aus:
1 2 3 4 5 | apply Service for (http_vhost => config in host.vars.http_vhosts) { import "generic-service" check_command = "http" vars += config } |
In der ersten Zeile Verweisen wir auf die zu prüfenden Variable, welche wir in der Host Definition festgelegt haben.
Anschließend wird wie schon bei den anderen Service Definitionen der generic-service importiert. Dann folgt noch das Kommando für den Check.
Wenn wir dies nun speichern und Icinga2 erneut neustarten, dann sehen wir das der Host nun auch die http Überwachung aufführt.
Guten Tag,
wie muss man es konfigurieren, wenn man passend zu Ihrem Beispiel, nicht nur /owncloud sondern eine weitere URL z.B. owncloud2 überwachen möchte?
192.168.10.37/owncloud
192.168.10.37/owncloud2
Habe sehr viele Server, wo ich mehrere URLs auf einem Server überwachen möchte.
Vielen Dank im Voraus.
Hallo =),
dann würdest du einfach
vars.http_vhosts[„owncloud2“] = {
http_uri = „/owncloud2“
}
verwenden.
Gruß
Christian
Hallo Christian,
vielen Dank für deinen Tipp, du hast mir sehr geholfen ;)
Hier meine Konfig, falls jemand mal an einer ähnlichen Hürde steht:
Ausgabe /etc/icinga2/conf.d/hosts# cat test.conf:
object Host „portalserver“ {
import „generic-host“
check_command = „hostalive“
address = „“
vars.notification[„mail“] = {groups = [ „icingaadmins“ ]}
vars.vhosts[„portal1“] = {
http_uri = „/portal1“
http_warn_time = „5“
http_critical_time = „10“
}
vars.vhosts[„portal2“] = {
http_uri = „/portal2“
http_warn_time = „5“
http_critical_time = „10“
}
vars.vhosts[„portal3“] = {
http_uri = „/portal3“
http_warn_time = „5“
http_critical_time = „10“
}
vars.vhosts[„portal4“] = {
http_uri = „/portal4“
http_warn_time = „5“
http_critical_time = „10“
}
vars.vhosts[„portal5“] = {
http_uri = „/portal5“
http_warn_time = „5“
http_critical_time = „10“
}
}
apply Service „http-“ for (http_vhost => config in host.vars.vhosts) {
import „generic-service“
check_command = „http“
vars += config
notes = „HTTP checks for “ + http_vhost
vars.http_vhost = http_vhost
}
Gruß Christoph
Hi Christian,
wie verhält sich folgendes, ein neuer Host, wobei ich diesmal eine URL mit https überwachen möchte?
Es gibt zwei Varianten, jedoch bin ich einfach zu neu im Icinga2-Umfeld, um zu verstehen was besser wäre, da ich ja noch viele weitere Hosts überwachen möchte:
Variante 1:
object Host „neuerHost“{
import „generic-host“
address = „“
check_command = „hostalive“
vars.notification[„mail“] = {groups = [ „icingaadmins“ ]}
vars.vhosts[„portal1“] = {
http_uri = „/portal1“
http_warn_time = „5“
http_critical_time = „10“
vars.http_ssl = true
}
}
Problem bei Variante 1: Das gibt mir einen erfolgreichen Check im Web, jedoch steht als Ausgabe des PlugIns „HTTP OK“. Sollte hier nicht HTTPS stehen? Und wieso geht das jetzt ohne den Bereich „…apply Service…“?
Variante 2:
object Host „neuerHost“ {
import „generic-host“
check_command = „hostalive“
address = „“
vars.notification[„mail“] = {groups = [ „icingaadmins“ ]}
vars.vhosts[„portal1“] = {
http_uri = „/portal1“
vars.http_ssl = true
http_warn_time = „5“
http_critical_time = „10“
}
}
apply Service „httpS“ for (http_vhost => config in host.vars.vhosts) {
import „generic-service“
check_command = „http“
vars += config
notes = „HTTP checks for “ + http_vhost
vars.http_vhost = http_vhost
}
Problem: Auch hier gibt es erfolgreiche Checks, nur wieder mit der Ausgabe des PlugIns „HTTP OK“. Ebenso habe ich jetzt zwei Checks für Portal1 in dieser Variante2 und er legt nun nochmals für mein Beispiel im letzten Post, für alle 5 Portale ein weiteren Check im Web an?
Wie würdest du die Konfig in diesem Fall bauen?
Hi Christian, kannst du mir oben gennante Frage verständlich erklären? Vielen Dank.
Hi,
das dort trotzdem HTTP steht ist normal, da du auf das HTTP Command zugreift. Wenn du willst, dass dort HTTPS es steht, muss du ein Command mit dem Namen HTTPS erstellen und die Parameter für SSL dort setzten.
Gruß
Christian
Hi,
auch wenn der Beitrag schon ziemlich alt ist, ich habe aber trotzdem mal eine Frage.
Und zwar wie ich eine Webseite bei einem Provider wie Strato überwachen kann?
Ich habe versucht dein Beispiel entsprechend zu verwenden, bekomme es aber nicht auf die Reihe.
Meine Hosts-Datei dazu:
object Host „DomainName“{
import „generic-host“
address = „DomainName.de“
vars.os = „Linux“
check_command = „hostalive“
vars.http_vhosts[„DomainName“] = {
http_uri = „/“
}
}
object Service „ping4“ {
host_name = „DomainName“
check_command = „ping4“
}
apply Service for (http_vhost => config in host.vars.http_vhosts) {
import „generic-service“
check_command = „http“
vars += config
}
Als Ergebnis bekomme ich in icinga2 nur „Network Unreachable“.
Ich kann aber keine IP Adresse angeben, da unter der gleichen IP bei Strato hunderte Domains liegen.
Die Seite ist so konfiguriert das Sie nur über „https://DomainName.de“ erreichbar ist.
Ein Ping darauf funktioniert ja auch.
Wo liegt mein Fehler oder ist es generell nicht möglich?