8de5d14cfb
Co-authored-by: Cursor <cursoragent@cursor.com>
3.8 KiB
3.8 KiB
Фаза 2.2 — Heartbeat и daily report через SAC
Агент уже шлёт в SAC (в т.ч. в exclusive):
| Тип | Интервал (ssh-monitor) |
|---|---|
agent.heartbeat |
каждые 12 ч |
report.daily.ssh |
раз в сутки после DAILY_REPORT_HOUR |
SAC отображает их в События и на Dashboard / Хосты.
UI SAC
- Dashboard: счётчики heartbeat/отчётов за 24 ч, хосты с устаревшим heartbeat.
- Хосты: колонки Агент (
online/stale/unknown), время последнего heartbeat и отчёта (ссылка на Отчёты по hostname). - Отчёты (
/reports): списокreport.daily.*по узлам; клик по строке — карточка с метриками и полным текстом (HTML/report_bodyвdetails). - Старые события без
details.report_bodyпоказывают подсказку обновить агент.
Настройка порога «живости» (сервер SAC)
В config/sac-api.env:
# По умолчанию 780 мин (13 ч) — чуть больше интервала heartbeat агента (12 ч)
SAC_HEARTBEAT_STALE_MINUTES=780
После изменения: sudo systemctl restart sac-api.
Проверка на пилотном хосте (exclusive)
-
Дождаться heartbeat или ускорить тест: на агенте временно уменьшить интервал нельзя без правки кода — проще подождать или вручную:
sudo /usr/local/bin/ssh-monitor --dry-run(не шлёт реально; для реального теста — дождаться цикла 12 ч или смотреть уже пришедшие события).
-
В SAC UI → События, фильтр
type=agent.heartbeat. -
Хосты → статус
onlineпосле свежего heartbeat. -
Ежедневный отчёт: после
DAILY_REPORT_HOUR— событиеreport.daily.ssh(от агента) или от SAC приSAC_DAILY_REPORT_ENABLED=trueи отсутствии отчёта агента за сутки.
SAC: отчёт без агента (exclusive / пропуск агента)
В config/sac-api.env:
SAC_DAILY_REPORT_ENABLED=true
SAC_DAILY_REPORT_HOUR=9
SAC_DAILY_REPORT_TIMEZONE=Europe/Moscow
SAC_DAILY_REPORT_SKIP_IF_AGENT_SENT=true
SAC_DAILY_REPORT_REQUIRE_ACTIVITY=true
- Job:
cd backend && .venv/bin/python -m app.jobs.daily_report(ручной прогон:--force). - Timer:
deploy/systemd/sac-daily-report.service+.timer— 09:00 вSAC_DAILY_REPORT_TIMEZONE(генерируется изSAC_DAILY_REPORT_HOUR, безRandomizedDelaySec). - Оповещение:
notify_daily_report— не режетсяNOTIFY_MIN_SEVERITY=warning(severity отчётаinfo). - UI Отчёты и Telegram используют
details.report_html/report_bodyкак у агента.
Установка timer (один раз на сервере):
sudo cp /opt/security-alert-center/deploy/systemd/sac-daily-report.service /etc/systemd/system/
sudo bash /opt/security-alert-center/deploy/systemd/render-sac-daily-report-timer.sh \
/opt/security-alert-center/config/sac-api.env \
/etc/systemd/system/sac-daily-report.timer
sudo systemctl daemon-reload
sudo systemctl enable --now sac-daily-report.timer
Деплой
sudo /opt/sac-deploy.sh