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

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

  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).