diff --git a/prometheus/values.yaml b/prometheus/values.yaml index 4586ce4..876826d 100644 --- a/prometheus/values.yaml +++ b/prometheus/values.yaml @@ -1185,6 +1185,57 @@ prometheus: &prometheus_config annotations: summary: "Prospection — brief produit mais non poussé sur Telegram" description: "La vidéo du brief a été rendue mais l'envoi Telegram a échoué (token/chat_id/API). Voir les logs du CronJob prospection." + # Santé du socle : être prévenu quand (ou juste avant que) le homelab tombe. + # Incident 2026-07-23 : build CI sans limites sur pi1 → RAM épuisée (0 swap), + # load15 >100, traefik + apiserver k3s affamés → tout *.arcodange.lab injoignable + # (Gitea compris, pourtant sain sur pi2). Prometheus vit sur pi3 et Alertmanager + # sur pi2 : cette chaîne d'alerte survit donc à la perte de pi1. + - name: homelab + rules: + - alert: NoeudInjoignable + # node-exporter ne répond plus : nœud éteint, réseau HS, ou surcharge telle + # que plus rien n'y répond (le cas de l'incident). + expr: up{job="kubernetes-service-endpoints", app_kubernetes_io_name="prometheus-node-exporter"} == 0 + for: 3m + labels: + severity: critical + app: homelab + annotations: + summary: "Homelab — {{ $labels.node }} est injoignable" + description: "node-exporter de {{ $labels.node }} ({{ $labels.instance }}) ne répond plus depuis 3 min : nœud down ou en surcharge sévère." + - alert: IngressLabIndisponible + # Plus aucun replica traefik dispo — ou kube-state-metrics muet (il vit sur + # pi1 : quand pi1 tombe, la métrique disparaît au lieu de passer à 0). + expr: >- + kube_deployment_status_replicas_available{namespace="kube-system",deployment="traefik"} < 1 + or absent(kube_deployment_status_replicas_available{namespace="kube-system",deployment="traefik"}) + for: 3m + labels: + severity: critical + app: homelab + annotations: + summary: "Homelab — ingress traefik indisponible : *.arcodange.lab est HS" + description: "Aucun replica traefik disponible (ou métrique absente = kube-state-metrics muet). Gitea, ArgoCD, Grafana, Vault… sont injoignables via leurs URLs .lab. Gitea reste accessible en direct : http://192.168.1.202:3000." + - alert: NoeudPressionMemoire + # Précurseur direct de l'incident : <500 Mo dispo sur un Pi 8 Go — sans + # swap, le kernel part en thrash bien avant d'atteindre 0. + expr: node_memory_MemAvailable_bytes < 500 * 1024 * 1024 + for: 5m + labels: + severity: warning + app: homelab + annotations: + summary: "Homelab — mémoire critique sur {{ $labels.node }}" + description: "{{ $labels.node }} n'a plus que {{ $value | humanize1024 }}B de mémoire disponible depuis 5 min : risque imminent de thrash (pas de swap sur les Pis). Suspect n°1 : un job CI trop gourmand." + - alert: NoeudEnSurcharge + expr: node_load15 > 8 + for: 10m + labels: + severity: warning + app: homelab + annotations: + summary: "Homelab — {{ $labels.node }} en surcharge (load15 = {{ $value | humanize }})" + description: "load15 > 8 depuis 10 min sur {{ $labels.node }} (4 cœurs) : quelque chose sature la machine, l'ingress et l'API k3s sont en danger si c'est pi1." # groups: # - name: Instances # rules: