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
This commit is contained in:
57
workspace/MONITORING-LLM.md
Normal file
57
workspace/MONITORING-LLM.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# 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`).
|
||||
Reference in New Issue
Block a user