diagnostics-otel,
используя OTLP/HTTP (protobuf). Журналы также можно записывать в формате JSONL в stdout для
конвейеров журналирования контейнеров и песочниц. Любой сборщик или бэкенд, принимающий
OTLP/HTTP, работает без изменений кода. Локальное журналирование в файлы описано в разделе
Журналирование.
- Диагностические события — это структурированные внутрипроцессные записи, создаваемые Gateway и встроенными плагинами для запусков моделей, потоков сообщений, сессий, очередей и выполнения команд.
diagnostics-otelподписывается на эти события и экспортирует их как метрики, трассировки и журналы OpenTelemetry по протоколу OTLP/HTTP, а также может дублировать записи журналов в формате JSONL в stdout.- Вызовы провайдеров получают заголовок W3C
traceparentиз контекста доверенного диапазона вызова модели OpenClaw, если транспорт провайдера принимает пользовательские заголовки. Контекст трассировки, созданный плагином, не распространяется. - Экспортёры подключаются только тогда, когда включены и диагностическая подсистема, и плагин, поэтому по умолчанию внутрипроцессные накладные расходы остаются практически нулевыми.
Быстрый старт
openclaw plugins enable diagnostics-otel.
protocol поддерживает только http/protobuf. Поскольку traces и metrics включены по умолчанию, любое другое значение (включая grpc) прерывает всю подписку diagnostics-otel с предупреждением unsupported protocol — при этом экспорт журналов в stdout также прекращается. Явно задайте traces: false и metrics: false, если вам нужен только logsExporter: "stdout" со значением протокола, отличным от OTLP.Экспортируемые сигналы
Включайте и отключайте
traces, metrics и logs независимо. Трассировки и метрики
по умолчанию включены, когда diagnostics.otel.enabled имеет значение true; журналы по умолчанию отключены
и экспортируются только тогда, когда diagnostics.otel.logs явно имеет значение true. По умолчанию журналы
экспортируются через OTLP; задайте для diagnostics.otel.logsExporter значение stdout, чтобы выводить JSONL
в stdout, или both, чтобы использовать оба варианта.
Справочник по конфигурации
Переменные окружения
Конфиденциальность и сбор содержимого
Исходное содержимое моделей и инструментов по умолчанию не экспортируется. Диапазоны содержат ограниченные идентификаторы (канал, провайдер, модель, категория ошибки, идентификаторы запросов только в виде хешей, источник инструмента, владелец инструмента, имя и источник навыка) и никогда не включают текст запроса, текст ответа, входные или выходные данные инструментов, пути к файлам навыков или ключи сессий. Значения, похожие на ключи сессий агентов с областью действия (например, начинающиеся сagent:), заменяются на unknown в атрибутах с низкой кардинальностью. Записи журналов OTLP
по умолчанию сохраняют уровень серьёзности, журнал, расположение в коде, доверенный контекст трассировки и
очищенные атрибуты; исходное тело сообщения журнала экспортируется только
тогда, когда diagnostics.otel.captureContent является логическим значением true. Детализированные
подключи captureContent.* никогда не включают тела журналов. Метрики Talk экспортируют только
ограниченные метаданные событий (режим, транспорт, провайдер, тип события) — без
расшифровок, звуковых данных, идентификаторов сессий, ходов, вызовов и комнат, а также
токенов передачи.
Исходящие запросы к моделям могут содержать заголовок W3C traceparent, созданный только
из принадлежащего OpenClaw контекста диагностической трассировки активного вызова модели.
Существующие заголовки traceparent, предоставленные вызывающей стороной, заменяются, поэтому плагины или
пользовательские параметры провайдеров не могут подделать межсервисное происхождение трассировки.
Устанавливайте для diagnostics.otel.captureContent.* значение true только в том случае, если ваш сборщик
и политика хранения одобрены для текста запросов, ответов, инструментов или
системных запросов. Каждый подключ независим:
inputMessages— содержимое пользовательского запроса.outputMessages— содержимое ответа модели.toolInputs— данные аргументов инструмента.toolOutputs— данные результата инструмента.systemPrompt— сформированный системный запрос или запрос разработчика.toolDefinitions— имена, описания и схемы инструментов модели.
openclaw.content.* только для соответствующего класса.
Логическое значение
captureContent: true одновременно включает inputMessages, outputMessages, toolInputs, toolOutputs, toolDefinitions и тела журналов OTLP, но не systemPrompt — явно задайте captureContent.systemPrompt: true, если вам также нужен сформированный системный запрос.toolInputs/toolOutputs собирается при выполнении инструментов встроенной
средой выполнения агента (openclaw.content.tool_input и
gen_ai.tool.call.arguments в диапазонах завершения и ошибки;
openclaw.content.tool_output и gen_ai.tool.call.result в диапазонах
завершения). Имена openclaw.content.* остаются стабильными именами атрибутов
OpenClaw; копии gen_ai.tool.call.* дублируют их для средств просмотра с нативной поддержкой семантических соглашений.
Вызовы инструментов внешней среды выполнения (Codex, Claude CLI) создают
диапазоны tool.execution.* без содержимого. Собранное содержимое передаётся по
доверенному каналу только для слушателей и никогда не помещается в общедоступную шину
диагностических событий.
Сэмплирование и сброс
- Трассировки:
diagnostics.otel.sampleRateзадаётTraceIdRatioBasedSamplerтолько для корневого спана (0.0отбрасывает все,1.0сохраняет все). Если значение не задано, используется значение по умолчанию из OpenTelemetry SDK (всегда включено). - Метрики:
diagnostics.otel.flushIntervalMs(ограничивается снизу значением1000); если значение не задано, используется заданный в SDK интервал периодического экспорта по умолчанию. - Журналы: журналы OTLP учитывают
logging.level(уровень файлового журнала) и используют механизм редактирования диагностических записей журнала, а не консольное форматирование. В установках с большим объёмом данных следует предпочесть выборку и фильтрацию в коллекторе OTLP локальной выборке. Задайтеdiagnostics.otel.logsExporter: "stdout", если ваша платформа уже отправляет stdout/stderr обработчику журналов и у вас нет коллектора журналов OTLP. Записи stdout представляют собой по одному объекту JSON на строку сts,signal,service.name, уровнем важности, телом, отредактированными атрибутами и доверенными полями трассировки, если они доступны. - Корреляция с файловым журналом: файловые журналы JSONL включают поля верхнего уровня
traceId,spanId,parentSpanIdиtraceFlags, когда вызов журналирования содержит допустимый контекст диагностической трассировки, что позволяет обработчикам журналов связывать локальные строки журнала с экспортированными спанами. - Корреляция запросов: HTTP-запросы Gateway и кадры WebSocket создают
внутреннюю область трассировки запроса. Журналы и диагностические события внутри этой
области по умолчанию наследуют трассировку запроса, а спаны запуска агента и вызова модели
создаются как дочерние, поэтому заголовки провайдера
traceparentостаются в той же трассировке. - Корреляция вызовов модели: спаны
openclaw.model.callпо умолчанию включают безопасные размеры компонентов запроса и атрибуты токенов для каждого вызова, когда результат провайдера содержит сведения об использовании.openclaw.model.usageостаётся спаном учёта на уровне запуска для панелей совокупной стоимости, контекста и каналов и остаётся в той же диагностической трассировке, когда среда выполнения, создающая событие, имеет доверенный контекст трассировки.
Экспортируемые метрики
Использование модели
openclaw.tokens(счётчик, атрибуты:openclaw.token,openclaw.channel,openclaw.provider,openclaw.model,openclaw.agent)openclaw.cost.usd(счётчик, атрибуты:openclaw.channel,openclaw.provider,openclaw.model)openclaw.run.duration_ms(гистограмма, атрибуты:openclaw.channel,openclaw.provider,openclaw.model)openclaw.context.tokens(гистограмма, атрибуты:openclaw.context,openclaw.channel,openclaw.provider,openclaw.model)gen_ai.client.token.usage(гистограмма, метрика семантических соглашений GenAI, атрибуты:gen_ai.token.type=input/output,gen_ai.provider.name,gen_ai.operation.name,gen_ai.request.model)gen_ai.client.operation.duration(гистограмма, секунды, метрика семантических соглашений GenAI, атрибуты:gen_ai.provider.name,gen_ai.operation.name,gen_ai.request.model, необязательныйerror.type)openclaw.model_call.duration_ms(гистограмма, атрибуты:openclaw.provider,openclaw.model,openclaw.api,openclaw.transport, а такжеopenclaw.errorCategoryиopenclaw.failureKindдля классифицированных ошибок)openclaw.model_call.request_bytes(гистограмма, размер в байтах UTF-8 итоговой полезной нагрузки запроса к модели; без исходного содержимого полезной нагрузки)openclaw.model_call.response_bytes(гистограмма, размер в байтах UTF-8 полезной нагрузки передаваемых потоком фрагментов ответа; для высокочастотных приращений текста, рассуждений и вызовов инструментов учитываются только добавочные байтыdelta; без исходного содержимого ответа)openclaw.model_call.time_to_first_byte_ms(гистограмма, время до первого события потокового ответа)openclaw.model.failover(счётчик, атрибуты:openclaw.provider,openclaw.model,openclaw.failover.to_provider,openclaw.failover.to_model,openclaw.failover.reason,openclaw.failover.suspended,openclaw.lane)openclaw.skill.used(счётчик, атрибуты:openclaw.skill.name,openclaw.skill.source,openclaw.skill.activation, необязательныйopenclaw.agent, необязательныйopenclaw.toolName)
Поток сообщений
openclaw.webhook.received(счётчик, атрибуты:openclaw.channel,openclaw.webhook)openclaw.webhook.error(счётчик, атрибуты:openclaw.channel,openclaw.webhook)openclaw.webhook.duration_ms(гистограмма, атрибуты:openclaw.channel,openclaw.webhook)openclaw.message.queued(счётчик, атрибуты:openclaw.channel,openclaw.source)openclaw.message.received(счётчик, атрибуты:openclaw.channel,openclaw.source)openclaw.message.dispatch.started(счётчик, атрибуты:openclaw.channel,openclaw.source)openclaw.message.dispatch.completed(счётчик, атрибуты:openclaw.channel,openclaw.outcome,openclaw.reason,openclaw.source)openclaw.message.dispatch.duration_ms(гистограмма, атрибуты:openclaw.channel,openclaw.outcome,openclaw.reason,openclaw.source)openclaw.message.processed(счётчик, атрибуты:openclaw.channel,openclaw.outcome)openclaw.message.duration_ms(гистограмма, атрибуты:openclaw.channel,openclaw.outcome)openclaw.message.delivery.started(счётчик, атрибуты:openclaw.channel,openclaw.delivery.kind)openclaw.message.delivery.duration_ms(гистограмма, атрибуты:openclaw.channel,openclaw.delivery.kind,openclaw.outcome,openclaw.errorCategory)
Talk
openclaw.talk.event(счётчик, атрибуты:openclaw.talk.event_type,openclaw.talk.mode,openclaw.talk.transport,openclaw.talk.brain,openclaw.talk.provider)openclaw.talk.event.duration_ms(гистограмма, атрибуты: те же, что уopenclaw.talk.event; создаётся, когда событие Talk сообщает длительность)openclaw.talk.audio.bytes(гистограмма, атрибуты: те же, что уopenclaw.talk.event; создаётся для событий аудиокадров Talk, сообщающих длину в байтах)
Очереди и сеансы
openclaw.queue.lane.enqueue(счётчик, атрибуты:openclaw.lane)openclaw.queue.lane.dequeue(счётчик, атрибуты:openclaw.lane)openclaw.queue.depth(гистограмма, атрибуты:openclaw.laneилиopenclaw.channel=heartbeat)openclaw.queue.wait_ms(гистограмма, атрибуты:openclaw.lane)openclaw.session.state(счётчик, атрибуты:openclaw.state,openclaw.reason)openclaw.session.stuck(счётчик, атрибуты:openclaw.state; создаётся при устранимом устаревании служебного состояния сеанса)openclaw.session.stuck_age_ms(гистограмма, атрибуты:openclaw.state; создаётся при устранимом устаревании служебного состояния сеанса)openclaw.session.turn.created(счётчик, атрибуты:openclaw.agent,openclaw.channel,openclaw.trigger)openclaw.session.recovery.requested(счётчик, атрибуты:openclaw.state,openclaw.action,openclaw.active_work_kind,openclaw.reason)openclaw.session.recovery.completed(счётчик, атрибуты:openclaw.state,openclaw.action,openclaw.status,openclaw.active_work_kind,openclaw.reason)openclaw.session.recovery.age_ms(гистограмма, атрибуты: те же, что у соответствующего счётчика восстановления)openclaw.run.attempt(счётчик, атрибуты:openclaw.attempt)
Телеметрия активности сеансов
diagnostics.stuckSessionWarnMs — порог длительности отсутствия прогресса для диагностики
активности сеанса. Сеанс processing не приближается к этому
порогу, пока OpenClaw наблюдает прогресс ответа, инструмента, статуса, блока или среды выполнения
ACP. Сигналы поддержания индикатора набора текста не считаются прогрессом, поэтому модель или
среду выполнения, не выдающую данные, всё равно можно обнаружить.
OpenClaw классифицирует сеансы по работе, которую ещё может наблюдать:
session.long_running: активная встроенная работа, вызовы модели или вызовы инструментов всё ещё выполняются с прогрессом. Собственные вызовы модели, которые не выдают данные дольшеdiagnostics.stuckSessionWarnMs, также отмечаются как длительные доdiagnostics.stuckSessionAbortMs, поэтому медленные или непотоковые провайдеры моделей не выглядят как зависшие сеансы Gateway, пока за их прерыванием можно наблюдать.session.stalled: активная работа существует, но активный запуск в последнее время не сообщал о прогрессе. Собственные вызовы модели переходят изsession.long_runningвsession.stalledпри достиженииdiagnostics.stuckSessionAbortMsили позже; устаревшая активность модели или инструмента без владельца не считается безвредной длительной работой. Зависшие встроенные запуски сначала остаются только под наблюдением, а затем прерываются с ожиданием завершения послеdiagnostics.stuckSessionAbortMsбез прогресса, чтобы находящиеся за ними в очереди проходы в этой линии могли продолжиться. Если значение не задано, порог прерывания по умолчанию равен более безопасному расширенному окну длительностью не менее 5 минут и в 3 раза большеdiagnostics.stuckSessionWarnMs.session.stuck: устаревшее служебное состояние сеанса без активной работы или неактивный сеанс в очереди с устаревшей активностью модели или инструмента без владельца. Это немедленно освобождает затронутую линию сеанса после прохождения проверок восстановления.
session.recovery.requested и
session.recovery.completed. Диагностическое состояние сеанса помечается как неактивное
только после изменяющего состояние результата восстановления (aborted или released) и только если
то же поколение обработки всё ещё актуально.
Только session.stuck создаёт счётчик openclaw.session.stuck,
гистограмму openclaw.session.stuck_age_ms и спан openclaw.session.stuck.
Повторяющиеся диагностические события session.stuck используют увеличивающуюся задержку, пока сеанс остаётся
неизменным, поэтому панели должны оповещать об устойчивом росте, а не о
каждом такте Heartbeat. Параметр конфигурации и значения по умолчанию см. в
справочнике по конфигурации.
Предупреждения об активности также создают:
openclaw.liveness.warning(счётчик, атрибуты:openclaw.liveness.reason)openclaw.liveness.event_loop_delay_p99_ms(гистограмма, атрибуты:openclaw.liveness.reason)openclaw.liveness.event_loop_delay_max_ms(гистограмма, атрибуты:openclaw.liveness.reason)openclaw.liveness.event_loop_utilization(гистограмма, атрибуты:openclaw.liveness.reason)openclaw.liveness.cpu_core_ratio(гистограмма, атрибуты:openclaw.liveness.reason)
Жизненный цикл среды выполнения
openclaw.harness.duration_ms(гистограмма, атрибуты:openclaw.harness.id,openclaw.harness.plugin,openclaw.outcome,openclaw.harness.phaseпри ошибках)
Выполнение инструментов и обнаружение циклов
openclaw.tool.execution.duration_ms(гистограмма, атрибуты:gen_ai.tool.name,openclaw.toolName,openclaw.tool.source,openclaw.tool.owner,openclaw.tool.params.kind, а такжеopenclaw.errorCategoryпри ошибках)openclaw.tool.execution.blocked(счётчик, атрибуты:gen_ai.tool.name,openclaw.toolName,openclaw.tool.source,openclaw.tool.owner,openclaw.tool.params.kind,openclaw.deniedReason)openclaw.tool.loop(счётчик, атрибуты:openclaw.toolName,openclaw.loop.level,openclaw.loop.action,openclaw.loop.detector,openclaw.loop.count, необязательныйopenclaw.loop.paired_tool; создаётся при обнаружении повторяющегося цикла вызовов инструментов)
Exec
openclaw.exec.duration_ms(гистограмма, атрибуты:openclaw.exec.target,openclaw.exec.mode,openclaw.outcome,openclaw.failureKind)
Внутренние компоненты диагностики (память, полезные нагрузки, состояние экспортёра)
openclaw.payload.large(счётчик, атрибуты:openclaw.payload.surface,openclaw.payload.action,openclaw.channel,openclaw.plugin,openclaw.reason)openclaw.payload.large_bytes(гистограмма, атрибуты: те же, что уopenclaw.payload.large)openclaw.memory.rss_bytes/openclaw.memory.heap_used_bytes/openclaw.memory.heap_total_bytes/openclaw.memory.external_bytes/openclaw.memory.array_buffers_bytes(гистограммы, без атрибутов; образцы памяти процесса)openclaw.memory.pressure(счётчик, атрибуты:openclaw.memory.level,openclaw.memory.reason)openclaw.diagnostic.async_queue.dropped(счётчик, атрибуты:openclaw.diagnostic.async_queue.drop_class; потери из-за обратного давления во внутренней диагностической очереди)openclaw.telemetry.exporter.events(счётчик, атрибуты:openclaw.exporter,openclaw.signal,openclaw.status, необязательныйopenclaw.reason, необязательныйopenclaw.errorCategory; внутренняя телеметрия жизненного цикла и сбоев экспортёра)
Экспортируемые спаны
openclaw.model.usageopenclaw.channel,openclaw.provider,openclaw.modelopenclaw.tokens.*(ввод/вывод/чтение из кеша/запись в кеш/всего)gen_ai.systemпо умолчанию илиgen_ai.provider.name, если включены новейшие семантические соглашения GenAIgen_ai.request.model,gen_ai.operation.name,gen_ai.usage.*
openclaw.runopenclaw.outcome,openclaw.channel,openclaw.provider,openclaw.model,openclaw.errorCategory
openclaw.model.callgen_ai.systemпо умолчанию илиgen_ai.provider.name, если включены новейшие семантические соглашения GenAIgen_ai.request.model,gen_ai.operation.name,openclaw.provider,openclaw.model,openclaw.api,openclaw.transportopenclaw.errorCategory,error.typeи необязательныйopenclaw.failureKindпри ошибкахopenclaw.model_call.request_bytes,openclaw.model_call.response_bytes,openclaw.model_call.time_to_first_byte_msopenclaw.model_call.prompt.input_messages_count,openclaw.model_call.prompt.input_messages_chars,openclaw.model_call.prompt.system_prompt_chars,openclaw.model_call.prompt.tool_definitions_count,openclaw.model_call.prompt.tool_definitions_chars,openclaw.model_call.prompt.total_chars(только безопасные размеры компонентов, без текста запросов)openclaw.model_call.usage.*иgen_ai.usage.*, когда результат вызова модели содержит данные об использовании провайдера для этого отдельного вызова- Событие спана
openclaw.provider.requestс атрибутомopenclaw.upstreamRequestIdHash(ограниченным, на основе хеша), когда результат вышестоящего провайдера содержит идентификатор запроса; необработанные идентификаторы никогда не экспортируются - При
OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimentalспаны вызовов модели используют новейшее имя спана вывода GenAI{gen_ai.operation.name} {gen_ai.request.model}и вид спанаCLIENTвместоopenclaw.model.call.
openclaw.harness.runopenclaw.harness.id,openclaw.harness.plugin,openclaw.outcome,openclaw.provider,openclaw.model,openclaw.channel- При завершении:
openclaw.harness.result_classification,openclaw.harness.yield_detected,openclaw.harness.items.started,openclaw.harness.items.completed,openclaw.harness.items.active - При ошибке:
openclaw.harness.phase,openclaw.errorCategory, необязательныйopenclaw.harness.cleanup_failed
openclaw.tool.executiongen_ai.tool.name,gen_ai.operation.name(execute_tool),openclaw.toolName,openclaw.tool.source, необязательныйgen_ai.tool.call.id,openclaw.tool.owner,openclaw.tool.params.*- Необязательные
openclaw.errorCategory/openclaw.errorCodeпри ошибках,openclaw.deniedReasonиopenclaw.outcome=blockedпри отказе из-за политики или песочницы
openclaw.execopenclaw.exec.target,openclaw.exec.mode,openclaw.outcome,openclaw.failureKind,openclaw.exec.command_length,openclaw.exec.exit_code,openclaw.exec.exit_signal,openclaw.exec.timed_out
openclaw.webhook.processedopenclaw.channel,openclaw.webhook
openclaw.webhook.erroropenclaw.channel,openclaw.webhook,openclaw.error
openclaw.message.processedopenclaw.channel,openclaw.outcome,openclaw.reason
openclaw.message.deliveryopenclaw.channel,openclaw.delivery.kind,openclaw.outcome,openclaw.errorCategory,openclaw.delivery.result_count
openclaw.session.stuckopenclaw.state,openclaw.ageMs,openclaw.queueDepth
openclaw.context.assembledopenclaw.prompt.size,openclaw.history.size,openclaw.context.tokens,openclaw.errorCategory(без содержимого запроса, истории, ответа или ключа сеанса)
openclaw.tool.loopopenclaw.toolName,openclaw.loop.level,openclaw.loop.action,openclaw.loop.detector,openclaw.loop.count, необязательныйopenclaw.loop.paired_tool(без сообщений цикла, параметров или вывода инструмента)
openclaw.memory.pressureopenclaw.memory.level,openclaw.memory.reason,openclaw.memory.rss_bytes,openclaw.memory.heap_used_bytes,openclaw.memory.heap_total_bytes,openclaw.memory.external_bytes,openclaw.memory.array_buffers_bytes, необязательныеopenclaw.memory.threshold_bytes/openclaw.memory.rss_growth_bytes/openclaw.memory.window_ms
openclaw.content.* для конкретных
классов содержимого, сбор которых вы включили.
Каталог диагностических событий
Приведённые ниже события лежат в основе указанных выше метрик и спанов. Плагины также могут подписываться на них напрямую без экспорта OTLP. Использование моделиmodel.usage— токены, стоимость, длительность, контекст, провайдер/модель/канал, идентификаторы сеансов.usage— учёт провайдера/хода для расчёта стоимости и телеметрии;context.used— текущий снимок запроса/контекста, который может быть меньше значения провайдераusage.total, если используются кешированный ввод или вызовы в цикле инструментов.
webhook.received/webhook.processed/webhook.errormessage.queued/message.processedmessage.delivery.started/message.delivery.completed/message.delivery.error
queue.lane.enqueue/queue.lane.dequeuesession.state/session.long_running/session.stalled/session.stuckrun.attempt/run.progressdiagnostic.heartbeat(агрегированные счётчики: вебхуки/очередь/сеанс)
harness.run.started/harness.run.completed/harness.run.error— жизненный цикл каждого запуска среды выполнения агента. ВключаетharnessId, необязательныйpluginId, провайдера/модель/канал и идентификатор запуска. При завершении добавляютсяdurationMs,outcome, необязательныйresultClassification,yieldDetectedи значения счётчиковitemLifecycle. При ошибках добавляютсяphase(prepare/start/send/resolve/cleanup),errorCategoryи необязательныйcleanupFailed.
exec.process.completed— результат выполнения в терминале, длительность, целевой объект, режим, код завершения и вид сбоя. Текст команды и рабочие каталоги не включаются.exec.approval.followup_suppressed— устаревший последующий запрос на подтверждение, отброшенный после повторной привязки сеанса. ВключаетapprovalId,reason(session_rebound),phase(direct_deliveryилиgateway_preflight) и временную метку диспетчера. Ключи сеансов, маршруты и текст команды не включаются.
Без экспортёра
Сохраняйте диагностические события доступными для плагинов или пользовательских приёмников без запускаdiagnostics-otel:
logging.level используйте диагностические
флаги. Флаги нечувствительны к регистру и поддерживают подстановочные знаки (telegram.* или
*):
logging.file) и по-прежнему
редактируется с помощью logging.redactSensitive. Полное руководство:
Диагностические флаги.
Отключение
diagnostics-otel в plugins.allow или запустить
openclaw plugins disable diagnostics-otel.
Связанные материалы
- Журналирование — файловые журналы, вывод в консоль, просмотр через CLI и вкладка журналов в Control UI
- Внутреннее устройство журналирования Gateway — стили журналов WS, префиксы подсистем и захват консольного вывода
- Диагностические флаги — флаги целевого отладочного журналирования
- Экспорт диагностики — операторский инструмент создания пакета поддержки (отдельный от экспорта OTEL)
- Справочник по конфигурации — полный справочник по полям
diagnostics.*