1639261cde
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>
3.4 KiB
3.4 KiB
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-хосты пачками по 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).
Принято / сделано
- Pool БД 15+25, defer daily push — SAC 0.5.0
sac-deploy.shбезsourceконфига, preflight pydantic — SACfa1bd41- Watchdog: строка
🖥️ Сервер:в Telegram — ssh-monitor 2.1.9-SAC
После реализации пунктов SAC — bump APP_VERSION и runbook.