5.2 KiB
HEARTBEAT.md
🌊 Watchdog: noisemap Flask (port 5555)
🤖 Watchdog: orchestrator pipeline (ORCH-задачи) — ПРИОРИТЕТ
Чтобы НЕ терять конвейер: на каждом heartbeat проверять активные ORCH-задачи и докладывать Славе об изменениях стадий / застреваниях / падениях. Особенно при ведении эпика ORCH-54 (автономное внедрение).
sshpass -p 'motoZ@yaz2010' ssh -o StrictHostKeyChecking=no -o ConnectTimeout=15 slin@82.22.50.71 "docker exec orchestrator python3 /tmp/orch_watch.py" 2>/dev/null
Если /tmp/orch_watch.py отсутствует — создать его (в контейнере) со скриптом: вывести активные ORCH-задачи (SELECT id,work_item_id,stage,updated_at FROM tasks WHERE stage!='done' AND work_item_id LIKE 'ORCH%') и активную очередь (jobs WHERE status IN ('queued','running')).
Логика:
- Задача сменила стадию → доложить («ORCH-XX: stage → review»).
- Задача застряла (stage!=done, нет активных job, updated_at давно) → проверить гейт, при нужде пнуть штатно (как ORCH-044), доложить.
- Job failed / transient (429) → доложить + следить за ретраем (breaker).
- Спокойно и без изменений → HEARTBEAT_OK (не спамить).
- Последнюю известную стадию по каждой ORCH-задаче держать в
memory/heartbeat-state.json.
🔄 Yandex backfill (02-19.04 thread_title)
Rate limit сброс ~01:00 UTC. Запустить:
/home/node/.openclaw/skills/installer/scripts/ssh_exec.sh --host fr24 --cmd "sg docker -c 'docker exec fr24-schedule python backfill.py --start-date 2026-04-06 --end-date 2026-04-19 2>&1'" --timeout 1800
Если снова 429 — подождать ещё час и повторить.
🌊 Watchdog: noisemap Flask (port 5555)
Check if Flask is running on port 5555. If not — start it silently.
curl -s --connect-timeout 2 http://localhost:5555/ > /dev/null 2>&1 || (cd /home/node/.openclaw/workspace/tasks/flightradar24/prototype && nohup /home/node/.openclaw/workspace/tasks/flightradar24/prototype/venv/bin/python app.py > /tmp/noisemap.log 2>&1 &)
Run the shell command above. If Flask responded (exit 0) — do nothing. If Flask was not running (exit non-0) — start it with the command above and report: "🚀 noisemap Flask restarted on port 5555".
🏔️ Watchdog: snowbike-rag (port 5557)
Check if snowbike-rag is running on port 5557. If not — start it via start.sh.
curl -s --connect-timeout 2 http://localhost:5557/health > /dev/null 2>&1 || bash /home/node/.openclaw/workspace/tasks/snowbike-rag/start.sh > /dev/null 2>&1
If Flask responded (exit 0) — do nothing, reply HEARTBEAT_OK. If not running — start it and report: "🚀 snowbike-rag restarted on port 5557".
🏔️ Watchdog: Terrain hypso tile generation
Проверять статус генерации hypso тайлов (зумы 5-14) каждые 30 минут и отписываться Славе.
cd /home/node/.openclaw/workspace/tasks/enduro-trails/prototype && node -e "
const { Client } = require('ssh2');
const conn = new Client();
function exec(conn, cmd) {
return new Promise((resolve, reject) => {
conn.exec(cmd, (err, stream) => {
if (err) return reject(err);
let out = '', e = '';
stream.on('data', d => out += d);
stream.stderr.on('data', d => e += d);
stream.on('close', () => resolve({ out: out.trim(), err: e.trim() }));
});
});
}
conn.on('ready', async () => {
const zooms = await exec(conn, 'ls /home/slin/enduro-trails/data/terrain/hillshade/ 2>/dev/null | grep -v xml | sort -n | tr \\\"\\n\\\" \\\" \\\"');
const pngs = await exec(conn, 'find /home/slin/enduro-trails/data/terrain/hillshade -name \\\"*.png\\\" 2>/dev/null | wc -l');
const procs = await exec(conn, 'pgrep -c gdal2tiles 2>/dev/null || echo 0');
console.log('zooms:' + zooms.out + ' pngs:' + pngs.out + ' procs:' + procs.out);
conn.end();
});
conn.connect({ host: '82.22.50.71', username: 'slin', password: 'motoZ@yaz2010', readyTimeout: 15000 });
" 2>/dev/null
Если procs: 0 И зумы 10-15 все есть → hillshade готов → запустить ручные тесты TC-07..TC-25 и отписаться Славе.
Если ещё идёт → отписаться: «🏔️ Hillshade: зумы X, PNGs Y, ещё генерируется».
🌐 Watchdog: vpn-srv FRP tunnel
Check if vpn-srv FRP tunnel is active (port 3322 on relay).
timeout 3 bash -c 'echo > /dev/tcp/185.130.212.192/3322' 2>/dev/null && echo ok || echo FAIL
If FAIL — try to reconnect via SSH tunnel:
ssh -i /home/node/.openclaw/ha_ssh_key -o StrictHostKeyChecking=no -o Port=3322 vpn@185.130.212.192 'echo meNt85doC | sudo -S systemctl restart frpc' 2>/dev/null
If tunnel still down — alert: "⚠️ vpn-srv FRP tunnel down, manual intervention needed".