Внедрение KESL на ВМ2 + замена CLAMAV на KESL
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
Документ задаёт, **что агент ВМ2 реализует в Compose, коде, тестах и алертах этой машины**.
|
||||
|
||||
ВМ2 владеет nginx (public CRM webhook + private `8443`), `message-safety`, `bitrix-sync`, `clamd`/`freshclam`, Redis Safety и локальным Collector. Guest bootstrap, Keycloak, `api-backend` и `bitrix-local-app` живут на ВМ1. ВМ2 не использует Docker hostname collector ВМ1.
|
||||
ВМ2 владеет nginx (public CRM webhook + private `8443`), `message-safety`, `bitrix-sync`, Redis Safety и локальным Collector в Compose, а также host KESL 12.4 standalone и root-owned fail-closed broker. Guest bootstrap, Keycloak, `api-backend` и `bitrix-local-app` живут на ВМ1. ВМ2 не использует Docker hostname collector ВМ1.
|
||||
|
||||
Агент ВМ2 не добавляет scrape, дашборды и алерты сервисов ВМ1.
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
| Redis Safety | `redis` |
|
||||
| local Collector | `otel-collector` |
|
||||
|
||||
`clamd` / `freshclam` покрываются host/container metrics и сигналами Safety (signature age, scan lanes), отдельное `service.name` в реестр arch-07 не добавляется без явного решения.
|
||||
Host KESL и broker покрываются host/systemd metrics и сигналами Safety (database age, broker availability/latency, scan concurrency); отдельное `service.name` в реестр arch-07 не добавляется без явного решения.
|
||||
|
||||
Различать экземпляр от ВМ1 через `host.name` / `service.instance.id`.
|
||||
|
||||
@@ -44,7 +44,7 @@ Scrape targets ВМ2 (кроме самого Collector): Redis Safety exporter,
|
||||
|
||||
- server spans API с route template; poll `202` не маскирует финальный verdict;
|
||||
- worker spans claim/process/finalize и span links на origin `request_id` / `trace_id` caller;
|
||||
- child spans: PostgreSQL Safety schema, Redis Safety, S3 quarantine, ClamAV/DNS classification без file content и raw URL;
|
||||
- child spans: PostgreSQL Safety schema, Redis Safety, S3 quarantine, KESL broker/DNS classification без file content, socket payload/path и raw URL;
|
||||
- `/health/live` исключить из traces; capability/readiness — metrics и sampled logs;
|
||||
- stub mode (`400`, non-sticky) маркируется как `stub`; production SLO Safety на stub недостоверен.
|
||||
|
||||
@@ -67,7 +67,7 @@ Exporter и ACL — arch-07 §8.2–8.3. Клиентские pool/queue metrics
|
||||
|
||||
### 4.5. Host/Docker ВМ2
|
||||
|
||||
CPU, memory, disk, network, restarts/OOM, Docker daemon, clock sync — arch-07 §8.5. Отдельно контролировать `clamd` restarts, signature age и scan lane saturation.
|
||||
CPU, memory, disk, network, restarts/OOM, Docker daemon, clock sync — arch-07 §8.5. Отдельно контролировать host KESL/broker unit state, права `/run/han-kesl/scan.sock`, database age, hourly update result и broker/KESL saturation.
|
||||
|
||||
## 5. Метрики бизнес-потоков ВМ2
|
||||
|
||||
@@ -105,7 +105,7 @@ UUID/user/session/dialog/task/message id не labels.
|
||||
В SigNoz, с filter `host.name` / environment ВМ2:
|
||||
|
||||
1. **nginx ingress ВМ2**: RPS, 4xx/5xx, upstream latency/status, TLS, cache, **CRM webhook** (accept/reject by source IP, method, rate limit). Без guest API/WS — это ВМ1.
|
||||
2. **message-safety**: capabilities, verdicts, `202` poll, PG queue age/leases/fencing, ClamAV/signature age, file/link cache и DNS dependency. Stub явно маркируется.
|
||||
2. **message-safety**: capabilities, verdicts, `202` poll, PG queue age/leases/fencing, KESL broker/database age, file/link cache и DNS dependency. `scanner_engine=kesl`; `signatures_version` представлен как hash KESL version + database date. Stub явно маркируется.
|
||||
3. **bitrix-sync**: mode/readiness, queue depth/oldest age, workflow/command transitions, CRM batch latency/subcommand outcome, limiter/throttle, retry/DLQ, webhook/reconciliation lag, mapping invariants и business-alert SLA. До cutover — `sync_disabled`.
|
||||
4. **Redis Safety**: memory/evictions/AOF/latency/clients/keyspace.
|
||||
|
||||
@@ -127,7 +127,7 @@ UUID/user/session/dialog/task/message id не labels.
|
||||
- Redis Safety unavailable, AOF error или sustained evictions;
|
||||
- Collector ВМ2 exporter queue >80%, dropped/refused telemetry >0 sustained;
|
||||
- TLS expiry public webhook host и private `8443` <14 дней warning, <7 дней page;
|
||||
- disk/OOM/restart loop ВМ2; `clamd` restart loop / stale signatures по runbook module-05.
|
||||
- disk/OOM/restart loop ВМ2; KESL/broker unit down, hourly update failure или stale database по runbook module-05.
|
||||
|
||||
### Ticket/warning
|
||||
|
||||
@@ -151,7 +151,7 @@ Optional profile `observability-local` на ВМ2 по умолчанию вык
|
||||
### Высокая latency сообщения (hop ВМ2)
|
||||
|
||||
1. Найти task/span по `request_id` caller.
|
||||
2. Разделить Safety API, worker lease, ClamAV/DNS, S3 quarantine, sync queue.
|
||||
2. Разделить Safety API, worker lease, KESL broker/DNS, S3 quarantine, sync queue.
|
||||
3. Проверить circuit, queue age, PG leases/fencing и Redis Safety.
|
||||
4. Не повторять ambiguous scan/send без исходного idempotency key.
|
||||
5. Следовать runbook [`module-05-message-safety.md`](module-05-message-safety.md) / [`module-07-bitrix-sync.md`](module-07-bitrix-sync.md).
|
||||
@@ -171,7 +171,7 @@ Optional profile `observability-local` на ВМ2 по умолчанию вык
|
||||
- Collector ВМ2 validate + up в root Compose; hostname collector ВМ1 не используется;
|
||||
- инструментированы `message-safety` API/worker и `bitrix-sync`;
|
||||
- nginx JSON parsing, webhook reject metric и private `8443` correlation проверены;
|
||||
- Redis Safety, host/Collector, ClamAV signature age metrics доступны;
|
||||
- Redis Safety, host/Collector, KESL broker/database age/hourly update metrics доступны;
|
||||
- дашборды и alerts §6–§7 provisioned либо явно TBD до SigNoz packaging;
|
||||
- stub/MOCK маркируются; production Safety SLO не объявляется на stub;
|
||||
- до sync cutover dashboard `sync_disabled`;
|
||||
|
||||
Reference in New Issue
Block a user