Uptime Kuma

Uptime Kuma

Uptime Kuma est un outil de monitoring léger pour vos services hébergés.

Couplé à un service de messages comme Gotify ou Ntfy, il permet aussi de recevoir des notifications push sur smartphone en cas de défaillance. Il fournit également des fonctionnalités de page de status et le taux de disponibilité des services.

Installation

Cette installation repose sur une infra Docker / Traefik existante: voir cet exemple de déploiement

  • Créer un utilisateur système dédié pour l’exécution du processus dans le conteneur Docker
1sudo adduser --system --shell /usr/sbin/nologin --group --disabled-password --home /home/kuma kuma
2
3Adding system user `kuma' (UID 112) ...
4Adding new group `kuma' (GID 120) ...
5Adding new user `kuma' (UID 112) with group `kuma' ...
6Creating home directory `/home/kuma' ...
  • Créer une arborescence dédiée
1sudo mkdir /opt/uptime-kuma && cd $_
2sudo touch docker-compose.yml
  • Adapter le fichier docker-compose/yml (uid/gid, domaine, version de l’image)
 1version: '3.3'
 2services:
 3  uptime-kuma:
 4    image: louislam/uptime-kuma:1.20.2
 5    container_name: uptime-kuma
 6    networks: [traefik_lan]
 7    expose: [3001]
 8    volumes:
 9      - data:/app/data
10      - /var/run/docker.sock:/var/run/docker.sock:ro  //monitor Docker containers
11    restart: unless-stopped
12    environment:
13      - PUID=112
14      - GUID=120
15    labels:
16      - "traefik.enable=true"
17      - "traefik.docker.network=traefik_lan"
18      - "traefik.http.routers.kuma.rule=Host(`status.example.tld`)"
19      - "traefik.http.routers.kuma.entrypoints=websecure"
20      - "traefik.http.routers.kuma.tls=true"
21      - "traefik.http.routers.kuma.tls.certresolver=letsencrypt"
22volumes:
23  data: {}
24networks:
25  traefik_lan:
26    external: true
  • Lancer le conteneur
1docker-compose -f /opt/uptime-kuma/docker-compose.yml up -d

Configuration

La première connexion sur l’interface web permet de créer le compte administrateur de l’application. Il suffit ensuite d’ajouter les différentes sondes (HTTP(S), Ping, TCP, DNS) pour monitorer vos services.

Screenshot Uptime Kuma: add probe

Dans cet exemple:

  • sonde HTTPS
  • contrôle toutes les 5 minutes (service non critique)
  • 2 essais avant de lever une alarme
  • internal d’une minute entre les 2 essais

La ligne /var/run/docker.sock:/var/run/docker.sock:ro du fichier docker-compose.yml permet de surveiller le status des conteneurs qui n’exposent pas directement leurs services sur l’hôte (exemple: les bases de données)

Screenshot Uptime Kuma: add socket

Dans la configuration de la sonde, il est préférable de choisir le nom du conteneur plutôt que son ID qui va changer à la prochaine mise à jour.

Gotify: ajouter un service d’alerte

on profite le l’infra Docker / Traefik existante…

  • Créer une arborescence dédiée
1sudo mkdir /opt/gotify && cd $_
2sudo touch docker-compose.yml
  • Adapter le fichier docker-compose/yml (domaine, version de l’image)
 1version: "3.3"
 2services:
 3  gotify:
 4    image: gotify/server:2.2.4
 5    container_name: gotify
 6    networks: [traefik_lan]
 7    restart: unless-stopped
 8    expose: [80]
 9    environment:
10      - TZ=Europe/paris
11    volumes:
12      - data:/app/data"
13    labels:
14      - "traefik.enable=true"
15      - "traefik.docker.network=traefik_lan"
16      - "traefik.http.routers.gotify.rule=Host(`push.exemple.tld`)"
17      - "traefik.http.routers.gotify.entrypoints=websecure"
18      - "traefik.http.routers.gotify.tls=true"
19      - "traefik.http.routers.gotify.tls.certresolver=letsencrypt"
20volumes:
21  data: {}
22networks:
23  traefik_lan:
24    external: true
  • Lancer le conteneur
1docker-compose -f /opt/gotify/docker-compose.yml up -d
  • Se connecter à l’interface d’administration avec le compte par défaut: admin / admin (à changer rapidement donc)

Configuration

  • onglet USERS: CREATE USER -> saisir un login (ex: prenom-gsm) et un mot de passe
  • se re-connecter avec ce nouvel utilisateur
  • onglet APPS:
    • CREATE APPLICATION -> saisir le nom de l’application (ex: uptime-kuma)
    • remplacer l’icône gopher (utilisé dans les notifications) par celle d’Uptime-Kuma
    • noter le Token (utilisé pour configurer Uptime Kuma)

Screenshot Gotify: add APPS

Configurer les notifications

Dans l’interface d’Uptime Kuma:

  • Cliquer sur l’icône de votre compte en haut à droite -> Paramètres -> notifications -> Créer une notification
    • Type de notification: Gotify
    • Jeton d’application: mettre le Token créé précédemment dans Gotify
    • URL du serveur: mettre l’URL de votre service gotify
  • Modifier vos sondes pour activer la notification

Configurer smartphone

  • Installer le client Gotify depuis votre store préféré (Android et IOS)
  • Configurer l’adresse de votre serveur Gotify et saisir les identifiants créés précédemment

Si tout est bien configuré, vous devez recevoir directement les notifications sur votre smartphone Screenshot Gotify Android

Références

Photo by Shaun Darwood on Unsplash