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.
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)
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)
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
Références
- site web Uptime Kuma
- documentation Uptime Kuma
- dépôt GIT Uptime Kuma
- site web de Gotify
- documentation de Gotify
Photo by Shaun Darwood on Unsplash