наблюдаемость: завершить базовый контур Community
Добавить структурированные журналы, метрики, трассировку и безопасный канал критических ошибок. Усилить границы рантайма, тесты, проверку зависимостей и сценарии развёртывания.
This commit is contained in:
+93
-4
@@ -131,14 +131,103 @@ CRANK_CACHE_DEFAULT_TTL_MS=60000
|
||||
|
||||
## Логи
|
||||
|
||||
- `CRANK_LOG_LEVEL` - уровень логирования, например `info`, `debug`, `warn`.
|
||||
- `CRANK_ENVIRONMENT` - короткая метка окружения. При локальном запуске по
|
||||
умолчанию используется `development`, Community deployment явно передаёт
|
||||
`production`.
|
||||
- `CRANK_LOG_LEVEL` - фильтр `tracing`, например `info`, `debug`, `warn` или
|
||||
`admin_api=debug,tower_http=info`.
|
||||
|
||||
Поля с паролями, токенами, ключами и заголовками авторизации удаляются из снимков
|
||||
запросов и ответов. Один снимок ограничен 16 КиБ; более крупное значение хранится в
|
||||
усечённом виде с исходным размером.
|
||||
`admin-api` и `mcp-server` пишут в stdout по одному JSON-объекту на строку.
|
||||
Поля с паролями, токенами, ключами, cookie, authorization, query, полным телом
|
||||
или результатом очищаются до сериализации.
|
||||
|
||||
Пример:
|
||||
|
||||
```env
|
||||
CRANK_ENVIRONMENT=development
|
||||
CRANK_LOG_LEVEL=info
|
||||
```
|
||||
|
||||
Внешний сборщик журналов не обязателен. Его отсутствие не влияет на `/health`
|
||||
и `/ready`.
|
||||
|
||||
## Критические ошибки
|
||||
|
||||
- `CRANK_SENTRY_DSN` — DSN внешнего Sentry-совместимого приёмника.
|
||||
|
||||
Пустое или отсутствующее значение отключает канал. Неверное непустое значение
|
||||
останавливает запуск безопасной ошибкой без вывода DSN. Оба сервиса используют
|
||||
одно значение, но передают собственные `service`, `release` и `environment`.
|
||||
|
||||
```env
|
||||
CRANK_SENTRY_DSN=
|
||||
```
|
||||
|
||||
Community не разворачивает GlitchTip или другой приёмник. Подробный состав
|
||||
события и правила очистки приведены в
|
||||
[документе о наблюдаемости](observability.md).
|
||||
|
||||
## Prometheus
|
||||
|
||||
- `CRANK_METRICS_ENABLED` — включает отдельные listener-ы, по умолчанию
|
||||
`true`;
|
||||
- `CRANK_ADMIN_METRICS_BIND` — адрес показателей `admin-api`, по умолчанию
|
||||
`127.0.0.1:9464`;
|
||||
- `CRANK_MCP_METRICS_BIND` — адрес показателей `mcp-server`, по умолчанию
|
||||
`127.0.0.1:9465`;
|
||||
- `CRANK_METRICS_BEARER_TOKEN` — отдельный токен, обязательный для любого
|
||||
non-loopback bind.
|
||||
|
||||
Значения проверяются до запуска рабочих listener-ов. Для отключения
|
||||
поверхности:
|
||||
|
||||
```env
|
||||
CRANK_METRICS_ENABLED=false
|
||||
```
|
||||
|
||||
Подробная модель доступа, список показателей и пример настройки сборщика
|
||||
приведены в [документе о наблюдаемости](observability.md).
|
||||
|
||||
## Распределённые трассы OTLP
|
||||
|
||||
Crank экспортирует через OTLP только трассы. Метрики остаются в Prometheus,
|
||||
а эксплуатационные журналы — в stdout. Если оба endpoint пусты, tracer
|
||||
provider и фоновый экспортёр не создаются.
|
||||
|
||||
- `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` — полный HTTP endpoint трасс; имеет
|
||||
приоритет;
|
||||
- `OTEL_EXPORTER_OTLP_ENDPOINT` — общий endpoint, к которому Crank добавляет
|
||||
`/v1/traces`;
|
||||
- `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` и резервный
|
||||
`OTEL_EXPORTER_OTLP_PROTOCOL` — только `http/protobuf`;
|
||||
- `OTEL_EXPORTER_OTLP_TRACES_TIMEOUT` и резервный
|
||||
`OTEL_EXPORTER_OTLP_TIMEOUT` — предел HTTP-запроса экспорта в миллисекундах;
|
||||
- `OTEL_EXPORTER_OTLP_TRACES_HEADERS` — заголовки только для трасс;
|
||||
- `OTEL_EXPORTER_OTLP_HEADERS` — резервные общие заголовки;
|
||||
- `OTEL_BSP_MAX_QUEUE_SIZE` — конечная очередь spans, по умолчанию `2048`;
|
||||
- `OTEL_BSP_MAX_EXPORT_BATCH_SIZE` — пакет, по умолчанию `512`, не больше
|
||||
очереди;
|
||||
- `OTEL_BSP_SCHEDULE_DELAY` — период отправки в миллисекундах, по умолчанию
|
||||
`5000`;
|
||||
- `OTEL_BSP_EXPORT_TIMEOUT` — совместимый предел пакетного экспортёра в
|
||||
миллисекундах, по умолчанию `30000`.
|
||||
|
||||
Фактический HTTP-запрос экспорта ограничивается более строгим из
|
||||
`OTEL_EXPORTER_OTLP_TRACES_TIMEOUT`/`OTEL_EXPORTER_OTLP_TIMEOUT` и
|
||||
`OTEL_BSP_EXPORT_TIMEOUT`. Это сохраняет оба верхних предела при работе
|
||||
стабильного потокового `BatchSpanProcessor`.
|
||||
|
||||
Допустимы только HTTP/HTTPS URL без учётных данных, query и fragment.
|
||||
Некорректная явно заданная конфигурация останавливает запуск безопасной
|
||||
типизированной ошибкой, не содержащей значений окружения.
|
||||
|
||||
```env
|
||||
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://otel.example.com/v1/traces
|
||||
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
|
||||
OTEL_EXPORTER_OTLP_TIMEOUT=10000
|
||||
```
|
||||
|
||||
Заголовки обычно содержат токен приёмника. В production их следует хранить в
|
||||
OpenBao как `OTEL_EXPORTER_OTLP_TRACES_HEADERS`; CD передаёт значение в
|
||||
runtime `.env`, но не выводит его в журнал. Не записывайте токен в
|
||||
репозиторий или Compose.
|
||||
|
||||
Reference in New Issue
Block a user