Files
security-alert-center/docs/ingest-mass-update-backlog.ru.md
T
PapaTramp b148b558c3 feat: ingest burst hardening — defer lifecycle/auth, workers, nginx (v0.5.5)
Defer notify_lifecycle and notify_auth_login after commit; SAC_UVICORN_WORKERS via sac-api-start.sh; nginx /api/v1/events timeout; mass-update confirm in Hosts UI.
2026-07-08 13:16:13 +10:00

3.7 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 — 0.5.5
  • Uvicorn workers: 4 по умолчанию или SAC_UVICORN_WORKERS в sac-api.env / sac-api-start.sh0.5.5
  • nginx: отдельный location для POST /api/v1/events с увеличенным proxy_read_timeout0.5.5
  • Опционально: метрики/лог длительности ingest и очереди при burst.
  • UI: предупреждение при массовом update («N хостов — рекомендуется пачками») — 0.5.5

ssh-monitor (агент)

  • При shutdown / SIGTERM не увеличивать sac-fail.count (или отдельный флаг «update in progress»).
  • После успешного heartbeat сбрасывать fail counter агрессивнее (уже частично есть).
  • Watchdog: не слать Telegram при штатном restart во время SAC-update (state file /var/lib/ssh-monitor/agent-update-in-progress от updater) — 2.2.1-SAC
  • Sudo bootstrap/update через SAC: не слать Telegram (ssh_monitor_sudo_is_sac_maintenance, state-file раньше) — 2.2.3-SAC
  • SAC: suppress privilege.sudo.command при agent_update_state=running / maintenance command — 0.5.3
  • Документировать рекомендуемый 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.