Aller au contenu

Uptime Kuma - Monitoring de disponibilité

Vue d'ensemble

Uptime Kuma est une solution open-source de monitoring d'uptime et de disponibilité des services. C'est l'alternative auto-hébergée à UptimeRobot, Pingdom ou StatusCake.

URL d'accès : http://192.168.1.82:3001

📋 Configuration des moniteurs : Voir uptime-kuma-monitors.md pour la liste complète des services à surveiller et les instructions de configuration étape par étape.

Caractéristiques

Types de monitoring supportés

  • HTTP(S) : Surveillance d'endpoints web avec codes de statut
  • TCP Port : Vérification de ports ouverts (bases de données, services)
  • Ping : Test ICMP de disponibilité réseau
  • DNS : Vérification de résolution DNS
  • Docker Container : Surveillance de conteneurs Docker
  • Steam Game Server : Monitoring de serveurs de jeux
  • Keyword : Détection de mots-clés dans réponses HTTP

Dashboard et visualisation

  • Status en temps réel : Couleurs (vert/rouge) pour chaque service
  • Graphiques d'uptime : 24h, 7j, 30j, 90j
  • Historique détaillé : Logs de tous les checks
  • Temps de réponse : Graphiques de latence
  • Certificats SSL : Alerte avant expiration

Notifications

  • Intégrations : Slack, Discord, Telegram, Email, Webhooks
  • Alertes personnalisables : Seuils, fréquence, escalation
  • Status page publique : Page de statut partageable
  • Multi-utilisateurs : Gestion d'équipe avec permissions

Installation

Déploiement automatique via GitLab CI/CD

Le playbook Ansible install-uptime-kuma.yml est exécuté automatiquement à chaque push sur main.

Job GitLab : ansible:install-uptime-kuma (stage apply)

Installation manuelle (si besoin)

cd /opt/probatiovault-ia-server/ansible
ansible-playbook -i inventory/hosts playbooks/install-uptime-kuma.yml

Vérification de l'installation

# Vérifier le conteneur Docker
docker ps | grep uptime-kuma

# Logs temps réel
docker logs -f uptime-kuma

# Accès web
curl -I http://192.168.1.82:3001

Architecture

Déploiement Docker

Docker Host (192.168.1.82)
  └─ uptime-kuma (container)
       ├─ Port: 3001 → 3001 (internal)
       ├─ Volume: /data/uptime-kuma → /app/data
       └─ Image: louislam/uptime-kuma:1

Stockage des données

/data/uptime-kuma/
  └── kuma.db              # Base de données SQLite (monitors, notifications, logs)

Toutes les configurations, historiques et alertes sont stockées dans une seule base SQLite.

Premier démarrage

1. Créer le compte admin

La première personne à s'inscrire devient automatiquement admin.

  1. Ouvrir http://192.168.1.82:3001
  2. Page d'accueil "Setup" s'affiche
  3. Remplir :
  4. Username : admin (ou votre pseudo)
  5. Password : Mot de passe sécurisé (min 8 caractères)
  6. Cliquer "Create"

Vous êtes maintenant Admin avec accès complet.

2. Ajouter le premier monitor

  1. Cliquer "+ Add New Monitor" (bouton en haut)
  2. Remplir les champs :
  3. Monitor Type : HTTP(s)
  4. Friendly Name : Ollama API
  5. URL : http://192.168.1.82:11434/api/tags
  6. Heartbeat Interval : 60 secondes
  7. Retries : 1
  8. Cliquer "Save"

Le monitor apparaît dans le dashboard avec un statut Up (vert) si le service est accessible.

3. Configurer les notifications

  1. Aller dans Settings (⚙️ en haut à droite)
  2. Cliquer Notifications
  3. Add New Notification :
  4. Notification Type : Slack, Discord, Email, etc.
  5. Friendly Name : Slack ProbatioVault
  6. Configurer les credentials (Webhook URL, etc.)
  7. Test la notification
  8. Cliquer "Save"

4. Associer une notification à un monitor

  1. Éditer un monitor existant
  2. Section Notifications en bas
  3. Cocher la notification configurée
  4. Cliquer "Save"

Vous recevrez désormais des alertes si ce service devient indisponible.

Utilisation

Monitors recommandés pour ProbatioVault-IA-Server

📋 Guide complet : uptime-kuma-monitors.md

Service Type URL Intervalle
Ollama API HTTP(s) http://192.168.1.82:11434/api/tags 60s
Open WebUI HTTP(s) http://192.168.1.82:3000 60s
ComfyUI HTTP(s) http://192.168.1.82:8188 60s
JupyterLab HTTP(s) http://192.168.1.82:8889 60s
Nerfstudio Viewer HTTP(s) http://192.168.1.82:7007 120s
Netdata HTTP(s) http://192.168.1.82:19999 60s
Plex HTTP(s) http://192.168.1.82:32400/web 120s
Homer HTTP(s) http://192.168.1.82:8080 60s

Configuration automatique : Le playbook configure-uptime-kuma.yml génère un guide de configuration détaillé dans /data/uptime-kuma/CONFIGURATION.md.

Configuration manuelle rapide :

Pour chaque service : 1. + Add New Monitor 2. Monitor Type : HTTP(s) 3. Friendly Name : [nom du service] 4. URL : [URL ci-dessus] 5. Heartbeat Interval : [intervalle] 6. Save

Types de monitors avancés

1. HTTP(s) avec validation de contenu

Pour vérifier qu'une page contient un texte spécifique :

  • Monitor Type : HTTP(s) - Keyword
  • URL : http://192.168.1.82:8080
  • Keyword : "ProbatioVault IA Server" (titre Homer)
  • Heartbeat Interval : 300 (5 min)

2. TCP Port monitoring

Pour surveiller un port sans HTTP :

  • Monitor Type : TCP Port
  • Hostname : 192.168.1.82
  • Port : 5432 (exemple: PostgreSQL)
  • Heartbeat Interval : 60

3. Ping monitoring

Pour vérifier la disponibilité réseau :

  • Monitor Type : Ping
  • Hostname : 192.168.1.82
  • Heartbeat Interval : 30

4. Docker Container monitoring

Pour surveiller un conteneur Docker local :

  • Monitor Type : Docker Container
  • Docker Host : (laisser vide pour localhost)
  • Container Name : open-webui
  • Heartbeat Interval : 60

Certificats SSL

Uptime Kuma surveille automatiquement l'expiration des certificats SSL/TLS.

  1. Ajouter un monitor HTTPS
  2. Section SSL Certificate Expiry :
  3. Ignore TLS/SSL error : ❌ (décocher)
  4. Certificate Expiry Notification : ✅ (cocher)
  5. Days Before Expiry : 7 (alerte 7 jours avant)

Vous recevrez une alerte si le certificat expire bientôt.

Status Page (page de statut publique)

Créer une page de statut accessible publiquement :

  1. Aller dans Status Pages
  2. Cliquer "+ Add New Status Page"
  3. Remplir :
  4. Title : ProbatioVault Services Status
  5. Slug : probatiovault (URL : /status/probatiovault)
  6. Description : Real-time status of ProbatioVault IA Server
  7. Add a Group :
  8. Name : "Core Services"
  9. Ajouter les monitors : Ollama, Open WebUI, Plex
  10. Publish : ✅
  11. Cliquer "Save"

La page de statut est accessible à : http://192.168.1.82:3001/status/probatiovault

Avantages : - Partage public de l'état des services - Aucune authentification requise pour voir - Historique d'uptime visible

Gestion des notifications

Slack

  1. Settings → Notifications → + Add New Notification
  2. Notification Type : Slack
  3. Webhook URL : Obtenir depuis Slack Incoming Webhooks
  4. Aller sur https://api.slack.com/apps
  5. Create New App → Incoming Webhooks → Add New Webhook
  6. Copier l'URL
  7. Channel : #monitoring (ou autre)
  8. Username : Uptime Kuma
  9. Test → doit envoyer un message dans Slack
  10. Save

Discord

  1. Settings → Notifications → + Add New Notification
  2. Notification Type : Discord
  3. Discord Webhook URL :
  4. Discord → Server Settings → Integrations → Webhooks → New Webhook
  5. Copier l'URL
  6. Username : Uptime Kuma
  7. Test → doit envoyer un message dans Discord
  8. Save

Email (SMTP)

  1. Settings → Notifications → + Add New Notification
  2. Notification Type : Email (SMTP)
  3. Hostname : smtp.gmail.com (ou autre)
  4. Port : 587 (TLS) ou 465 (SSL)
  5. Security : TLS ou SSL/TLS
  6. Username : votre-email@gmail.com
  7. Password : App Password (Gmail) ou mot de passe
  8. From Email : votre-email@gmail.com
  9. To Email : destinataire@example.com
  10. Test → doit envoyer un email
  11. Save

Note Gmail : Utilisez un App Password, pas votre mot de passe principal.

Webhook (personnalisé)

Pour intégrations custom (Zapier, n8n, etc.) :

  1. Settings → Notifications → + Add New Notification
  2. Notification Type : Webhook
  3. POST URL : https://your-webhook-url.com/endpoint
  4. Content Type : application/json
  5. Body :
{
  "monitor": "{monitorName}",
  "status": "{status}",
  "message": "{msg}",
  "time": "{time}"
}
  1. Test → doit envoyer une requête POST
  2. Save

Gestion des utilisateurs

Ajouter un utilisateur

  1. Settings → Users
    • Add New User
  2. Remplir :
  3. Username : nouveau-user
  4. Password : mot-de-passe-sécurisé
  5. Role : User (ou Admin)
  6. Save

Rôles : - Admin : Tous les droits (création monitors, notifications, users) - User : Lecture seule, ne peut pas modifier

Désactiver un utilisateur

  1. Settings → Users
  2. Trouver l'utilisateur
  3. Cliquer Disable

L'utilisateur ne peut plus se connecter.

API REST

Uptime Kuma expose une API WebSocket pour intégrations programmatiques.

Connexion WebSocket

const io = require('socket.io-client');

const socket = io('http://192.168.1.82:3001', {
  auth: {
    username: 'admin',
    password: 'votre-mot-de-passe'
  }
});

socket.on('connect', () => {
  console.log('Connected to Uptime Kuma');
});

socket.on('monitorList', (monitors) => {
  console.log('Monitors:', monitors);
});

Endpoints disponibles

Événement Description
login Authentification
monitorList Liste des monitors
heartbeatList Liste des heartbeats (pings)
addMonitor Ajouter un monitor
deleteMonitor Supprimer un monitor
getMonitor Obtenir les détails d'un monitor

Documentation complète : https://github.com/louislam/uptime-kuma/wiki/API

Intégration Homer

Uptime Kuma est référencé dans le dashboard Homer :

- name: "Monitoring & Logs"
  items:
    - name: "Uptime Kuma"
      logo: "assets/tools/uptime-kuma.png"
      subtitle: "Service uptime monitoring"
      url: "http://192.168.1.82:3001"

Accès depuis Homer : http://192.168.1.82:8080

Troubleshooting

Uptime Kuma ne démarre pas

# Vérifier le conteneur
docker ps -a | grep uptime-kuma

# Si absent, le relancer
docker start uptime-kuma

# Vérifier les logs
docker logs uptime-kuma

Monitors toujours "Down"

# Vérifier que le service cible est accessible depuis le serveur
curl http://192.168.1.82:11434/api/tags

# Vérifier les logs Uptime Kuma
docker logs uptime-kuma --tail 50

# Redémarrer Uptime Kuma
docker restart uptime-kuma

Notifications ne fonctionnent pas

  1. Tester la notification :
  2. Settings → Notifications → Edit → Test
  3. Vérifier le message d'erreur

  4. Vérifier les credentials :

  5. Webhook URL valide
  6. SMTP password correct
  7. Channel/Email exist

  8. Vérifier les logs :

docker logs uptime-kuma | grep -i "notification"

Erreur "Database is locked"

# Arrêter Uptime Kuma
docker stop uptime-kuma

# Attendre 5 secondes
sleep 5

# Redémarrer
docker start uptime-kuma

Interface lente ou freeze

# Vérifier la taille de la base de données
du -sh /data/uptime-kuma/kuma.db

# Si trop volumineuse (> 1 GB), nettoyer les anciens logs
# Via l'interface : Settings → Data Retention → Cleanup

# Ou redémarrer le conteneur
docker restart uptime-kuma

Maintenance

Mise à jour Uptime Kuma

# Pull la dernière image
docker pull louislam/uptime-kuma:1

# Arrêter et supprimer l'ancien conteneur
docker stop uptime-kuma
docker rm uptime-kuma

# Relancer avec la nouvelle image (via Ansible)
cd /opt/probatiovault-ia-server/ansible
ansible-playbook -i inventory/hosts playbooks/install-uptime-kuma.yml

Important : Les données dans /data/uptime-kuma sont préservées.

Sauvegarde des données

# Sauvegarder la base de données
sudo cp /data/uptime-kuma/kuma.db /tmp/kuma-backup-$(date +%Y%m%d).db

# Ou avec tar
sudo tar czf /tmp/uptime-kuma-backup-$(date +%Y%m%d).tar.gz /data/uptime-kuma/

# Copier vers NAS
cp /tmp/uptime-kuma-backup-*.tar.gz /mnt/nas/backups/

Restaurer depuis une sauvegarde

# Arrêter Uptime Kuma
docker stop uptime-kuma

# Restaurer la base de données
sudo cp /tmp/kuma-backup-20260211.db /data/uptime-kuma/kuma.db

# Ou restaurer depuis tar
sudo tar xzf /tmp/uptime-kuma-backup-20260211.tar.gz -C /

# Redémarrer Uptime Kuma
docker start uptime-kuma

Nettoyage des anciens logs

Pour libérer de l'espace et améliorer les performances :

  1. Settings → Maintenance
  2. Clear all statistics → Supprime tous les heartbeats anciens
  3. Clear inactive monitors → Supprime les monitors désactivés

Ou via SQL :

docker exec -it uptime-kuma /bin/bash
sqlite3 /app/data/kuma.db
DELETE FROM heartbeat WHERE time < datetime('now', '-90 days');
VACUUM;
.quit
exit

Alerting avancé

Escalation de notifications

Pour envoyer des alertes à différents canaux selon la gravité :

  1. Première alerte (Slack) :
  2. Créer notification Slack
  3. Associer à tous les monitors

  4. Escalation (Email au responsable) :

  5. Créer notification Email
  6. Associer uniquement aux monitors critiques (Ollama, Plex)

  7. Configuration par monitor :

  8. Monitor critique : Slack + Email
  9. Monitor secondaire : Slack uniquement

Alertes multiples (rate limiting)

Pour éviter le spam de notifications :

  1. Éditer un monitor
  2. Resend Notification if Down :
  3. Cocher pour ré-alerter si toujours down
  4. Resend Interval : 60 minutes (ou plus)

Plages horaires (maintenance windows)

Pour désactiver les alertes pendant maintenance :

  1. Éditer un monitor
  2. Maintenance :
  3. Activer "Schedule Maintenance"
  4. Start : 2026-02-15 02:00
  5. End : 2026-02-15 06:00
  6. Recurring : Tous les dimanches 2h-6h

Pendant cette période, aucune alerte ne sera envoyée.

Ressources

Résumé des ports

Service Port Protocole Accès
Uptime Kuma Web 3001 HTTP LAN uniquement
Uptime Kuma WebSocket 3001 WS LAN uniquement

Comparaison avec alternatives

Fonctionnalité Uptime Kuma UptimeRobot Pingdom
Hébergement Auto-hébergé Cloud Cloud
Coût Gratuit $7/mois (50 monitors) $10/mois
Monitors Illimités 50 (plan payant) 10 (plan de base)
Notifications Illimitées Limitées Limitées
Status Page ✅ Oui ✅ Oui (payant) ✅ Oui (payant)
API ✅ WebSocket ✅ REST ✅ REST
Docker Container ✅ Oui ❌ Non ❌ Non
Open Source ✅ Oui ❌ Non ❌ Non

Avantages Uptime Kuma : - ✅ Gratuit, illimité - ✅ Données privées (pas de cloud externe) - ✅ Monitors spécifiques (Docker, databases locales) - ✅ Customisation totale

Avantages UptimeRobot/Pingdom : - ✅ Monitoring depuis plusieurs localisations géographiques - ✅ Pas de gestion infrastructure - ✅ Support professionnel