feat: harden community production foundation through story 1.5
This commit is contained in:
+20
-12
@@ -15,6 +15,7 @@
|
||||
"target": "admin_api::request_context",
|
||||
"event": "admin.request.completed",
|
||||
"request_id": "019...",
|
||||
"trace_id": "0af7651916cd43dd8448eb211c80319c",
|
||||
"fields": {
|
||||
"method": "GET",
|
||||
"route": "/api/operations",
|
||||
@@ -38,14 +39,14 @@ Admin API и MCP принимают `x-request-id` как непрозрачны
|
||||
отсутствует или содержит пробелы, управляющие символы, `,`, `;`, не-ASCII
|
||||
символы либо больше 128 байт, Crank создаёт UUIDv7.
|
||||
|
||||
Один идентификатор:
|
||||
Request ID и отдельный Trace ID:
|
||||
|
||||
- возвращается в `x-request-id` успешного или ошибочного ответа;
|
||||
- записывается в корневой span входного запроса;
|
||||
- передаётся в runtime;
|
||||
- возвращаются в `x-request-id`/`x-trace-id` успешного или ошибочного ответа;
|
||||
- записываются в корневой span входного запроса;
|
||||
- типизированно передаются в runtime;
|
||||
- заменяет статические или полученные из mapping значения
|
||||
`x-request-id` и `x-correlation-id` перед исходящим REST-запросом;
|
||||
- сохраняется в прикладной истории вызова.
|
||||
- сохраняются в прикладной истории вызова.
|
||||
|
||||
`request id` не является `trace id` и не подменяет распределённую
|
||||
трассировку.
|
||||
@@ -214,15 +215,22 @@ series и расход памяти измеряются в истории 1.8;
|
||||
## Распределённые трассы
|
||||
|
||||
Crank принимает и передаёт стандартный W3C `traceparent` на границах Admin
|
||||
API, MCP и исходящих REST-вызовов. `x-request-id` остаётся отдельным
|
||||
идентификатором запроса. Baggage не извлекается и не передаётся.
|
||||
API, MCP и исходящих REST-вызовов. Ровно один canonical parent принимается;
|
||||
duplicate, malformed, uppercase и zero-ID значения заменяются новым local
|
||||
trace без echo входа. `x-request-id` остаётся отдельным идентификатором
|
||||
запроса, а `x-trace-id` — безопасным локальным support ID. Caller
|
||||
`tracestate` ограничен 512 байтами/32 members, baggage — 8192 байтами/64
|
||||
members; Community allowlist пуста, поэтому они не извлекаются и не
|
||||
передаются.
|
||||
|
||||
Экспорт отключён по умолчанию: при пустых
|
||||
`OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` и `OTEL_EXPORTER_OTLP_ENDPOINT`
|
||||
provider, batch processor и фоновый поток не создаются. После включения
|
||||
используется только OTLP/HTTP binary protobuf. Community Compose не включает
|
||||
Collector или хранилище трасс: оператор подключает внешний совместимый
|
||||
приёмник.
|
||||
`OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` и `OTEL_EXPORTER_OTLP_ENDPOINT` local
|
||||
provider сохраняет span topology и Trace ID, но exporter, batch processor,
|
||||
фоновая очередь и сетевой трафик не создаются. Поэтому response, runtime и
|
||||
Invocation History получают Trace ID независимо от sampling/export. После
|
||||
включения используется только OTLP/HTTP binary protobuf. Community Compose
|
||||
не включает Collector или хранилище трасс: оператор подключает внешний
|
||||
совместимый приёмник.
|
||||
|
||||
Уровень эксплуатационных журналов не отключает трассы. В OTLP попадают
|
||||
только явно отмеченные spans с внутренней целью `crank::trace`; события
|
||||
|
||||
Reference in New Issue
Block a user