ВМ1: реализован сбор логов

This commit is contained in:
mi
2026-09-07 12:46:45 +03:00
parent 44db38f6fe
commit 85df788f2d
42 changed files with 1669 additions and 310 deletions
@@ -339,6 +339,21 @@ downgrade запрещены.
## 9. Упорядоченный первый запуск
До preflight установите host Collector из pinned release artifact. Версию и
SHA-256 возьмите из утверждённого release record, не из ответа GitHub API:
```sh
export OTEL_HOST_COLLECTOR_VERSION='0.117.0'
export OTEL_HOST_COLLECTOR_SHA256='90710c909a30fc3b89dd0e389c13f9e57ebbb87d6a0dc51fdde0bf03499a5f25'
deployment/scripts/setup-vm.sh
/usr/local/bin/otelcol-contrib validate \
--config=deployment/observability/otel-host-collector.yaml
```
`setup-vm.sh` устанавливает и enable-ит unit, но не запускает host Collector.
Он работает без Docker socket; offsets и exporter queue находятся в
`/var/lib/han-otel/host-collector`.
Первый запуск выполняет root через фиксированный launcher:
```sh
@@ -363,6 +378,8 @@ docker kill --signal HUP "$NGINX_ID" >/dev/null
unset NGINX_ID
systemctl enable han-secrets@production.service han-stack@production.service
systemctl start han-stack@production.service
systemctl start han-host-otel-collector@production.service
systemctl --no-pager status han-host-otel-collector@production.service
```
`han-stack@production` становится единственным routine lifecycle interface.
@@ -435,6 +452,13 @@ staging, выполнять config test и HUP.
5xx/auth/Safety/PG/Redis/OOM/disk/OTEL queue/TLS. Отправьте только fake canary
token/PII markers и докажите их отсутствие в logs/traces.
В SigNoz один canary request должен дать ровно по одному application log от
nginx/API/Bitrix, а `trace_id`/`span_id` application logs должны открывать
соответствующий span. Platform logs ищутся по `host.name`, `service.name` и
временному окну. Проверьте отсутствие `unknown-container`, дублей Python logs,
логов обоих Collector и экспоненциального роста ingest. После restart host
Collector старые записи не должны replay-иться: offsets сохраняются.
KESL 12.4 устанавливается и принимается только по отдельному операторскому
runbook `deployment/kesl/RUNBOOK.KESL.ru.md`. Не совмещайте установку,
полную/контейнерную антивирусную проверку или изменение File Threat Protection
@@ -445,7 +469,8 @@ runbook `deployment/kesl/RUNBOOK.KESL.ru.md`. Не совмещайте уста
```sh
systemctl is-enabled docker.service han-chat-docker-firewall.service \
han-secrets@production.service han-stack@production.service certbot.timer
han-secrets@production.service han-stack@production.service \
han-host-otel-collector@production.service certbot.timer
systemctl reboot
```
@@ -466,10 +491,13 @@ systemctl daemon-reload
systemctl restart han-secrets@production.service
/opt/han-chat/current/backend/deployment/preflight.sh
systemctl restart han-stack@production.service
systemctl restart han-host-otel-collector@production.service
```
Повторите smoke и зафиксируйте digests. Не удаляйте current/previous release,
active images, evidence или volumes. После incompatible migration используйте
active images, evidence, volumes или `/var/lib/han-otel`: offsets/queue должны
пережить rollback. Если previous release не содержит совместимого host config,
остановите host unit до возврата совместимой версии. После incompatible migration используйте
forward fix либо согласованный PG PITR + S3/Bitrix reconciliation в maintenance
window; Redis восстанавливается пустым и прогревается из PG.