diff --git a/docs/ingest-mass-update-backlog.ru.md b/docs/ingest-mass-update-backlog.ru.md new file mode 100644 index 0000000..2a29cea --- /dev/null +++ b/docs/ingest-mass-update-backlog.ru.md @@ -0,0 +1,48 @@ +# 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 агрессивнее (уже частично есть). +- [ ] Watchdog: не слать Telegram при штатном restart во время SAC-update (флаг/state file от updater) — **отдельно от** подписи сервера (2.1.9). +- [ ] Документировать рекомендуемый `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.*