Status : IMPLEMENTEE
Créer un système de monitoring automatique qui :
dashboard.33800.nowhere84.com┌─────────────────┐
│ CRON (15 min) │ Sur prod-portainer
│ collect.sh │
└────────┬────────┘
│ SSH vers chaque serveur
▼
┌─────────────────────────────────────────────────────┐
│ Collecte données │
│ - pve (ZFS, NFS, VMs) │
│ - proxmox1 (VMs, NFS mount) │
│ - prod-portainer (Docker, containers) │
│ - dev-portainer (Docker, containers) │
│ - gitlab (services, version) │
│ - nginx (configs, SSL) │
│ - jellyfin (service) │
└────────┬────────────────────────────────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐
│ generate.sh │────▶│ dashboard.html │
│ Génère HTML │ │ (sur nginx) │
└────────┬────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ logs/ │ Historique JSON
│ YYYY-MM-DD.log │ pour analyse
└─────────────────┘
/mnt/stock_36to/data/33800-stack/
├── monitoring/
│ ├── collect.sh # Script de collecte
│ ├── generate.sh # Génère le HTML
│ ├── logs/ # Historique JSON
│ │ ├── 2024-12-18.json
│ │ └── ...
│ └── templates/
│ └── dashboard.html # Template HTML
│
└── docs/
├── infrastructure.md # Doc complète infra
├── servers.md # Liste des serveurs
└── services.md # Liste des services
Sur nginx :
/var/www/dashboard/
└── index.html # Dashboard généré
server {
listen 80;
server_name dashboard.33800.nowhere84.com;
# Accès réseau local uniquement
allow 192.168.1.0/24;
allow 127.0.0.1;
deny all;
root /var/www/dashboard;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
# Sur prod-portainer - /etc/cron.d/monitoring-33800
*/15 * * * * gouroubleu /mnt/stock_36to/data/33800-stack/monitoring/collect.sh >> /var/log/monitoring-33800.log 2>&1
Chaque exécution génère une entrée JSON :
{
"timestamp": "2024-12-18T03:15:00Z",
"servers": {
"pve": {
"status": "ok",
"zfs": {"state": "ONLINE", "used": "29.2T", "total": "54.6T"},
"nfs": {"active": true, "clients": 4},
"vms": [{"id": 206, "name": "prod-portainer", "status": "running"}]
},
...
}
}
Rotation : garder 30 jours de logs.