Uptime Kuma, mein Monitoring Werkzeug

black flat screen tv turned on near black and gray audio component
Ibrahim Boran Control panel and buttons of a cruise ferry in the cockpit. Unspash.org

Für mich ist die Erreichbarkeit von Diensten der von mir betreuten Webseiten und Services sehr wichtig. Hierfür nutze ich nicht nur Icinga2 in Verbindung mit Grafana, sondern auch ein ziemlich simples, aber auch mächtiges Werkzeug. Uptime-Kuma eine Opensource on premise Monitoringsoftware.

Vor längerer Zeit bin ich auf Uptime-Kuma durch einen Zufall gestoßen. Ich schrieb gerade ein Script für die Überwachung von einzelnen Services. In der Natur der Dinge suchte ich als Erleichterung ein Stück Code für mein Script. Hier stieß ich auf Uptime-Kuma und nach einer kurzen Testphase habe ich mein Script natürlich fallengelassen.

Was ist Uptime-Kuma ?

Uptime-Kuma ist ein Monitor, welcher Dienste aufgrund verschiedenen Regeln und Kriterien überwachen und Meldungen über verschiedene Kanäle aussenden kann.

Der Monitor überwacht via Ping, selbstdefinierte Ports, HTTP(s) inklusive Zertifikat, TCP / HTTP(s) Schlüsselwörter, DNS Eintrag und Push die Dienste. Möglich sind aber auch noch Steam Game Server und Docker Container. Zum Thema Steam kann ich aber wenig sagen.

Die Überprüfung via HTTP(s) ermöglicht nicht nur das Bestimmen der Erreichbarkeit eines Ports. Es werden auch, HTTP-Statuscodes, oder bestimmten Text, der im Header, Body, oder Footer enthalten ist, gegengeprüft. Hierzu stehen die bekannten Methoden wie GET, POST etc. zur Verfügung, sowie natürlich auch das Angeben bestimmter Logindaten, falls diese nötig sein sollten. Diese Anfragen lassen sich auch negieren. Auf Wunsch werden auch gleich eine Laufzeitlängenüberprüfung des Verschlüsselungszertifikats vorgenommen.

Für Zammad lässt sich hier zum Beispiel durch eine Überprüfung der Ausgabe der Monitoringseite der Healthstatus des Dienstes relativ leicht auslesen. Hier muss nur ein „healthy:true“ als Keyword für den Test angegeben werden.

Diese Art der Überprüfung von Iciniga Web konnte ich so nicht vornehmen, da von Iciniga eine Übergabe des Cookies überprüft wird und dann eine Weiterleitung erfolgt, der in einem 403 als Statuscode endet. Hier habe ich nur einen Test auf Port 5666 vorgenommen. Hauptsache, Iciniga nimmt die Daten entgegen 😉

IP - - [26/Aug/2022:11:27:53 +0200] "GET / HTTP/1.1" 301 7689 "-" "Uptime-Kuma/1.17.1"
IP - - [26/Aug/2022:11:27:53 +0200] "GET /icingaweb2/ HTTP/1.1" 302 7502 "-" "Uptime-Kuma/1.17.1"
IP - - [26/Aug/2022:11:27:53 +0200] "GET /icingaweb2/authentication/login HTTP/1.1" 302 7537 "-" "Uptime-Kuma/1.17.1"
IP - - [26/Aug/2022:11:27:53 +0200] "GET /icingaweb2/authentication/login?_checkCookie=1 HTTP/1.1" 403 7512 "-" "Uptime-Kuma/1.17.1"

Möglichkeit der Meldungen

Neben E-Mail kann ich auch noch andere Dienste für eine Benachrichtigung konfigurieren. Als Dienste können Alerta, AlertNow, AliyunSMS, Apprise (Unterstützung für 50+ Benachrichtigungsdienste), Bark, ClickSend SMS, DingDing, Discord, Feishu, GoogleChatGoogle Chat (nur Google Workspace), Gorush, Gotify, Home Assistant, Line Messenger, LineNotify, LunaSea, Matrix, Mattermost, ntfy, Octopush, OneBot, PagerDuty, PromoSMS, Pushbullet, Push by Techulus, PushDeer, Pushover, Pushy, Rocket.chat, SerwerSMS.pl,Signal, Slack, Stackfield, Microsoft Teams, Telegram, webhookWebhook, WeCom ausgewählt und angepasst werden.

Ich sollte auch nicht vergessen, die selbst definierbaren Statusseiten zu erwähnen. Sie bieten die Möglichkeit, sich über den Status eines Services via Webbrowser zu informieren, ohne ein Login zu benötigen. Auf diesen Statusseiten habe ich als Administrator die Möglichkeit noch Fließtext, wichtige Meldungen und andere Nachrichten zu hinterlassen. Diese Nachrichten kann ich auch farblich und textlich nach Ihren Eigenschaften wie Info, Warnung etc. formatieren.

Falls ich hier nicht Uptime Kuma in das Netz direkt stellen möchte, kann ich die Statusseite auch selbst abfragen und in ein CMS, eine reine HTML-Datei übernehmen und diese dann zugänglich machen.

Installation

Die Installation ist relativ einfach. Ich selbst nutze privat Portainer und lasse dort Uptime-Kuma mit einem persistenten Volume laufen. In der Arbeit habe ich eine docker-compose.yml geschrieben und lasse dort einen Apache als Proxy den Port 3001 auf Port 443 nach außen reichen.

Fazit

Neben Iciniga und Grafana ist Uptime-Kuma für mich ein sehr wichtiger Dienst, um das Netzwerk und seine Dienste zu überwachen. Es hat einen kleinen Ressourcenbedarf und ich kann sehr schnell eine Informationsquelle für verschiedene Dienste in meinem Netzwerk definieren.

2 Kommentare

  1. Toller Text zu einem tollen Tool.

    Bei mir läuft Uptime-Kuma als Container in einer rootless-Podman-Umgebung. Ich bin begeistert, wie schnell ich mein Heimnetzwerk in der Überwachung hatte.

    Gruß
    Jörg

    • Christian M. Grube 2022-09-07 um 8:23 Antworten

      Danke für den Kommentar Jörg,

      in der Arbeit wird Kuma sehr gut angenommen und hier überwacht es im Moment um die 120 Server und Dienste. Es kommen hier wöchentlich immer wieder neue hinzu.
      Privat habe ich nur 20 Dienste in der Überwachung, aber es ist faszinierend, in welcher regen Entwicklung sich die Software befindet.
      Was mir noch fehlt, ist ein einfaches Überschreiben der CSS mit eigenen Werten. Das Design und die CSS basieren auf Bootstrap und die betreffenden Sass-Dateien befinden sich in https://github.com/louislam/uptime-kuma/blob/master/src/assets/.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.