Files
security-alert-center/docs/ingest-mass-update-backlog.ru.md
T
PTah 1639261cde docs: backlog for ingest resilience during mass agent updates
Operational and code TODOs from mass SSH-update incident; does not
block ssh-monitor phase 2.2.0.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-08 11:28:57 +10:00

3.4 KiB
Raw Blame History

Backlog: ingest и массовое обновление агентов

Статус: ToDo (не в текущем релизе).
Контекст: массовый SSH-update через SAC (10+ хостов) + sac-deploy в одно окно → часть POST в ingest «теряется» с точки зрения агента (SAC POST HTTP :), flood в Telegram (fallback + watchdog).
Связано: runbook-ops.md, agent-integration.md, ssh-monitor 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-хосты пачками по 23, не все подряд.
  • На зрелых хостах перевести 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).

Принято / сделано

  • Pool БД 15+25, defer daily push — SAC 0.5.0
  • sac-deploy.sh без source конфига, preflight pydantic — SAC fa1bd41
  • Watchdog: строка 🖥️ Сервер: в Telegram — ssh-monitor 2.1.9-SAC

После реализации пунктов SAC — bump APP_VERSION и runbook.