docs: réorganisation complète de admin/ en 4 domaines thématiques

Structure avant : 20 fichiers à plat dans admin/ — difficile à naviguer.
Structure après : 4 sous-répertoires thématiques + index clair.

Réorganisation :
  admin/ops/    → cluster.md, ansible.md, systeme.md
  admin/infra/  → reseau.md, nfs.md, dnsmasq.md, ssh.md
  admin/k8s/    → talos.md, argocd.md, monitoring.md
  admin/ia/     → llama_server.md, rocm.md, litellm.md, hermes.md

Suppressions :
  - ask-agent.md : contenu fusionné dans ia/hermes.md (section ask-agent)
  - lm_studio.md : obsolète (LM Studio remplacé par llama-server)

Mises à jour contenu :
  - ia/hermes.md : fusion complète avec ask-agent.md (profils, skills,
    SOUL.md, ask-agent CLI, dépannage) — doc unifiée sans redondance
  - ops/cluster.md : section GitOps réduite à 2 lignes + lien argocd.md
  - incidents.md : tableau de résumé en tête + 4 nouveaux incidents
    (Grafana OOMKilled, AlertManager null receiver, llama-server 501,
    nftables règle après drop)
  - README.md : réécrit — navigation rapide + index par domaine

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alkatrazz 2026-05-14 00:47:58 +02:00
parent d552abd2ef
commit 5bcf95b82e
19 changed files with 633 additions and 677 deletions

View file

@ -1,5 +1,145 @@
# Incidents — Historique et résolutions
## Index
| Date | Composant | Résumé | Sévérité |
|---|---|---|---|
| 2026-05-14 | Grafana | OOMKilled — limite 256Mi trop serrée pour Grafana 13 | Warning |
| 2026-05-13 | AlertManager | Receiver "null" non défini — ReconciliationFailed | Warning |
| 2026-05-13 | llama-server | `/metrics` retourne 501 Not Implemented — flag `--metrics` absent | Warning |
| 2026-05-13 | nftables storage-01 | Règle monitoring ajoutée après le drop — paquets bloqués | Warning |
| 2026-05-13 | storage-01 | Corruption EXT4 + réinstallation hermes-agent | Critique |
| 2026-05-11 | storage-01 | Boucle fsck après coupure de courant — XFS corrompu | Critique |
---
## 2026-05-14 — Grafana : OOMKilled (limite mémoire trop serrée)
### Symptôme
Erreurs "No available server" intermittentes sur `grafana.lab.local`. Pod en CrashLoop.
```bash
kubectl describe pod -n monitoring -l app.kubernetes.io/name=grafana
# → Last State: Terminated, Reason: OOMKilled, Exit Code: 137
# → RESTARTS: 5
```
### Cause
Limite mémoire à 256Mi dans `k8s/infra/monitoring/values.yaml`. Grafana 13 consomme plus que ses prédécesseurs — OOM systématique. Traefik perd le backend pendant chaque redémarrage.
### Résolution
Augmenter les limites dans `k8s/infra/monitoring/values.yaml` :
```yaml
grafana:
resources:
requests:
memory: 256Mi
limits:
memory: 1Gi # était 256Mi
```
`git push` → ArgoCD applique → pod redémarre proprement.
---
## 2026-05-13 — AlertManager : ReconciliationFailed — receiver "null" non défini
### Symptôme
AlertManager en erreur dans ArgoCD. Logs :
```
level=error msg="loading configuration" err="undefined receiver \"null\" used in route"
```
### Cause
kube-prometheus-stack génère en interne une sous-route référençant le receiver `"null"` pour le heartbeat Watchdog. Une config AlertManager custom qui ne définissait pas ce receiver cassait la validation.
### Résolution
Ajouter explicitement le receiver et la route dans `values.yaml` :
```yaml
alertmanager:
config:
route:
routes:
- matchers:
- alertname = "Watchdog"
receiver: "null"
repeat_interval: 24h
receivers:
- name: "null" # obligatoire même si vide
```
---
## 2026-05-13 — llama-server : /metrics retourne 501 Not Implemented
### Symptôme
Prometheus ne scrappe rien sur les jobs `llama-server-*`. Targets en erreur avec `501 Not Implemented`.
### Cause
Le flag `--metrics` doit être passé explicitement à llama-server pour activer l'endpoint `/metrics`. Sans lui, la route existe mais répond 501.
### Résolution
Ajouter `--metrics` dans le service systemd (template Ansible `llama-server.service.j2`) :
```ini
ExecStart=/opt/llama.cpp/build/bin/llama-server \
...
--metrics \
--log-disable
```
Fix live sur les 3 instances + `daemon-reload` + restart :
```bash
# Sur gpu-01
for svc in llama-server llama-server-system llama-server-monitor; do
sudo sed -i 's/--log-disable/--metrics \\\n --log-disable/' /etc/systemd/system/$svc.service
done
sudo systemctl daemon-reload
sudo systemctl restart llama-server llama-server-system llama-server-monitor
```
---
## 2026-05-13 — nftables storage-01 : règle monitoring bloquée par le drop
### Symptôme
Prometheus ne pouvait pas scrapper `storage-01:9100` (node_exporter) ni recevoir les webhooks AlertManager sur `:9093`. Targets en `connection refused` dans Prometheus.
### Cause
`nft add rule` ajoute la règle **en fin de chaîne**, après la règle terminale `log prefix "nft-drop:" drop`. Les paquets étaient droppés avant d'atteindre la nouvelle règle.
```bash
# Vérifier l'ordre
sudo nft -n -a list chain inet filter input
# → handle 22 : log drop (terminal)
# → handle 27 : tcp dport { 9093, 9100 } accept (ajouté APRÈS → jamais atteint)
```
### Résolution
Supprimer la règle mal placée et la réinsérer **avant** le drop avec `insert rule position` :
```bash
sudo nft delete rule inet filter input handle 27
sudo nft insert rule inet filter input position 22 \
tcp dport { 9093, 9100 } ip saddr 192.168.10.0/24 accept
```
Fix permanent dans le template Ansible `nftables.conf.j2` : placer la règle avant la règle drop.
---
## 2026-05-13 — storage-01 : corruption EXT4 après arrêt brutal + reinstall hermes-agent