Modius - Techblog

  • Ansible
  • Docker
  • DevOps
  • Gastautor werden
  • Newsletter abonnieren
  • Über Mich
  • Kontakt

Icinga2 – Wie überwache eine externe Seite

Veröffentlicht am 12. Juni 2015 von Christian Piazzi 7 Kommentare , Aktualisiert am 30. Dezember 2017
Geschätzte Lesezeit: 1 Minute

Logo von Icinga 2
Icinga 2 Logo

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.

Shell
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:

Shell
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.

Icinga 2 Frontend - owncloud

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:

Shell
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:

Shell
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.

Icinga 2 Frontend - check_http

Kategorie: Linux, Monitoring, Sicherheit Tags: check_http, Hosts, http, Icinga 2, Icinga2, Monitoring, owncloud, Service, Überwachung, Variablen

Über Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Kommentare

  1. ChB meint

    11. Oktober 2017 um 14:41

    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.

    Antworten
    • Christian Piazzi meint

      13. Oktober 2017 um 07:49

      Hallo =),

      dann würdest du einfach

      vars.http_vhosts[„owncloud2“] = {
      http_uri = „/owncloud2“
      }

      verwenden.

      Gruß
      Christian

      Antworten
  2. ChB meint

    13. Oktober 2017 um 10:18

    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

    Antworten
  3. ChB meint

    13. Oktober 2017 um 11:32

    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?

    Antworten
  4. ChB meint

    23. Oktober 2017 um 14:34

    Hi Christian, kannst du mir oben gennante Frage verständlich erklären? Vielen Dank.

    Antworten
    • Christian Piazzi meint

      24. Oktober 2017 um 08:25

      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

      Antworten
  5. Christopher Böhm meint

    6. Juni 2019 um 20:32

    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?

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

  • Linux
  • Internet, Bloggen & Co
  • Programmierung
  • Sicherheit
  • Netzwerk & Co
  • Mikrokontroller
  • Windows

Beliebte Artikel

  • Docker Container – anzeigen, starten, stoppen und löschen
  • Nextcloud https mit self-signed Zertifikat einrichten
  • ioBroker auf dem Raspberry Pi installieren und konfigurieren
  • Fritzbox 7490 – VPN mit dynDNS einrichten
  • Eigenes Docker Images mit Dockerfile erstellen

Neueste Kommentare

  • Keksiminer bei Minecraft Bukkit Server – dynmap installieren und konfigurieren
  • Thorben bei Nextcloud https mit self-signed Zertifikat einrichten
  • Sepp bei Automatisierte Dokumentation von Python Projekten mit sphinx
  • Sascha bei Arduino – 4fach 7-Segmentanzeige mit Schieberegister
  • Sylvio Seidel bei Nextcloud https mit self-signed Zertifikat einrichten

Werbung

Archive

Kontakt, Datenschutz und Impressum

  • Kontakt
  • Datenschutz
  • Impressum

Schlagwörter

Anleitung Ansible Apache Apple App Store Automatisierung Blogparade C++ Centos centos 7 CentOS7 Container Datenbank DevOps Docker Dr. Racket Dr. Scheme funktional Gastartikel Google HowTo httpd Icinga2 Icinga 2 Installation itsm Linux Minecraft Monitoring mooc MySQL owncloud PHP Plugin Programmierung python Raspberry Pi Schritt für Schritt Server Sicherheit Tutorial Ubuntu Update Windows Wordpress

Copyright © 2022 · Outreach Pro on Genesis Framework · WordPress · Anmelden