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.
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.
Sascha Brockel - 4. Mai 2024 bei 10:53
Sehr guter Hinweis. Werde ich ergänzen, danke!
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 […]