Добавлен OTLP-провайдер, реализовано отбрасывание метрик и трейсов в observability + добавлен перезапуск nginx при пересборке контейнеров (ошибка, когда докер меняет адреса сервисов)
This commit is contained in:
@@ -58,7 +58,14 @@ Bootstrap:
|
||||
3. Выпустить certificate без остановки nginx.
|
||||
4. Проверить `nginx -t`, атомарно активировать TLS config, reload.
|
||||
|
||||
Renew container/host timer выполняет `certbot renew` минимум дважды в сутки; после фактического renewal — `nginx -s reload`. Reload допускается только после `nginx -t`; при ошибке остаётся старый worker/config/cert и срабатывает alert. Контролируются expiry days и последняя успешная попытка. Staging CA используется в rehearsal, чтобы не исчерпать лимиты.
|
||||
Renew container/host timer выполняет `certbot renew` минимум дважды в сутки;
|
||||
после фактического renewal проверяет рабочую конфигурацию командой
|
||||
`docker compose exec -T nginx nginx -t -c /tmp/nginx.conf` и отправляет
|
||||
master-процессу `docker compose kill -s HUP nginx`. Bare-команды `nginx -t` и
|
||||
`nginx -s reload` запрещены: контейнер read-only, а рабочие config/PID находятся
|
||||
в `/tmp`. При ошибке остаётся старый worker/config/cert и срабатывает alert.
|
||||
Контролируются expiry days и последняя успешная попытка. Staging CA используется
|
||||
в rehearsal, чтобы не исчерпать лимиты.
|
||||
|
||||
## 6. Request ID и forwarded headers
|
||||
|
||||
|
||||
@@ -541,7 +541,8 @@ Legal retention/erasure имеет приоритет; изменение тре
|
||||
|
||||
### Решения
|
||||
|
||||
- O1: обязательный архитектурный минимум — Collector; удалённый управляемый OTLP backend является предпочтительным operable-вариантом и остаётся TBD до выбора провайдера.
|
||||
- O1: обязательный архитектурный минимум — Collector; выбран self-hosted SigNoz
|
||||
на отдельной VM `192.168.0.5`, доступный по приватному OTLP gRPC.
|
||||
- O2: Prometheus/Grafana/Loki/Tempo — отдельный operable profile, не скрытая обязательная нагрузка основной VM.
|
||||
- O3: JSON stdout — аварийный локальный buffer; audit App DB — durable.
|
||||
- O4: telemetry fail-open для business path, но потеря telemetry alertится.
|
||||
@@ -549,7 +550,8 @@ Legal retention/erasure имеет приоритет; изменение тре
|
||||
|
||||
### TBD
|
||||
|
||||
- O-TBD1: выбрать remote backend/provider, endpoint/auth и стоимость.
|
||||
- O-TBD1 закрыт: self-hosted SigNoz, `192.168.0.5:4317`, plaintext только
|
||||
внутри доверенной приватной сети; UI через SSH jump host.
|
||||
- O-TBD2: утвердить SLO/RPS/error-budget с product owner.
|
||||
- O-TBD3: legal retention/erasure и допустимость IP/user-agent.
|
||||
- O-TBD4: точные sampling и resource limits после load test.
|
||||
@@ -562,7 +564,9 @@ Legal retention/erasure имеет приоритет; изменение тре
|
||||
2. `module-05` использует test-only terminal `400` и non-sticky verdict вместо canonical `403`/sticky production verdict. Dashboards обязаны маркировать сервис `stub`; production SLO Safety на нём недостоверен.
|
||||
3. `module-07` — только DB connectivity stub, тогда как arch-01/02 описывают полноценную CRM sync. Dashboard не должен показывать queue/CRM SLI, которых нет.
|
||||
4. Retention, RPO/RTO и production SLO открыты в module-01/04/06/08; значения этого документа являются initial ops policy, не закрывают legal/product TBD.
|
||||
5. Новые observability env (`OTEL_REMOTE_*`, sampling/queue limits) отсутствуют в arch-04; перед реализацией production `.env.example` их нужно добавить туда.
|
||||
5. Observability env (`OTEL_REMOTE_*`, service names, sampling/queue limits)
|
||||
добавлены в arch-04 и `.env.example`; sampling/queue limits уточняются после
|
||||
load test.
|
||||
|
||||
## 19. Ссылки на прототип и исходные документы
|
||||
|
||||
|
||||
@@ -544,9 +544,9 @@ docker compose --profile certbot run --rm certbot certonly \
|
||||
|
||||
```bash
|
||||
cd <BACKEND_ROOT>
|
||||
docker compose exec -T nginx nginx -t
|
||||
docker compose exec -T nginx nginx -t -c /tmp/nginx.conf
|
||||
# активировать rendered TLS config атомарно
|
||||
docker compose exec -T nginx nginx -s reload
|
||||
docker compose kill -s HUP nginx
|
||||
```
|
||||
|
||||
HSTS пока не включать. Проверить chain/hostname/redirect, затем включить HSTS без preload.
|
||||
@@ -559,8 +559,8 @@ HSTS пока не включать. Проверить chain/hostname/redirect,
|
||||
|
||||
1. взять `flock`, чтобы исключить параллельные запуски;
|
||||
2. выполнить `docker compose --profile certbot run --rm certbot renew --webroot -w /var/www/certbot --quiet`;
|
||||
3. при успешном обновлении проверить `docker compose exec -T nginx nginx -t`;
|
||||
4. только после успешной проверки выполнить `docker compose exec -T nginx nginx -s reload`;
|
||||
3. при успешном обновлении проверить `docker compose exec -T nginx nginx -t -c /tmp/nginx.conf`;
|
||||
4. только после успешной проверки выполнить `docker compose kill -s HUP nginx`;
|
||||
5. записать структурированный результат и метрику времени до истечения;
|
||||
6. вернуть ненулевой exit code при ошибке, чтобы сработал alert;
|
||||
7. не удалять действующий сертификат при неуспешном renew.
|
||||
@@ -761,9 +761,18 @@ docker compose up -d keycloak
|
||||
docker compose up -d message-safety
|
||||
docker compose up -d bitrix-local-app bitrix-sync
|
||||
docker compose up -d nginx
|
||||
docker compose up -d --wait api-backend keycloak sms-service bitrix-local-app
|
||||
docker compose exec -T nginx nginx -t -c /tmp/nginx.conf
|
||||
docker compose kill -s HUP nginx
|
||||
docker compose ps
|
||||
```
|
||||
|
||||
При повторной раскатке reload после readiness upstream обязателен: nginx
|
||||
разрешает Docker DNS при загрузке конфигурации и иначе может продолжить
|
||||
обращаться к старому container IP. Bare-команды `nginx -t` и
|
||||
`nginx -s reload` не использовать: рабочий config/PID находятся в `/tmp`, а
|
||||
filesystem контейнера read-only.
|
||||
|
||||
После каждого шага ждать health, но проверять readiness отдельно из internal network:
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user