6b288bfa49
Replace sac.kalinamall.ru with sac.example.com in public docs/deploy. Remove Push-Mirror and Rewrite-GitHostUrls scripts from repo. Simplify workspace-three-repos.md for GitHub-only workflow. Co-authored-by: Cursor <cursoragent@cursor.com>
5.5 KiB
5.5 KiB
E2E и нагрузочное тестирование SAC + агенты
Чеклист после freeze MVP (work-plan.md). Отмечайте дату и хост.
Дни 1–2: функциональный E2E
Linux (ssh-monitor, UseSAC=dual или exclusive)
ssh-monitor --check-sac→ HTTP 201/202, событиеagent.testв UI- Успешный SSH login →
ssh.login.successв SAC + Telegram (dual) - Неудачный SSH →
ssh.login.failed SERVER_DISPLAY_NAMEзадан → в SAC Хосты отображается display name- Heartbeat →
agent.heartbeat, хост неstaleв пределахSAC_HEARTBEAT_STALE_MINUTES - Daily report →
report.daily.ssh(агент или SAC:python -m app.jobs.daily_report --force,details.generated_by)
Windows (RDP-login-monitor, UseSAC=dual)
-CheckSac→ ingest OK- Старт монитора →
agent.lifecycleв SAC (HTTP 201), Telegram «ЗАПУЩЕН» - Версия в UI Хосты =
$ScriptVersionпосле деплоя $ServerDisplayName→ display name в SAC- 4624/4625 (тестовый вход) →
rdp.login.*при наличии событий - Dashboard: новое событие появляется в «Последние события» без F5 (~5 с)
SAC UI
- Problems: open → ack → resolve
- Дубликат
event_id→ HTTP 409, одна строка в БД - Правило brute-force (порог событий) → Problem
SAC Telegram — severity и exclusive (notif-02)
Предусловие: на prod после 79a78dc+ выполнен деплой (sudo /opt/sac-deploy.sh → миграция 004_notification_channels).
| # | Шаг | Ожидание |
|---|---|---|
| 1 | UI → Настройки → «Проверить Telegram» | Сообщение «✅ SAC: тестовое сообщение…» в чате |
| 2 | Включить Telegram, min severity = warning, сохранить (token/chat из env или форма) |
GET: source=db, configured=true |
| 3 | Ingest rdp.login.failed (severity warning) — см. curl ниже |
Telegram: «🚨 SAC событие», severity warning |
| 4 | Ingest rdp.login.success (severity info) — новый event_id |
Событие в UI, нет сообщения в Telegram |
| 5 | Сменить min severity на high, сохранить |
Повтор failed (warning) → нет TG; high problem → TG |
| 6 | Агент UseSAC=exclusive: неудачный вход |
TG только из SAC, не из бота агента |
Синтетический ingest (без RDP-хоста): подставьте SAC_API_KEY и уникальный event_id.
API_KEY="sac_…"
BASE="https://sac.example.com"
# warning → должен уйти в TG при min=warning
curl -sS -X POST "$BASE/api/v1/events" \
-H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
-d '{
"schema_version": "1.0",
"event_id": "00000000-0000-4000-8000-000000000101",
"occurred_at": "2026-05-29T12:00:00+03:00",
"source": {"product": "rdp-login-monitor", "product_version": "1.2.20-SAC"},
"host": {"hostname": "E2E-RDP", "os_family": "windows", "display_name": "E2E RDP test"},
"category": "auth",
"type": "rdp.login.failed",
"severity": "warning",
"title": "RDP login failed (E2E)",
"summary": "notif-02 synthetic failed login"
}'
# info → не должен уйти в TG при min=warning
curl -sS -X POST "$BASE/api/v1/events" \
-H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
-d '{
"schema_version": "1.0",
"event_id": "00000000-0000-4000-8000-000000000102",
"occurred_at": "2026-05-29T12:01:00+03:00",
"source": {"product": "rdp-login-monitor", "product_version": "1.2.20-SAC"},
"host": {"hostname": "E2E-RDP", "os_family": "windows"},
"category": "auth",
"type": "rdp.login.success",
"severity": "info",
"title": "RDP login success (E2E)",
"summary": "notif-02 synthetic success — no TG expected"
}'
Отметка: дата ______, оператор ______, результат TG шагов 3–4: ☐ OK / ☐ fail
Дни 3–4: нагрузка и устойчивость
- Пакет 50+
ssh.login.failedс одного IP → агрегация/Problem, без зависания UI - Повтор ingest с тем же
event_id→ 409 - Остановка SAC API → spool на агенте, восстановление после
/health - Flapping heartbeat: stale → warning в health / хостах
День 5: регресс
- Обновление RDP через Deploy: одна версия в
deployed_version.txt, ingest после 1.2.14+ JSON sac-retention.timeractive; ручнойsystemctl start sac-retention.service— exit 0- Известные issues занесены в issue tracker /
known-issues.md
Дни 6–7: soak
- 48–72 ч dual mode: нет роста spool без причины, диск БД в норме
- Только bugfix по результатам выше
Версии на момент чеклиста
| Компонент | Версия |
|---|---|
| ssh-monitor | 1.2.6-SAC |
| RDP-login-monitor | 1.2.20-SAC |
| security-alert-center | 0.7.0 (backend/app/version.py) |