Voraussichtliche Lesedauer: 5 Minuten

Was ist Healthchecks.io?

Healthchecks.io ist ein Monitoring-Service, der speziell dafür entwickelt wurde, periodisch ausgeführte Aufgaben (wie Cronjobs) zu überwachen. Es funktioniert, indem es auf ein „Lebenszeichen“ deiner Skripte wartet – einen sogenannten „Ping“. Wenn ein geplantes Skript erfolgreich ausgeführt wird, sendet es einen Ping an Healthchecks.io. Bleibt dieser Ping aus, weiß das Tool, dass etwas schiefgegangen ist, und sendet dir eine Benachrichtigung. Diese einfache, aber effektive Methode sorgt dafür, dass du immer im Bilde bist, falls ein Prozess nicht wie erwartet funktioniert.

Die technischen Grundlagen von Healthchecks sind:

  • Python 3.10+
  • Django 4.2
  • PostgreSQL oder MySQL

Healthchecks steht unter der BSD 3-Klausel-Lizenz und ist somit Open-Source-Software.

Das Tool ist als gehosteter Dienst unter https://healthchecks.io/ verfügbar. Zudem sind ein Dockerfile und vorgefertigte Docker-Images erhältlich.

Warum Healthchecks.io nutzen?

Zuverlässige Überwachung

Healthchecks.io ist ideal, um sicherzustellen, dass wichtige Aufgaben wie Datenbank-Backups, Systemupdates oder andere automatisierte Skripte tatsächlich ausgeführt werden.

Flexibilität und Integration

Du kannst Healthchecks.io unter anderem durch Apprise mit verschiedenen Benachrichtigungsdiensten wie E-Mail, Slack, Discord und vielen anderen integrieren. Das sorgt für Flexibilität und ermöglicht es dir, Alarme so zu erhalten, wie es für dich am sinnvollsten ist. Für zusätzliche Sicherheit bietet Healthchecks Unterstützung für Zwei-Faktor-Authentifizierung (2FA) mit WebAuthn.

Einfachheit und Zugänglichkeit

Mit seiner benutzerfreundlichen Schnittstelle ist Healthchecks.io einfach zu bedienen und einzurichten. Du benötigst keine tiefgreifenden IT-Kenntnisse, um von diesem Tool zu profitieren.

Einrichtung von Healthchecks.io

Die Einrichtung ist einfach und innerhalb von 10 Minuten erledigt. Besonders dann, wenn man das nachfolgende nur noch per Copy-Paste eingeben muss.

Schritt 1: Einrichtung per Docker

Die Einrichtung kann man wie gewohnt per Docker vornehmen. Dazu müsst ihr lediglich Docker und im besten Fall Docker Compose installiert haben. Weitere Einrichtungsmöglichkeiten findet ihr auf der GitHub-Seite des Tools. Für das Beispiel nutzen wir die für Linux-Server optimierte und gewartete Version von Healthchecks.io, die linuxserver.io bereitstellt.

Nachfolgend die docker-compose.yml, die es zu nutzen gilt. Unter dem Block gehe ich auf die Umgebungsvariablen ein.

services:
  healthchecks:
    image: lscr.io/linuxserver/healthchecks:latest
    container_name: healthchecks
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - SITE_ROOT=
      - SITE_NAME=Healthchecks
      - [email protected]
      - SUPERUSER_PASSWORD=starkesPasswort
      - ALLOWED_HOSTS= #optional
      - APPRISE_ENABLED=True #optional
      - CSRF_TRUSTED_ORIGINS= #optional
      - DEBUG=True #optional
      - DEFAULT_FROM_EMAIL= #optional
      - EMAIL_HOST= #optional
      - EMAIL_PORT= #optional
      - EMAIL_HOST_USER= #optional
      - EMAIL_HOST_PASSWORD= #optional
      - EMAIL_USE_TLS= #optional
      - INTEGRATIONS_ALLOW_PRIVATE_IPS= #optional
      - PING_EMAIL_DOMAIN= #optional
      - RP_ID= #optional
      - SECRET_KEY= #optional
      - SITE_LOGO_URL= #optional
    volumes:
      - /path/to/healthchecks/config:/config
    ports:
      - 8000:8000
      - 2525:2525 #optional for SMTP pings
    restart: unless-stopped

Schritt 1: Account Erstellen

Zuerst docker-compose.yml anlegen und den Code von oben einfügen. Alle Werte, die mit #optional gekennzeichnet sind, sind nicht notwendig bei der Einrichtung. SITE_ROOT muss die Adresse sein unter der Healthchecks später aufgerufen wird. Angenommen euer Server läuft auf IP-Adresse 192.168.178.44. Dann tragt ihr bei SITE_ROOT http://192.168.178.44:8000 ein (sofern ihr den Port nicht verändert, ansonsten natürlich diesen angeben). Also letztendlich die Top-Level-URL der Website und der Port, an dem sie abgehört wird.

Mit SITE_NAME gebt ihr ein was im Browser für die Seite als Name gelten soll. Das kann einfach Healthchecks sein. Logischerweise stehen SUPERUSER_EMAIL und SUPERUSER_PASSWORT für den initialen Nutzer. Empfehlenswert wäre es noch für die komplette Vielfalt an Benachrichtigungsdiensten Apprise durch APPRISE_ENABLED=True einzuschalten. Den Rest könnt ihr für erweiterte Optionen wie E-Mail Pings auf der GitHub-Seite nachschauen.

Schritt 2: Einrichten eines Checks

Nach dem Login mit deinem frisch erstellten Superuser kannst du einen neuen „Check“ einrichten. Das ist eine Art Überwachungsauftrag für ein bestimmtes Skript oder eine Aufgabe.

Schritt 3: Konfigurieren der Benachrichtigungen

Konfiguriere, wie und wann du benachrichtigt werden möchtest, falls ein Skript nicht wie geplant ausgeführt wird. Du kannst zwischen verschiedenen Diensten wie E-Mail, Slack oder Discord wählen. Dafür musst du natürlich eine Konfiguration hinterlegen, die aber ebenfalls relativ simpel und direkt in der App erklärt ist.

Schritt 4: Integrieren in deine Skripte

Integriere den generierten Ping-URL in deine Skripte. Das ist oft so einfach wie das Hinzufügen eines HTTP-Requests am Ende deines Skripts. Sprich du gehst beispielsweise in den Bash-Skript und schaust, ob der letzte Befehl auch erfolgreich war und pingst dann an die gegebene Adresse.

Beispiel:

if [ $? -eq 0 ]; then
    curl -fsS -m 10 --retry 5 -o /dev/null http://192.168.178.44:8000/ping/a192ec54-ab0a-4944-9d2b-4a1c378400a0
fi

Das wäre ein Ausschnitt aus einem Shell-Skript bei dem geprüft wird, ob der letzte Befehl erfolgreiche war, sprich eine 0 ausgegeben wurde. Andernfalls würde eine 1 ausgegeben werden und das if-Statement würde nicht zum Tragen kommen und der Ping würde aufgrund des Fehlers nicht versendet werden und Healthchecks würde uns benachrichtigen.

Damit wäre die Einrichtung auch schon erledigt und du kannst deine Skripte monitoren.

Nachtrag zur Datenbank

Ein Nutzer in den Kommentaren hat darauf hingewiesen, dass die standardmäßige sqlite Datenbank über die Zeit sehr wachsen kann. Man kann das durch einen Cronjob lösen, der regelmäßig die Benachrichtigungen leert:

healthchecks.io ist ein wunderbares Tool und lässt sich sehr gut auf einem eigenen Server hosten. Man muss allerdings mit der sqlite Datenbank aufpassen. Bei mir ist die DB nach mehreren Jahren auf 100GB angeschwollen. Mit der Konsequenz dass sie nach dem letzten Update reichlich Fehler produziert. => Unbedingt regelmäßig die maintenance machen z.B. „./manage.py prunenotifications“ oder evtl gleich auf postgres gehen.

Nutzer in den Kommentaren

Der Befehl würde folgendermaßen aussehen:

docker exec -u root healthchecks /app/healthchecks/manage.py prunenotifications

Umsetzung im YouTube-Video

Fazit

Healthchecks.io ist ein mächtiges und gleichzeitig einfach zu bedienendes Tool für alle, die ihre automatisierten Prozesse und Skripte effektiv überwachen möchten. Es bietet eine großartige Mischung aus Flexibilität, Zuverlässigkeit und Benutzerfreundlichkeit. Mit Healthchecks.io kannst du sicherstellen, dass deine automatisierten Aufgaben reibungslos ablaufen und du bei Problemen sofort informiert wirst.

Die Anzeige der Produkte wurde mit dem affiliate-toolkit WordPress Plugin umgesetzt.
Kategorien: Docker

3 Kommentare

Fred - 4. Mai 2024 bei 10:40

healthchecks.io ist ein wunderbares Tool und lässt sich sehr gut auf einem eigenen Server hosten. Man muss allerdings mit der sqlite Datenbank aufpassen. Bei mir ist die DB nach mehreren Jahren auf 100GB angeschwollen. Mit der Konsequenz dass sie nach dem letzten Update reichlich Fehler produziert. => Unbedingt regelmäßig die maintenance machen z.B. „./manage.py prunenotifications“ oder evtl gleich auf postgres gehen.

Spotify mit n8n: Discover Weekly dauerhaft speichern - Sascha Brockel - 10. Juni 2024 bei 12:05

[…] haben in einem Blogartikel namens Healthchecks einrichten – Cronjobs, Skripte & mehr zuverlässig überwachen bereits über das Tool Healthchecks gesprochen. Auch diese Automatisierung läuft durch einen […]

Schreibe einen Kommentar

Avatar-Platzhalter

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

de_DE