Aller au contenu

Uptime Kuma - Configuration des moniteurs

Uptime Kuma surveille la disponibilité de tous les services du serveur IA ProbatioVault.

Vue d'ensemble

Service URL Statut attendu Interval
Ollama API http://192.168.1.82:11434/api/tags 200 OK 60s
Open WebUI http://192.168.1.82:3000 200 OK 60s
ComfyUI http://192.168.1.82:8188 200 OK 60s
JupyterLab http://192.168.1.82:8889 200 OK 60s
Nerfstudio Viewer http://192.168.1.82:7007 200 OK 120s
Homer Dashboard http://192.168.1.82:8080 200 OK 60s
Netdata http://192.168.1.82:19999 200 OK 60s
Plex Media Server http://192.168.1.82:32400/web 200 OK 120s

Total : 8 services surveillés

Accès

  • URL : http://192.168.1.82:3001
  • Première utilisation : Créer un compte admin (première inscription)

Configuration manuelle

1. Première connexion

  1. Ouvrir http://192.168.1.82:3001
  2. Créer un compte admin :
  3. Username : admin
  4. Password : (choisir un mot de passe fort)
  5. Email : (optionnel)
  6. Cliquer sur "Create"

2. Créer les moniteurs

Monitor 1 : Ollama API

Pourquoi : Service critique pour l'inférence LLM (Open WebUI dépend d'Ollama)

  1. Cliquer sur "Add New Monitor"
  2. Configuration :
  3. Monitor Type : HTTP(s)
  4. Friendly Name : Ollama API
  5. URL : http://192.168.1.82:11434/api/tags
  6. Heartbeat Interval : 60 seconds
  7. Retries : 3
  8. Heartbeat Retry Interval : 20 seconds
  9. Accepted Status Codes : 200-299
  10. Description : LLM Inference Server - Critical
  11. Tags : ai, llm, critical
  12. Cliquer sur "Save"

Monitor 2 : Open WebUI

Pourquoi : Interface utilisateur principale pour les LLMs

  1. Cliquer sur "Add New Monitor"
  2. Configuration :
  3. Monitor Type : HTTP(s)
  4. Friendly Name : Open WebUI
  5. URL : http://192.168.1.82:3000
  6. Heartbeat Interval : 60 seconds
  7. Retries : 3
  8. Accepted Status Codes : 200-299
  9. Description : ChatGPT-like interface for Ollama
  10. Tags : ai, llm, interface
  11. Cliquer sur "Save"

Monitor 3 : ComfyUI

Pourquoi : Interface de workflow Stable Diffusion (génération d'images)

  1. Cliquer sur "Add New Monitor"
  2. Configuration :
  3. Monitor Type : HTTP(s)
  4. Friendly Name : ComfyUI
  5. URL : http://192.168.1.82:8188
  6. Heartbeat Interval : 60 seconds
  7. Retries : 3
  8. Accepted Status Codes : 200-299
  9. Description : Stable Diffusion workflow interface
  10. Tags : ai, image-generation
  11. Cliquer sur "Save"

Monitor 4 : JupyterLab

Pourquoi : Interface interactive pour Nerfstudio (reconstruction 3D)

  1. Cliquer sur "Add New Monitor"
  2. Configuration :
  3. Monitor Type : HTTP(s)
  4. Friendly Name : JupyterLab
  5. URL : http://192.168.1.82:8889
  6. Heartbeat Interval : 60 seconds
  7. Retries : 3
  8. Accepted Status Codes : 200-299
  9. Description : Nerfstudio interactive notebooks
  10. Tags : ai, 3d-reconstruction, notebook
  11. Cliquer sur "Save"

Monitor 5 : Nerfstudio Viewer

Pourquoi : Viewer pour les trainings 3D (lancé à la demande)

  1. Cliquer sur "Add New Monitor"
  2. Configuration :
  3. Monitor Type : HTTP(s)
  4. Friendly Name : Nerfstudio Viewer
  5. URL : http://192.168.1.82:7007
  6. Heartbeat Interval : 120 seconds (service on-demand, moins fréquent)
  7. Retries : 2
  8. Accepted Status Codes : 200-299
  9. Description : 3D reconstruction training viewer (on-demand)
  10. Tags : ai, 3d-reconstruction, on-demand
  11. Cliquer sur "Save"

Monitor 6 : Homer Dashboard

Pourquoi : Dashboard principal pour accéder à tous les services

  1. Cliquer sur "Add New Monitor"
  2. Configuration :
  3. Monitor Type : HTTP(s)
  4. Friendly Name : Homer Dashboard
  5. URL : http://192.168.1.82:8080
  6. Heartbeat Interval : 60 seconds
  7. Retries : 3
  8. Accepted Status Codes : 200-299
  9. Description : Services dashboard
  10. Tags : dashboard, monitoring
  11. Cliquer sur "Save"

Monitor 7 : Netdata

Pourquoi : Monitoring temps réel des ressources système (CPU, RAM, GPU)

  1. Cliquer sur "Add New Monitor"
  2. Configuration :
  3. Monitor Type : HTTP(s)
  4. Friendly Name : Netdata
  5. URL : http://192.168.1.82:19999
  6. Heartbeat Interval : 60 seconds
  7. Retries : 3
  8. Accepted Status Codes : 200-299
  9. Description : Real-time system monitoring (CPU, RAM, GPU)
  10. Tags : monitoring, system
  11. Cliquer sur "Save"

Monitor 8 : Plex Media Server

Pourquoi : Serveur de streaming média

  1. Cliquer sur "Add New Monitor"
  2. Configuration :
  3. Monitor Type : HTTP(s)
  4. Friendly Name : Plex Media Server
  5. URL : http://192.168.1.82:32400/web
  6. Heartbeat Interval : 120 seconds (moins critique)
  7. Retries : 2
  8. Accepted Status Codes : 200-299
  9. Description : Media streaming server
  10. Tags : media, streaming
  11. Cliquer sur "Save"

3. Organiser par tags

Les tags permettent de filtrer les moniteurs par catégorie :

  • ai : Services IA (Ollama, ComfyUI, JupyterLab, Nerfstudio)
  • llm : Services LLM (Ollama, Open WebUI)
  • monitoring : Services de monitoring (Netdata, Homer)
  • media : Services média (Plex)
  • critical : Services critiques (Ollama)
  • on-demand : Services à la demande (Nerfstudio Viewer)

Notifications (optionnel)

Discord

  1. Aller dans Settings → Notifications
  2. Cliquer sur "Setup Notification"
  3. Type : Discord
  4. Friendly Name : Discord Alerts
  5. Discord Webhook URL : (créer un webhook Discord)
  6. Cliquer sur "Test" puis "Save"

Email (SMTP)

  1. Aller dans Settings → Notifications
  2. Cliquer sur "Setup Notification"
  3. Type : Email (SMTP)
  4. Configuration :
  5. Friendly Name : Email Alerts
  6. SMTP Host : smtp.gmail.com
  7. SMTP Port : 587
  8. Security : TLS
  9. From Email : votre-email@gmail.com
  10. To Email : alerts@probatiovault.com
  11. Username : votre-email@gmail.com
  12. Password : (mot de passe d'application Gmail)
  13. Cliquer sur "Test" puis "Save"

Slack

  1. Aller dans Settings → Notifications
  2. Cliquer sur "Setup Notification"
  3. Type : Slack
  4. Slack Webhook URL : (créer un webhook Slack)
  5. Cliquer sur "Test" puis "Save"

Configuration des alertes

Pour chaque monitor, vous pouvez configurer :

  1. Cliquer sur le monitor → "Edit"
  2. Onglet "Notifications"
  3. Sélectionner les notifications à activer :
  4. ✅ Discord (pour tous les monitors critiques)
  5. ✅ Email (pour les monitors critiques uniquement)
  6. ⚠️ Slack (optionnel)
  7. Configurer le comportement :
  8. Send on Down : ✅ (envoyer quand le service est DOWN)
  9. Send on Up : ✅ (envoyer quand le service revient UP)
  10. Cliquer sur "Save"

Dashboard public (optionnel)

Pour créer un dashboard public accessible sans authentification :

  1. Settings → General → Status Page
  2. Cliquer sur "Add New Status Page"
  3. Configuration :
  4. Slug : probatiovault-ia
  5. Title : ProbatioVault IA Server Status
  6. Description : Real-time status of AI services
  7. Sélectionner les monitors à afficher
  8. Cliquer sur "Save"
  9. URL publique : http://192.168.1.82:3001/status/probatiovault-ia

Automation via API (future)

Uptime Kuma utilise Socket.IO pour son API, pas REST classique. Pour automatiser :

1. Créer un API token

  1. Settings → Security → Access Tokens
  2. Cliquer sur "Add"
  3. Name : ansible-automation
  4. Expiration : Never
  5. Permissions : Read & Write
  6. Cliquer sur "Generate"
  7. Copier le token (il ne sera plus visible)

2. Stocker le token dans Vault

curl -X POST \
  -H "X-Vault-Token: hvs.uMrUpCheNfLQKBgiEBAO4Suc" \
  -d '{"data":{"token":"uptime-kuma-api-token-here"}}' \
  https://vault.dev.probatiovault.com/v1/kv/data/ci/uptime-kuma

3. Script Python avec Socket.IO

import socketio

sio = socketio.Client()
sio.connect('http://192.168.1.82:3001')

# Authentification
sio.emit('login', {
    'username': 'admin',
    'password': 'your-password',
    'token': ''
})

# Créer un monitor
sio.emit('add', {
    'type': 'http',
    'name': 'Ollama API',
    'url': 'http://192.168.1.82:11434/api/tags',
    'interval': 60
})

4. API REST alternative

Uptime Kuma expose aussi une API REST limitée :

# Liste des moniteurs
curl -H "Authorization: Bearer $TOKEN" \
  http://192.168.1.82:3001/api/monitors

# Statut d'un monitor
curl -H "Authorization: Bearer $TOKEN" \
  http://192.168.1.82:3001/api/monitor/1

Export/Import de configuration

Export

  1. Settings → Backup
  2. Cliquer sur "Export"
  3. Format : JSON
  4. Télécharger uptime-kuma-backup.json

Import

  1. Settings → Backup
  2. Cliquer sur "Import"
  3. Sélectionner le fichier JSON
  4. Cliquer sur "Import"

Cela permet de restaurer tous les moniteurs en une seule fois.

Maintenance

Mise à jour Uptime Kuma

# Redéployer avec la dernière version
cd /opt/probatiovault-ia-server/ansible
ansible-playbook -i inventory/hosts playbooks/install-uptime-kuma.yml

Le playbook est idempotent, il met à jour le container sans perdre les données.

Sauvegarde des données

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

# Restauration
tar xzf /tmp/uptime-kuma-backup-*.tar.gz -C /

Logs

# Voir les logs du container
sudo docker logs uptime-kuma

# Suivre les logs en temps réel
sudo docker logs -f uptime-kuma

Troubleshooting

Container ne démarre pas

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

# Redémarrer
sudo docker restart uptime-kuma

# Vérifier les logs
sudo docker logs uptime-kuma

Monitors toujours DOWN

  1. Vérifier que le service cible est accessible :
    curl -I http://192.168.1.82:11434/api/tags
    
  2. Vérifier les codes HTTP acceptés dans le monitor (200-299)
  3. Augmenter le timeout (Settings → Monitor → Advanced)

Notifications ne partent pas

  1. Tester la notification : Settings → Notifications → Test
  2. Vérifier les logs : sudo docker logs uptime-kuma
  3. Vérifier les credentials (SMTP, webhooks)

Intégration Homer

Uptime Kuma est référencé dans 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

Résumé des ports

Service Port Protocole
Uptime Kuma 3001 HTTP
Uptime Kuma API 3001 Socket.IO

Ressources

  • Documentation : https://github.com/louislam/uptime-kuma/wiki
  • API : https://github.com/louislam/uptime-kuma/wiki/API
  • Backup/Restore : https://github.com/louislam/uptime-kuma/wiki/Backup