W1 shu faylni
wiki/agentlar/X2.mdga oladi.
Barcha agentlarning heartbeat'ini (run/heartbeat/<id>.json) kuzatadi, muammoni
aniqlaydi, qayta yoqadi (yoki Mac'da simulyatsiya qiladi), insident yozadi va
data/dashboard.json ni yangilaydi (www/index.html shundan o'qiydi).
konfig/agentlar.json — kuzatiladigan agentlar ro'yxati, sla_daq, tur,
qayta_yoqish.{max,oraliq_daq}, unit.run/heartbeat/<id>.json — har agentning yurak urishi.data/kpi/<id>/<sana>.json — dashboard uchun kunlik hisob.data/insident/<sana>.jsonl — kod: HB_XATO | HB_ESKI | RESTART_MAX.data/x2/restart.json — qayta yoqish hisobi ({agent: {soni, oxirgi}}) va
_ochiq — hozir ochiq turgan insidentlar ro'yxati (bir agentga bitta,
spam bo'lmasin uchun).data/dashboard.json — har sikl oxirida qayta yoziladi.X2: {sikllar, restartlar, insidentlar, ochiq_insident}.RESTART_MAX) yoki oddiy insidentda shlyuz orqali S-900
direktorga.bin/inplus ishga X2 # bitta sikl (--bir-marta majburiy bin/inplus da)
python3 agents/x2_doktor/main.py --sikl 3 --oraliq 5
python3 agents/x2_doktor/main.py --bir-marta --simulyatsiya # Mac uchun majburiy simulyatsiya
Prodda (Linux, systemd bor): python3 agents/x2_doktor/main.py argumentsiz —
abadiy 30 s siklda ishlaydi, systemctl restart inplus-<unit> bilan qayta yoqadi.
Mac'da (systemctl topilmasa) avtomatik simulyatsiya rejimiga o'tadi: agentni
agents/<papka>/main.py --bir-marta bilan to'g'ridan-to'g'ri qayta ishga
tushiradi — natija heartbeat'dan darhol ko'rinadi.
xato yoziladi, exit != 0. Prodda
Restart=always + WatchdogSec=120 (sd_notify) uni qayta ko'taradi.qayta_yoqish.max) — RESTART_MAX
kritik, X2 uni qayta yoqishni TO'XTATADI, odamga S-900 kritik xabar ketadi.egasi (konfig/agentlar.json); topilmasa direktor (X-001),
S-900 orqali.NextElapseUSecRealtime bilan aniqlanadi; Mac
demo'da soddalashtirilgan).holat: tugadi uchun keyingi_kutilgan hozircha lib/inplus/agent.py da
doim null yoziladi — shuning uchun timer agentlar uchun oxirgi
tugadidan SLA daqiqadan ko'p o'tganini zaxira mezon sifatida ishlatamiz.