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
3.1 KiB
3.1 KiB
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
- Côté spark (10.10.10.8) — cron
1 min:~/spark-llm-monitor/health-writer.shlit la RAM (/proc/meminfo) + teste l'endpoint local:8000/health, et publie.spark-health.jsondans le workspace. - Côté OpenClaw (.17) — cron
*/2 min, iddbd2e8dd-68d1-4ebe-9a55-7f33810de6bc, nomllm-monitor:node /home/node/.openclaw/workspace/llm-monitor.jslit 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 -epuis retirer la ligne contenanthealth-writer.sh(oucrontab -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) :
- Paquet :
llm-monitor-ha-package.yaml.draft→ déposer dans lespackages/de HA (ex.packages/llm_monitor.yaml), puis Développeur > YAML : rechargerinput_boolean,input_number,input_text. - 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).