1 Supervision
pepper edited this page 2026-06-27 03:07:51 +00:00

📊 Supervision

Architecture

 💻 node-exporter ──(métriques hôte)──────────┐
 🔭 alloy ──(métriques cAdvisor conteneurs)──►📈 Prometheus ──┐
 🔭 alloy ──(logs conteneurs)────────────────►📋 Loki ────────┤►📊 Grafana
                                                               │
                                        (SSO Authentik AUTO_LOGIN)

Composants

Prometheus

  • Rétention : 30 jours / 10 GB (whichever first)
  • Config : ./monitoring/prometheus/prometheus.yml
  • Scrape targets : node-exporter (hôte), cadvisor (conteneurs via alloy), applications

Loki

  • Config : ./monitoring/loki/config.yml
  • Données : ./monitoring/loki/data/ (exclu des sauvegardes — WAL uniquement)
  • Retention : configurable dans config.yml

Alloy (agent Grafana)

  • Config : ./monitoring/alloy/config.alloy
  • Rôle : collecte les logs de tous les conteneurs Docker + métriques cAdvisor
  • Découverte Docker : via docker-socket-proxy (lecture seule — jamais de socket brut)
  • Données WAL : ./monitoring/alloy/data/ (exclu des sauvegardes)

Node-exporter

  • Métriques hôte : CPU, RAM, disque, réseau, load average, fs
  • Port : 9100 (interne uniquement)

Grafana

  • URL : grafana.molok.fr
  • SSO : Authentik OIDC, AUTO_LOGIN=true (redirige direct vers Authentik)
  • Provisioning : ./monitoring/grafana/provisioning/ (datasources + dashboards)
  • Données : ./monitoring/grafana/data/ (inclus dans les sauvegardes)

Requêtes utiles

Prometheus (PromQL)

# CPU usage conteneurs (top 5)
topk(5, rate(container_cpu_usage_seconds_total[5m]) * 100)

# RAM par conteneur
container_memory_usage_bytes{name=~".+"}

# Espace disque
node_filesystem_avail_bytes{mountpoint="/"}

# Uptime
node_boot_time_seconds

Loki (LogQL)

# Logs d'un conteneur
{container_name="swag"}

# Erreurs nginx
{container_name="swag"} |= "error"

# Alertes CrowdSec
{container_name="crowdsec"} |= "ban"

# Logs Authentik
{container_name="authentik-server"} | json | level="warning"

Alertes

Les alertes sont configurables dans Grafana (Alerting → Rules) en PromQL ou LogQL.

Exemples d'alertes utiles :

  • Espace disque < 10 GB
  • Conteneur arrêté depuis > 5 min
  • Tentatives de login échouées > 10/min (Authentik)
  • RAM > 80%

Dépannage

# Prometheus — targets en erreur
curl -s http://localhost:9090/api/v1/targets | python3 -m json.tool | grep -A5 '"health":"down"'

# Alloy — état
sudo docker compose logs -f alloy

# Vérifier que node-exporter répond
curl -s http://localhost:9100/metrics | head -20