Healthchecks (Docker) [ThoSch:Wiki]

Benutzer-Werkzeuge

Webseiten-Werkzeuge


thoschwiki:docker:apps:healthchecks

Healthchecks (Docker)

Die Seite befindet sich noch im Aufbau.

Healthchecks ist eine Anwendung zum Monitoren von periodisch ausgeführten Tasks. Auf den zu überwachenden Instanzen laufen periodisch ausgeführte Task (z.B. reine „Ping“-Jobs, BackUp-Jobs), die den Call eines speziellen Webhooks der Healthchecks-Instanz beinhaltet. Sofern diese Call nicht im erwarteten Zeitrahmen erfolgt oder einen Fehlercode übermittelt, wird eine Meldung ausgelöst, die über diverse Kanäle erfolgen kann.

Healthchecks kann selbst gehostet oder als vom Entwickler betriebener Cloud-Service genutzt werden.

Das Selbst-Hosting kann leicht mit Docker erfolgen. Neben der von den Entwickler bereitgestellten Docker-Konfiguration gibt es auch ein sehr gut gepflegtes Image von Linuxserver, das ich bevorzuge.

Image
Docker Hub linuxserver/healthchecks
GitHub linuxserver/docker-healthchecks
Architektur x86-64, armhf, arm64
Software
Projekt Healthchecks
GitHub healthchecks/healthchecks

docker run

Der Container wird wie folgt mit docker run eingerichtet und gestartet:

docker run -d \
  --name=healthchecks \
  -e PUID=1000 \
  -e PGID=1000 \
  -e SITE_ROOT=<SITE_ROOT> \
  -e SITE_NAME=<SITE_NAME> \
  -e DEFAULT_FROM_EMAIL=<DEFAULT_FROM_EMAIL> \
  -e EMAIL_HOST=<EMAIL_HOST> \
  -e EMAIL_PORT=<EMAIL_PORT> \
  -e EMAIL_HOST_USER=<EMAIL_HOST_USER> \
  -e EMAIL_HOST_PASSWORD=<EMAIL_HOST_PASSWORD> \
  -e EMAIL_USE_TLS=<True or False> \
  -e ALLOWED_HOSTS=<ALLOWED_HOSTS> \
  -e SUPERUSER_EMAIL=<SUPERUSER_EMAIL> \
  -e SUPERUSER_PASSWORD=<SUPERUSER_PASSWORD> \
  -e REGENERATE_SETTINGS=True/False \
  -p 8000:8000 \
  -v /path/to/appdata/config:/config \
  --restart unless-stopped \
  ghcr.io/linuxserver/healthchecks

Parameter

Dies sind die wichtigsten Parameter. Sofern sie mit einem „*“ markiert sind, sollte eine Anpassung erfolgen:

Parameter Funktion
-e PUID= * Vorgabe des Users, mit dem die Daten auf dem Docker-Host in die gemounteten Verzeichnisse geschrieben werden.
-e PGID= * Vorgabe des Gruppe, mit der die Daten auf dem Docker-Host in die gemounteten Verzeichnisse geschrieben werden.
-p Port
-v * Volumes, siehe Unterabschnitt Volumes

Bei den weiteren -e-Parametern handelt es sich um die Übergabe von Werten für den automatisierten Aufbau der Konfigurationsdatei local_settings.py (innerhalb des Containers /app/healthchecks/hc/local_settings.py).

Die Bedeutung der wichtigsten Einträge ist hier dokumentiert.

Sofern nicht der Wert REGENERATE_SETTINGS=True gesetzt wird, erfolgt ein einmaliger Aufbau der Datei und Änderungen die später an der Datei vorgenommen werden, bleiben erhalten.
Wird dieser Eintrag jedoch auf True gesetzt, wird die Konfigurationsdatei bei jedem Start mit den vorgegebenen Werten neu aufgebaut.

Persönlich bevorzuge ich die Vorgehensweise, den Container zunächst mit minimalen Vorgaben aufzubauen, zu stoppen und die persistierte local_settings.py dann manuell anzupassen.

In der obigen Darstellung sowie in der Muster-Konfiguration von Linuxserver fehlen die wichtigen Konfigurationseinträge DEBUG, REGISTRATION_OPEN und SECRET_KEY.
Diese Werte sollten unbedingt ergänzt werden.

Volumes

In der Konfiguration werden Volumes in der Regel im folgenden Format angegeben:

<Pfad auf dem Host>:<Pfad im Container>[:<Optionen>]

Die Volumes haben die folgenden Funktionen (maßgeblich ist der Pfad im Container):

Pfad im Container Funktion
/config In diesem Verzeichnis finden sich die Konfigurationsdatei local_settings.py, die SQLite-Datenbank sowie ein Ordner mit Icons.

docker-compose

Der Container wird wie folgt in der docker-compose.yml konfiguriert:

docker-compose.yml
version: "2.1"
services:
  healthchecks:
    image: ghcr.io/linuxserver/healthchecks
    container_name: healthchecks
    environment:
      - PUID=1000
      - PGID=1000
      - SITE_ROOT=<SITE_ROOT>
      - SITE_NAME=<SITE_NAME>
      - DEFAULT_FROM_EMAIL=<DEFAULT_FROM_EMAIL>
      - EMAIL_HOST=<EMAIL_HOST>
      - EMAIL_PORT=<EMAIL_PORT>
      - EMAIL_HOST_USER=<EMAIL_HOST_USER>
      - EMAIL_HOST_PASSWORD=<EMAIL_HOST_PASSWORD>
      - EMAIL_USE_TLS=<True or False>
      - ALLOWED_HOSTS=<ALLOWED_HOSTS>
      - SUPERUSER_EMAIL=<SUPERUSER_EMAIL>
      - SUPERUSER_PASSWORD=<SUPERUSER_PASSWORD>
      - REGENERATE_SETTINGS=True/False
    volumes:
      - /path/to/appdata/config:/config
    ports:
      - 8000:8000
    restart: unless-stopped
In der obigen Darstellung sowie in der Muster-Konfiguration von Linuxserver fehlen die wichtigen Konfigurationseinträge DEBUG, REGISTRATION_OPEN und SECRET_KEY.
Diese Werte sollten unbedingt ergänzt werden.

Integration in Træfik

Der Container kann mit den folgenden Eintragungen in der docker-compose.yml in Træfik integriert werden:

...

version: "2.1"
services:
  healthchecks:
    image: ghcr.io/linuxserver/healthchecks
    container_name: healthchecks
    environment:
      - PUID=1000
      - PGID=1000
      - SITE_ROOT=<SITE_ROOT>
      - SITE_NAME=<SITE_NAME>
      - DEFAULT_FROM_EMAIL=<DEFAULT_FROM_EMAIL>
      - EMAIL_HOST=<EMAIL_HOST>
      - EMAIL_PORT=<EMAIL_PORT>
      - EMAIL_HOST_USER=<EMAIL_HOST_USER>
      - EMAIL_HOST_PASSWORD=<EMAIL_HOST_PASSWORD>
      - EMAIL_USE_TLS=<True or False>
      - ALLOWED_HOSTS=<ALLOWED_HOSTS>
      - SUPERUSER_EMAIL=<SUPERUSER_EMAIL>
      - SUPERUSER_PASSWORD=<SUPERUSER_PASSWORD>
      - REGENERATE_SETTINGS=True/False
    volumes:
      - /path/to/appdata/config:/config
    restart: unless-stopped
        labels:
     - traefik.http.routers.healthchecks.rule=Host(`healthchecks.example.com`)
     - "traefik.http.routers.healthchecks.tls.certResolver=default"
     - "traefik.http.routers.healthchecks.tls=true"

Damit die Anwendung und die Webhooks nicht über den Port 8000, sondern die üblichen Ports für http und https erreichbar ist, erfolgt kein Export des Ports 8000 aus dem Container, sondern in der Træfik-Konfiguration (z.B. /etc/traefik/traefik.yml oder static.yml) wird ein entsprechender Entrypount definiert:

  web-healthchecks:
    address: ":8000"
In der obigen Darstellung sowie in der Muster-Konfiguration von Linuxserver fehlen die wichtigen Konfigurationseinträge DEBUG, REGISTRATION_OPEN und SECRET_KEY.
Diese Werte sollten unbedingt ergänzt werden.

Konfiguration der Anwendung

thoschwiki/docker/apps/healthchecks.txt · Zuletzt geändert: 20.06.2021 18:07 von thosch