3.7 KiB
3.7 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
/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 — SACfa1bd41- Watchdog: строка
🖥️ Сервер:в Telegram — ssh-monitor 2.1.9-SAC
После реализации пунктов SAC — bump APP_VERSION и runbook.