Zum Inhalt springen

Uptime Kuma - Monitoring für Services, Websites und Docker Container

Aus LHlab Wiki
Uptime Kuma Logo

Hier gehe ich auf das Monitoring Tool Uptime Kuma ein, welches sich bestens eignet wenn man selbst seine Webseite, laufende Docker Container oder andere Services überwachen möchte. Uptime Kuma lässt sich bequem als Docker Container starten und super schnell konfigurieren.

Warum Uptime Kuma

Ich war auf der Suche nach einem Monitoring Tool um meine Webseite hier zu überwachen, oder besser die SSL Zertifikate und deren Ablaufdatum. Ich hatte bereits ein Monitoring bei Uptime Robot am laufen. Beim suchen im Netz bin ich dann über Uptime Kuma gestoßen, habe es kurzer Hand hochgefahren und sofort gemerkt das es super durchdacht ist. Das Setup geht super schnell von der Hand und das Konfigurieren des Monitore, samt Benachrichtigungen ebenfalls. Die Liste der Benachrichtungs Methoden ist super lang und reicht von klassischen eMails, über NTFY bis hin zu Telegram. Die Liste der Monitoring Möglichkeiten ist ebenfalls lang:

Uptime Kuma Services

Am besten schaut ihr es euch selbst an!

Docker Setup

Um Uptime Kuma schnell zu starten benötigt ihr lediglich ein docker compose Projekt und die beiden files hier. Ich habe das Ganze in meinen Tools Docker Compose Stack mit eingebaut, in dem unter anderem auch fail2ban, AdGuard Home und watchtower läuft. Legt oder erweitert als erstes die .env Datei:

.env

# Docker Compose Project Name
# max length 11 characters
PROJECT_NAME=tools

# Uptime Kuma Port
UPTIME_KUMA_PORT=3001

# Uptime Kuma Version
UPTIME_KUMA_VERSION=2

# Timezone
TZ=Europe/Berlin

Dann noch den Service, das volume und ggf. Netzwerk via compose.yml konfigurieren: compose.yml

services:
  uptime-kuma:
    image: louislam/uptime-kuma:${UPTIME_KUMA_VERSION:-2}
    restart: unless-stopped
    volumes:
      - data_uptime-kuma:/app/data
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - ${UPTIME_KUMA_PORT:-3001}:3001
    environment:
      - TZ=${TZ:-UTC}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3001"]
      interval: 30s
      retries: 3
      start_period: 10s
      timeout: 5s
    networks:
      - app-nw
      
volumes:
  data_uptime-kuma:

networks:
  app-nw:
    internal: false
    driver: bridge
    driver_opts:
      com.docker.network.bridge.name: app-${PROJECT_NAME}

dann einfach das Ganze starten:

docker compose up -d

Dann greift einfach via http://<yourservername>:3001 zu.

Konfiguration

Beim ersten Aufrufen der Uptime Kuma UI, erscheint der Setup Assistent bei dem ihr als erstes den Datenbank Typ auswählen könnt:

Uptime Kuma Setup 1

Ein Guter Start ist sicherlich die Embedded MariaDB. Man kann aber auch ohne weiters für kleine Installationen SQLite nutzen. Nur bei MariDB/MySQL müsst ihr schon vorher eine Datenbank hochgefahren haben. Dann heißt es ein wenig warten...

Uptime Kuma Setup 2

legt einen User an und vergebt ein Passwort. Und das war es schon, euch begrüßt das Dashboard.

Next Steps:

  • Benachrichtigungen konfigurieren - Usersymbol --> Einstellungen --> Benachrichtigungen
  • Monitor konfigurieren - Neuer Monitor hinzufügen

Da alles meines Erachtens nach sehr intuitiv und einfach ist gehe ich hier nicht weiter darauf ein.

MariaDB als Datenbank

Möchtet ihr eine bestehende oder besser noch einen eigenen Datenbank Container nutzen, so fahrt am besten in eurem Docker Compose Stack eine Datenbank mit hoch. hier ein Beispiel für Uptime Kuma mit einer MariaDB.

.env

# Docker Compose Project Name
# max length 11 characters
PROJECT_NAME=tools

# Uptime Kuma Port
UPTIME_KUMA_PORT=3001

# Uptime Kuma Version
UPTIME_KUMA_VERSION=2

# Maria DB Configuration    
MARIADB_ROOT_PASSWORD=R00tPassword
MARIADB_DATABASE=kuma
MARIADB_USER=uptimekuma
MARIADB_PASSWORD=us3rpa$$word

compose.yml

services:
  uptime-kuma:
    image: louislam/uptime-kuma:${UPTIME_KUMA_VERSION:-2}
    restart: unless-stopped
    depends_on:
      database:
        condition: service_healthy    
    volumes:
      - data_uptime-kuma:/app/data
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - ${UPTIME_KUMA_PORT:-3001}:3001
    environment:
      - TZ=${TZ:-UTC}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3001"]
      interval: 30s
      retries: 3
      start_period: 10s
      timeout: 5s
    networks:
      - app-nw
      - backend-nw

  database:
    image: mariadb:${MARIADB_VERSION:-11.8}
    volumes:
      - data_uptime-kuma_db:/var/lib/mysql
    restart: unless-stopped
    environment:
      - MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-R00tPassword}
      - MARIADB_DATABASE
      - MARIADB_USER
      - MARIADB_PASSWORD
      - TZ=${TZ:-UTC}
    labels:
      com.centurylinklabs.watchtower.enable: true
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "mariadb -u root -p$${MARIADB_ROOT_PASSWORD} -e 'SELECT 1'",
        ]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      backend-nw:
        aliases:
          - db
          
volumes:
  data_uptime-kuma:
  data_uptime-kuma_db:          
          
networks:
  app-nw:
    internal: false
    driver: bridge
    driver_opts:
      com.docker.network.bridge.name: app-${PROJECT_NAME:-mw}
  backend-nw:
    internal: true
    driver: bridge
    driver_opts:
      com.docker.network.bridge.name: be-${PROJECT_NAME:-mw}

Dann wieder einfach die Startseite öffne http://<yourservername>:3001 und MariaDB/MySQL auswählen und eure Datenbank credentials, die ihr in der .env konfiguriert habt, eingeben.

Uptime Kuma Setup MariaDB

Dann wie gehabt einen Benutzer samt Passwort einrichten und loslegen!

Next Steps:

Backup der Datenbank, des Volumes und des Compose Projektes einrichten: