Uptime Kuma¶
Outil de monitoring auto-hébergé pour surveiller la disponibilité des services et hôtes de l'infrastructure. Remplace les checks manuels et envoie des alertes en cas de panne.
Informations¶
| Paramètre | Valeur |
|---|---|
| URL locale | http://192.168.1.101:3003 |
| Admin public | https://uptime.ncls.ltd (Authelia one_factor) |
| Status page | https://status.ncls.ltd (public, sans authentification) |
| Port | 3003 (hôte) → 3001 (container) |
| Image | louislam/uptime-kuma:2 |
| LXC | LXC 101 – Management |
| Stack | GitOps — 101-admin/uptime-kuma/docker-compose.yml |
| Données | /opt/docker/uptime-kuma/data |
| Notifications | SMTP Gmail |
Token API Proxmox¶
Token en lecture seule utilisé par les moniteurs JSON Query pour consulter l'API Proxmox.
| Champ | Valeur |
|---|---|
| Token ID | monitoring@pve!kuma |
| Rôle | MonitoringReadOnly (Sys.Audit, VM.Audit, Datastore.Audit) |
| Header | Authorization: PVEAPIToken=monitoring@pve!kuma=<SECRET> |
Ignorer erreur TLS sur les endpoints Proxmox (certificat auto-signé).
⚠️ Après migration/réinstallation PVE : l'utilisateur
monitoring@pveet son token sont dans/etc/pve/(rootfs host), non sauvegardés par PBS. Les recréer viarestore-host-artefacts.sh(voir ci-dessous).
Restauration après migration PVE¶
En cas de réinstallation du host Proxmox (migration disque, disaster recovery), les artefacts suivants sont perdus car ils sont dans rpool/ROOT (non couvert par PBS) :
| Artefact | Localisation | Impact |
|---|---|---|
User monitoring@pve + token |
/etc/pve/user.cfg |
Monitors LXC/PVE todos DOWN |
| Service Glances | /etc/systemd/system/glances.service |
Monitor Glances DOWN + thermals DOWN |
| Scripts cron monitoring | /usr/local/bin/monitor-*.sh, /etc/cron.d/monitor-* |
Monitors push disques/thermals DOWN |
Restauration en une commande :
Ce script (idempotent) recrée le user/token PVE, installe Glances, régénère les scripts cron depuis les tokens stockés dans kuma.db, et patche la DB Kuma avec le nouveau token.
Glances (Host PVE)¶
Glances est installé directement sur le host Proxmox (apt install glances) et exposé comme service systemd sur le port 61208.
| Paramètre | Valeur |
|---|---|
| Installation | apt install glances (host PVE) |
| Service | glances.service — systemd, démarrage automatique |
| Port | 61208 |
| API | http://192.168.1.21:61208/api/4/ |
Rôle dans Uptime Kuma¶
Glances est utilisé uniquement pour le monitor HTTP "Glances (PVE Host)" (groupe Proxmox Host) — il vérifie que le service tourne et répond.
Il n'est plus utilisé pour lire les températures ou les vitesses ventilateurs. Depuis la session 3 (2026-04-02), le script
monitor-thermals.shutilise directementsensors(lm-sensors) pour lirecoretemp-isa-0000(CPU) etit8628-isa-0a40(carte mère + ventilateurs).
Prérequis module it87¶
Le capteur it8628-isa-0a40 (puce IT8628E) nécessite que le module kernel it87 soit chargé :
# Chargement immédiat
modprobe it87
# Persistance (survit au reboot)
# /etc/modules-load.d/it87.conf contient : it87
Sans ce module, sensors ne liste pas les capteurs MB/fans — ni les températures carte mère, ni les vitesses ventilateurs.
Indépendance des monitors¶
Le service Glances est indépendant du monitoring thermique :
- Si Glances s'arrête → seul le monitor "Glances (PVE Host)" passe DOWN
- Les monitors Températures & Ventilateurs continuent de fonctionner (ils n'utilisent plus Glances)
- La perte du module
it87(ex. après réinstallation kernel) est la vraie cause de panne des capteurs MB/fans
# Vérifier l'état des capteurs après reboot
sensors coretemp-isa-0000
sensors it8628-isa-0a40
# Si erreur « No sensors found » : modprobe it87
Configuration des Moniteurs¶
Groupe : Réseau¶
| Nom | Type | Cible | Notes |
|---|---|---|---|
| Freebox | Ping | 192.168.1.254 |
Routeur LAN |
| DNS Cloudflare | Ping | 1.1.1.1 |
Résolution publique |
| DNS Google | Ping | 8.8.8.8 |
Backup DNS |
Groupe : Proxmox Host¶
| Nom | Type | URL / Cible | Config |
|---|---|---|---|
| Proxmox WebUI | HTTP(s) | https://192.168.1.21:8006 |
Ignorer TLS ✅ |
| Glances (PVE Host) | HTTP(s) | http://192.168.1.21:61208 |
— |
| PVE Node Status | HTTP(s) – JSON Query | https://192.168.1.21:8006/api2/json/nodes/pve/status |
Token header ✅, Ignorer TLS ✅, Path : $.data.uptime, Condition : > 0 |
Groupe : LXC – Statuts (via API Proxmox)¶
Pour chaque LXC, vérifie que chaque conteneur est running du point de vue de Proxmox.
- Type : HTTP(s) – JSON Query
- URL :
`https://192.168.1.21:8006/api2/json/nodes/pve/lxc/{ID}/status/current| - Json Path :
$.data.status| - Valeur attendue :
running|
LXC couverts : 100 (Media), 101 (Management), 102 (PBS), 103 (Gateway), 104 (Services), 105 (Web).
Groupe : LXC 100 – Média¶
Chaque service exposé en HTTP à http://192.168.1.100.
Voir LXC 100
Groupe : LXC 101 – Management¶
| Nom | Type | URL | Notes |
|---|---|---|---|
| Homepage | HTTP(s) | http://192.168.1.101:3000 |
— |
| Portainer | HTTP(s) | https://192.168.1.101:9443 |
Ignorer TLS ✅ |
| Zensical | HTTP(s) | http://192.168.1.101:8001 |
— |
| CoolerControl | HTTP(s) | http://192.168.1.101:11987 |
— |
| Uptime Kuma (self) | HTTP(s) | http://localhost:3001 |
Heartbeat interne |
Groupe : LXC 102 – PBS¶
| Nom | Type | URL | Notes |
|---|---|---|---|
| PBS WebUI | HTTP(s) | https://192.168.1.102:8007 |
Ignorer TLS ✅ |
Groupe : LXC 103 – Network Gateway¶
| Nom | Type | Cible | Notes |
|---|---|---|---|
| Caddy HTTP | Port TCP | 192.168.1.103 : 80 |
Redirect check |
| Caddy HTTPS | Port TCP | 192.168.1.103 : 443 |
— |
| Authelia | HTTP(s) | http://192.168.1.103:9091 |
— |
Groupe : LXC 104 – Services¶
| Nom | Type | URL |
|---|---|---|
| Endurain | HTTP(s) | http://192.168.1.104:8080 |
| FreshRSS | HTTP(s) | http://192.168.1.104:8787 |
| Romm | HTTP(s) | http://192.168.1.104:8082 |
| Gramps Web | HTTP(s) | http://192.168.1.104:5152 |
Groupe : LXC 105 – Web¶
Monitors de type HTTP(s) vers les URLs directes des services WordPress.
⚠️ Investigation en cours (2026-04-02) : les ports 801x ne sont pas joignables depuis le réseau local — monitors en état DOWN, cause non résolue. Anciennement en type Port TCP (idem symptôme).
| Nom | Type | URL |
|---|---|---|
| WP nliautaud.fr | HTTP(s) | http://192.168.1.105:8010 |
| WP alicesuretcanale.fr | HTTP(s) | http://192.168.1.105:8011 |
| WP lmdp.ncls.ltd | HTTP(s) | http://192.168.1.105:8012 |
Groupe : Domaines HTTPS publics (SSL)¶
Vérifie la disponibilité et la validité du certificat SSL (alerte à J-14 avant expiry).
| Nom | URL |
|---|---|
| ncls.ltd | https://ncls.ltd |
| home.ncls.ltd | https://home.ncls.ltd |
| flix.ncls.ltd | https://flix.ncls.ltd |
| auth.ncls.ltd | https://auth.ncls.ltd |
| pbs.ncls.ltd | https://pbs.ncls.ltd |
| portainer.ncls.ltd | https://portainer.ncls.ltd |
| seer.ncls.ltd | https://seer.ncls.ltd |
| docs.ncls.ltd | https://docs.ncls.ltd |
| run.ncls.ltd | https://run.ncls.ltd |
| feed.ncls.ltd | https://feed.ncls.ltd |
| retro.ncls.ltd | https://retro.ncls.ltd |
| genea.ncls.ltd | https://genea.ncls.ltd |
| glances.ncls.ltd | https://glances.ncls.ltd |
| host.ncls.ltd | https://host.ncls.ltd |
| nliautaud.fr | https://nliautaud.fr |
| alicesuretcanale.fr | https://alicesuretcanale.fr |
| lmdp.ncls.ltd | https://lmdp.ncls.ltd |
Groupe : Espaces Disques¶
Moniteurs de type Push — le host Proxmox envoie les métriques via cron toutes les 3 min.
Script : /usr/local/bin/monitor-disk-space.sh
Cron : /etc/cron.d/monitor-disk-space (*/3 * * * *)
| Nom | Cible | Seuil | Méthode |
|---|---|---|---|
| Host root (/) | / |
85% | df |
| lxc-data (/mnt/lxc-data) | /mnt/lxc-data |
85% | df |
| scratch (/mnt/scratch) | /mnt/scratch |
85% | df |
| media (/mnt/media) | /mnt/media |
90% | df |
| storage (/mnt/storage) | /mnt/storage |
85% | df |
| pbs-secondary (/mnt/pbs-secondary) | /mnt/pbs-secondary |
85% | df |
| ZFS rpool/data (LXC rootfs) | rpool/data |
80% | zfs quota |
| ZFS rpool/pbs (Backups) | rpool/pbs |
80% | zfs quota |
Architecture post-migration NVMe/ZFS (2026-04-02) — LVM thin pool remplacé par ZFS avec quotas.
ping= % utilisé (graphe historique) ;msg= détail espace libre.
Groupe : Températures & Ventilateurs¶
Moniteurs de type Push — le host Proxmox envoie les métriques via cron toutes les 3 min.
Sources : sensors coretemp-isa-0000 (CPU) + sensors it8628-isa-0a40 (carte mère + fans) via lm-sensors + smartctl
Script : /usr/local/bin/monitor-thermals.sh
Cron : /etc/cron.d/monitor-thermals (*/3 * * * *)
Prérequis : module
it87chargé (puce IT8628E) — persisté dans/etc/modules-load.d/it87.conf. Sans ce module, lm-sensors ne voit pas les capteurs MB/fans.
| Nom | Source | Seuil alerte |
|---|---|---|
| CPU Package | coretemp-isa-0000 (Package id 0) |
≥ 80°C |
| Carte mère | it8628-isa-0a40 (SYSTIN/CPUTIN, max valide) |
≥ 50°C |
| Ventilateur 1 | it8628-isa-0a40 fan2 (boîtier) |
< 100 RPM (calé) |
| Ventilateur 2 | it8628-isa-0a40 fan3 (boîtier) |
< 100 RPM (calé) |
| HDD media (sdc) | smartctl /dev/sdc attr 194 |
≥ 50°C |
| HDD storage (sdd) | smartctl /dev/sdd attr 194 |
≥ 45°C |
Pas de ventilateur CPU dédié — fan2 et fan3 sont les deux ventilateurs boîtier. Capteurs bogus exclus (tensions mal étiquetées comme températures).
ping= valeur brute (°C ou RPM) pour le graphe historique.