Files
OPENCLAW_ARCHIVE3_17/workspace/MONITORING-LLM.md
Thierry Tallagrand b834e3bf75 Concierge au branchement + moniteur LLM/RAM + docs
Concierge: declenche au BRANCHEMENT (transition on de evenement) au lieu de la session ;
helper porte 'branchement' (ts::text verbatim) ; fraicheur [on-10, min(now, on+30)].
Moniteur LLM/RAM (llm-monitor.js) : endpoint spark + RAM, alerte WhatsApp sur changement
d'etat, publie l'etat dans HA (last_seen a chaque passage) + interrupteur de pilotage.
Docs: SPEC a jour, MONITORING-LLM.md, brouillons de config HA.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
2026-09-15 04:59:15 +02:00

58 lines
3.1 KiB
Markdown

# Surveillance LLM + RAM du spark — mode d'emploi
But : alerter par WhatsApp **uniquement sur un changement d'état** (LLM injoignable /
RAM basse → alerte, puis retour à la normale). Silencieux quand tout va bien.
Principe : « le spark mesure, OpenClaw notifie » — déterministe, sans LLM, donc l'alerte
part même si le modèle est mort.
## Deux composants
1. **Côté spark (10.10.10.8)** — cron `1 min` : `~/spark-llm-monitor/health-writer.sh`
lit la RAM (`/proc/meminfo`) + teste l'endpoint local `:8000/health`, et publie
`.spark-health.json` dans le workspace.
2. **Côté OpenClaw (.17)** — cron `*/2 min`, id **`dbd2e8dd-68d1-4ebe-9a55-7f33810de6bc`**,
nom `llm-monitor` : `node /home/node/.openclaw/workspace/llm-monitor.js` lit le relevé
+ teste l'endpoint à distance, et envoie le WhatsApp (announce) sur transition.
## Seuils
- RAM : alerte si dispo < **4 %** (~5 Gi), rétabli au-dessus de **6 %**. (earlyoom tue le
serveur d'inférence à ~2 %.)
- Endpoint : injoignable, ou latence > 10 s.
- Relevé spark figé > 5 min → alerte « writer arrêté ou spark KO ».
## Voir l'état courant
```
cat /mnt/ARCH3/docker/openclaw-data/workspace/.spark-health.json # RAM + endpoint (spark)
cat /mnt/ARCH3/docker/openclaw-data/workspace/.llm-monitor-state.json # dernier verdict notifier
docker exec openclaw-gateway openclaw cron get dbd2e8dd-68d1-4ebe-9a55-7f33810de6bc | tail -20
```
## ARRÊTER
- Notifier (.17) : `docker exec openclaw-gateway openclaw cron disable dbd2e8dd-68d1-4ebe-9a55-7f33810de6bc`
- Mesure (spark) : `crontab -e` puis retirer la ligne contenant `health-writer.sh`
(ou `crontab -l | grep -v health-writer.sh | crontab -`).
## RELANCER
- Notifier (.17) : `docker exec openclaw-gateway openclaw cron enable dbd2e8dd-68d1-4ebe-9a55-7f33810de6bc`
- Mesure (spark) : `( crontab -l 2>/dev/null; echo "* * * * * /home/tmzf5455/spark-llm-monitor/health-writer.sh >/dev/null 2>&1" ) | crontab -`
## Dashboard Home Assistant (affichage live + pilotage)
Le notifier publie l'état dans HA à chaque cycle (best-effort) et lit un interrupteur :
- `input_number.llm_mem_avail_pct` — RAM disponible (%) du spark.
- `input_text.llm_monitor_status` — libellé d'état (« OK · RAM 6% · 15:56 » ou l'alerte).
- `input_boolean.llm_monitor_enabled` — **interrupteur de pilotage** : OFF coupe les
alertes WhatsApp (l'affichage reste à jour), ON les réactive.
À appliquer une fois (fichiers brouillons dans le workspace) :
1. Paquet : `llm-monitor-ha-package.yaml.draft` → déposer dans les `packages/` de HA
(ex. `packages/llm_monitor.yaml`), puis Développeur > YAML : recharger
`input_boolean`, `input_number`, `input_text`.
2. Carte : `llm-monitor-ha-card.yaml.draft` → ajouter à un tableau de bord (carte manuelle).
Les entités se remplissent au cycle suivant (≤ 2 min).
## Tester à la demande
```
docker exec openclaw-gateway openclaw cron run dbd2e8dd-68d1-4ebe-9a55-7f33810de6bc 2>&1 | tail -15
```
Sortie vide = tout va bien. Pour forcer une alerte de test : arrêter brièvement le
serveur d'inférence, ou pointer le notifier sur un port mort (`SPARK_BASE=http://127.0.0.1:9`).