d47131cd9f
Poll remote update_script.log while SSH update runs; skip lifecycle notify when host agent_update_state is running (SAC v0.5.1).
50 lines
3.5 KiB
Markdown
50 lines
3.5 KiB
Markdown
# Backlog: ingest и массовое обновление агентов
|
||
|
||
**Статус:** ToDo (не в текущем релизе).
|
||
**Контекст:** массовый SSH-update через SAC (10+ хостов) + `sac-deploy` в одно окно → часть POST в ingest «теряется» с точки зрения агента (`SAC POST HTTP :`), flood в Telegram (fallback + watchdog).
|
||
**Связано:** [runbook-ops.md](runbook-ops.md), [agent-integration.md](agent-integration.md), ssh-monitor [security-roadmap.ru.md](https://git.kalinamall.ru/PapaTramp/ssh-monitor/src/branch/main/docs/security-roadmap.ru.md).
|
||
|
||
Увеличение `SAC_DB_POOL_SIZE` / defer daily в **0.5.0** лечит штурм суточных отчётов и пул БД; **не** снимает узкие места ниже при одновременном restart многих агентов.
|
||
|
||
---
|
||
|
||
## Операционно (сразу, без кода)
|
||
|
||
- [ ] **Не совмещать** `sudo /opt/sac-deploy.sh` и массовое «Обновить ssh-monitor (SSH)» по многим хостам — сначала deploy SAC, потом агенты (или наоборот).
|
||
- [ ] Обновлять Linux-хосты **пачками по 2–3**, не все подряд.
|
||
- [ ] На зрелых хостах перевести **`UseSAC=exclusive`** (нет дубля в Telegram с агента при fallback); watchdog по-прежнему шлёт в Telegram сам.
|
||
- [ ] Перед первым SSH-update с SAC: **`ssh-keyscan`** в `config/ssh_known_hosts` (см. runbook).
|
||
- [ ] В `sac-api.env`: только `KEY=value` на строку, комментарии отдельной строкой с `#`.
|
||
|
||
---
|
||
|
||
## SAC (backend / deploy)
|
||
|
||
- [ ] **Defer** `notify_lifecycle` и `notify_auth_login` в background (как `report.daily.*` → `schedule_notify_daily_report`), чтобы ingest не ждал Telegram API.
|
||
- [ ] **Uvicorn workers:** 4 по умолчанию или `SAC_UVICORN_WORKERS` в `sac-api.env` / unit.
|
||
- [ ] **nginx:** отдельный `location` для `POST /api/v1/events` с увеличенным `proxy_read_timeout` (сейчас общий `location /` — 60s).
|
||
- [ ] Опционально: метрики/лог длительности ingest и очереди при burst.
|
||
- [ ] UI: предупреждение при массовом update («N хостов — рекомендуется пачками»).
|
||
|
||
---
|
||
|
||
## ssh-monitor (агент)
|
||
|
||
- [ ] При **shutdown** / `SIGTERM` не увеличивать `sac-fail.count` (или отдельный флаг «update in progress»).
|
||
- [ ] После успешного heartbeat сбрасывать fail counter агрессивнее (уже частично есть).
|
||
- [x] Watchdog: не слать Telegram при штатном restart во время SAC-update (state file `/var/lib/ssh-monitor/agent-update-in-progress` от updater) — **2.2.1-SAC**
|
||
- [x] Lifecycle stop/start при SAC-update: подавление на агенте + state file — **2.2.1-SAC**
|
||
- [ ] Документировать рекомендуемый `SAC_TIMEOUT_SEC` при тяжёлом ingest (сейчас 45s).
|
||
|
||
---
|
||
|
||
## Принято / сделано
|
||
|
||
- [x] Pool БД 15+25, defer daily push — SAC **0.5.0**
|
||
- [x] `sac-deploy.sh` без `source` конфига, preflight pydantic — SAC `fa1bd41`
|
||
- [x] Watchdog: строка `🖥️ Сервер:` в Telegram — ssh-monitor **2.1.9-SAC**
|
||
|
||
---
|
||
|
||
*После реализации пунктов SAC — bump `APP_VERSION` и runbook.*
|