Healtchchecks.io - Cron Job überwachen leicht gemacht

Homelab 1. Okt. 2021

Mit der Zeit sammeln sich etliche Cron Jobs auf verschiedenen Linuxservern und verliert schnell den Überblick, ob die Ausführung erfolgreich verlief.

Da kommt healthchecks.io ins Spiel.  Damit lassen sich kinderleicht Checks anlegen, die zum Beispiel per Curl einen Aufruf starten und einen "OK" an den Healthchecks Server zurückgeben und eine Benachrichtigung triggern.

Es gibt zig verschiedene Benachrichtigungstypen wie zum Beispiel Email, Microsoft Teams oder auch Apprise, womit man auch Gotify einbinden kann.

Healthcheck.io Statusseite

Installation per Docker

Ich gehe von einer vorhanden Docker + Docker Compose Installation aus.

Nun legen wir eine docker-compose.yaml an, mit folgenden Inhalt.

---
version: "2.1"
services:
  healthchecks:
    image: ghcr.io/linuxserver/healthchecks
    container_name: healthchecks
    environment:
      - PUID=1000 # User ID
      - PGID=1000 # Gruppen ID 
      - SITE_ROOT=<SITE_ROOT> #The site's top-level URL
      - SITE_NAME=<SITE_NAME> #Seitentitel anpassen
      - DEFAULT_FROM_EMAIL=<DEFAULT_FROM_EMAIL> #Absenderadresse
      - EMAIL_HOST=<EMAIL_HOST> #Emailserver wie z.B. smtp.web.de
      - EMAIL_PORT=<EMAIL_PORT> #bei web.de wäre das 587
      - EMAIL_HOST_USER=<EMAIL_HOST_USER> #Nutzer vom Emailpostfach
      - EMAIL_HOST_PASSWORD=<EMAIL_HOST_PASSWORD> #Email Passwort
      - EMAIL_USE_TLS=<True or False> #muss man prüfen beim Emailanbieter
      - ALLOWED_HOSTS=*
      - SUPERUSER_EMAIL=<SUPERUSER_EMAIL>
      - SUPERUSER_PASSWORD=<SUPERUSER_PASSWORD>
      - REGENERATE_SETTINGS=True/False #optional.Auf True setzen, wenn die local_settings.py überschrieben werden sollen
      - SITE_LOGO_URL=<SITE_LOGO_URL> #optional.
    volumes:
      - <path to data on host>:/config
    ports:
      - 8000:8000 #Port vor : anpassen, falls dieser nicht passt
    restart: unless-stopped

Ich benutze gerne die Linuxserver.io Images. Diese sind immer gut dokumentiert und sehr aktuell. Email Settings sollten selbsterklärend sein. Danach können wir den Container pullen und starten mit folgenden Befehl:

docker-compose up -d

Aufruf der GUI und Account erstellen

Nachdem der Container erfolgreich gestartet ist, kann man diesen in Browser aufrufen und folgende Seite sollte bei euch auftauchen:

http://IPvomDockerHost:8000
Startseite von healthchecks.io

Nun müssen wir oben rechts auf "Sign Up" klicken und eine gültige Emailadresse eintragen. Wenn die Email Settings bei euch korrekt eingetragen sind, sollte eine Email bei euch im Postfach erscheinen und dort den Link anklicken.

Danach sollte man auf folgender Seite landen:

Ersten Check einrichten / anpassen

Wie ihr sehen könnt, ist bereits ein Check angelegt worden. Die "Integrations" gibt an, welcher Benachrichtigungstyp benutzt wird. In diesem Fall ist es die Email. Mit einem Klick auf die drei Punkte ganz rechts, kommen wir zu den Einstellungen.

Einstellungen eines Checks

Die Seite ist wirklich sehr einfach gehalten und die wichtigsten Punkte sind unter "Usage Examples" zu finden und "Schedule"

Wenn wir nun die Beispiele anschauen öffnet sich folgendes Fenster:

Wie man hier sehen kann, findet man viele Möglichkeiten, wie man den Aufruf starten kann.

Wir werden nun einen einfachen Cron Job anlegen auf meinem Seafile Server und diesen mit Healthchecks.io überwachen. Dazu loggen wir uns per SSH ein und rufen mit folgenden Befehl cron auf:

crontab -e

Ganz unten fügen wir nun folgende Zeile ein:

0 2 * * Sun /opt/seafile/seafile-server-latest/seaf-gc.sh  

Dieser Cron Job starten jeden Sonntag um 2 Uhr nachts, eine Garbage Collection.

Nun müssen wir nur noch den zweiten Codeblock aus den Beispielen von Healthchecks.io hinten ran hängen

&& curl -fsS -m 10 --retry 5 -o /dev/null https://hc-ping.com/0527d82e-050b-49d3-95f3-87b6f2a4c761

Das wars dann auch schon.

Zeitplan in Healthchecks.io anpassen

Nachdem wir den Cron Job angelegt haben müssen wir in Healthchecks.io noch festlegen, wann wir die Benachrichtigung erhalten sollen, falls dieser fehlschlägt. Dazu findet man im Check selber folgenden Punkt:

Das würde bedeuten, wenn wir den Check jeden Tag ausführen, hätte der Aufruf eine Stunde Zeit, bis Healthchecks.io einen Fehler auswirft. Da wir nur jede Woche einen Check ausführen müssen wir diesen anpassen und dazu klicken wir auf "Change Schedule"

Es gibt zwei Arten diesen zu ändern. Hier müssen wir nun den oberen Regler auf 1 Week stellen. Die "Grace Time" müssen wir ausloten. Ich weiß das die GC bei mir nur etwa 5 Minuten andauert. Das heißt, wir könnten den Regler weiter nach links schieben. Ich würde das aber in diesem Fall so belassen, falls der Cron Job doch mal länger würde,  bekomme ich nicht direkt eine Meldung.

Man kann den Timer noch granularer einstellen, indem man unten auf "Cron" klickt:

Cron Job - Zeitplan anpassen

Fazit und Ausblick

Wie ihr sehen könnt, ist Healthcheck.io wirklich sehr einfach einzurichten und man hat einen gute Übersicht, ob die Jobs erfolgreich durchliefen.

Im weiteren Tutorial, werde ich auf die Einbindung von Gotify per Apprise eingehen. Wir sind ja immerhin der Selfhosted Podcast und nicht jeder hat einen eigenen Emailserver :)

Falls ihr Probleme oder auch Anregungen habt, schreibt mir gerne bei Twitter oder [email protected]

Liebe Grüße Tobi

Tags

Großartig! Das Abonnement wurde erfolgreich abgeschlossen.
Großartig! Schließen Sie als Nächstes die Kaufabwicklung ab, um vollen Zugriff zu erhalten.
Willkommen zurück! Sie haben sich erfolgreich angemeldet.
Erfolg! Ihr Konto ist vollständig aktiviert, Sie haben jetzt Zugang zu allen Inhalten.