diff --git a/docs/uk/gateway/opentelemetry.md b/docs/uk/gateway/opentelemetry.md index 7a8e04419..12807ea1b 100644 --- a/docs/uk/gateway/opentelemetry.md +++ b/docs/uk/gateway/opentelemetry.md @@ -1,40 +1,40 @@ --- read_when: - - Ви хочете надсилати дані про використання моделей OpenClaw, потік повідомлень або метрики сеансів до колектора OpenTelemetry - - Ви підключаєте трейси, метрики або журнали до Grafana, Datadog, Honeycomb, New Relic, Tempo чи іншого бекенда OTLP - - Вам потрібні точні назви метрик, назви спанів або структури атрибутів, щоб створювати панелі моніторингу чи сповіщення. + - Ви хочете надсилати дані про використання моделі OpenClaw, потік повідомлень або метрики сеансів до колектора OpenTelemetry + - Ви підключаєте трейси, метрики або журнали до Grafana, Datadog, Honeycomb, New Relic, Tempo або іншого OTLP-бекенду + - Вам потрібні точні назви метрик, назви спанів або структури атрибутів для створення панелей моніторингу чи сповіщень summary: Експортуйте діагностику OpenClaw до будь-якого колектора OpenTelemetry через Plugin diagnostics-otel (OTLP/HTTP) title: Експорт OpenTelemetry x-i18n: - generated_at: "2026-05-03T17:25:22Z" + generated_at: "2026-05-04T02:07:41Z" model: gpt-5.5 provider: openai - source_hash: c8091aa633a3e10593681f94913a858587a5dc69d9947e0c0d4132f6e897b00b + source_hash: d0b5be99b29fe5f13132b03cfeaf3ce978ee16f29e307aa76769bc414b5ca35f source_path: gateway/opentelemetry.md workflow: 16 --- OpenClaw експортує діагностику через офіційний Plugin `diagnostics-otel` за допомогою **OTLP/HTTP (protobuf)**. Будь-який колектор або бекенд, що приймає OTLP/HTTP, -працює без змін коду. Про локальні файлові журнали та як їх читати див. +працює без змін у коді. Про локальні файлові журнали та як їх читати див. [Журналювання](/uk/logging). ## Як це працює разом -- **Події діагностики** — це структуровані внутрішньопроцесні записи, які - Gateway і вбудовані plugins генерують для запусків моделей, потоку повідомлень, сеансів, черг +- **Діагностичні події** — це структуровані внутрішньопроцесні записи, які + Gateway і вбудовані Plugins створюють для запусків моделей, потоку повідомлень, сесій, черг та exec. - **Plugin `diagnostics-otel`** підписується на ці події та експортує їх як OpenTelemetry **метрики**, **трейси** та **журнали** через OTLP/HTTP. -- **Виклики провайдерів** отримують W3C-заголовок `traceparent` від довіреного - контексту span виклику моделі OpenClaw, коли транспорт провайдера приймає власні - заголовки. Контекст трасування, згенерований plugin, не поширюється. -- Експортери підключаються лише тоді, коли ввімкнені і діагностична поверхня, і plugin, - тому внутрішньопроцесна вартість за замовчуванням залишається майже нульовою. +- **Виклики провайдера** отримують заголовок W3C `traceparent` від довіреного + контексту span виклику моделі OpenClaw, коли транспорт провайдера приймає користувацькі + заголовки. Контекст трасування, створений Plugin, не поширюється. +- Експортери підключаються лише тоді, коли ввімкнено і діагностичну поверхню, і Plugin, + тому внутрішньопроцесна вартість за замовчуванням залишається близькою до нуля. ## Швидкий старт -Для пакетних інсталяцій спочатку встановіть plugin: +Для пакетних інсталяцій спочатку встановіть Plugin: ```bash openclaw plugins install clawhub:@openclaw/diagnostics-otel @@ -65,7 +65,7 @@ openclaw plugins install clawhub:@openclaw/diagnostics-otel } ``` -Ви також можете ввімкнути plugin з CLI: +Ви також можете ввімкнути Plugin з CLI: ```bash openclaw plugins enable diagnostics-otel @@ -77,9 +77,9 @@ openclaw plugins enable diagnostics-otel ## Експортовані сигнали -| Сигнал | Що до нього входить | +| Сигнал | Що до нього потрапляє | | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| **Метрики** | Лічильники та гістограми для використання токенів, вартості, тривалості запуску, потоку повідомлень, ліній черг, стану сеансів, exec і навантаження на пам’ять. | +| **Метрики** | Лічильники та гістограми для використання токенів, вартості, тривалості запуску, потоку повідомлень, смуг черг, стану сесій, exec і тиску памʼяті. | | **Трейси** | Spans для використання моделі, викликів моделі, життєвого циклу harness, виконання інструментів, exec, обробки webhook/повідомлень, складання контексту та циклів інструментів. | | **Журнали** | Структуровані записи `logging.file`, експортовані через OTLP, коли ввімкнено `diagnostics.otel.logs`. | @@ -124,53 +124,53 @@ openclaw plugins enable diagnostics-otel | Змінна | Призначення | | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `OTEL_EXPORTER_OTLP_ENDPOINT` | Перевизначає `diagnostics.otel.endpoint`. Якщо значення вже містить `/v1/traces`, `/v1/metrics` або `/v1/logs`, воно використовується як є. | -| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` / `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` / `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Перевизначення endpoint для окремих сигналів, які використовуються, коли відповідний ключ конфігурації `diagnostics.otel.*Endpoint` не задано. Конфігурація окремого сигналу має пріоритет над env окремого сигналу, а той має пріоритет над спільним endpoint. | +| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` / `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` / `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Перевизначення endpoint для конкретного сигналу, що використовуються, коли відповідний ключ конфігурації `diagnostics.otel.*Endpoint` не задано. Конфігурація для конкретного сигналу має пріоритет над env для конкретного сигналу, а він має пріоритет над спільним endpoint. | | `OTEL_SERVICE_NAME` | Перевизначає `diagnostics.otel.serviceName`. | -| `OTEL_EXPORTER_OTLP_PROTOCOL` | Перевизначає мережевий протокол (сьогодні враховується лише `http/protobuf`). | -| `OTEL_SEMCONV_STABILITY_OPT_IN` | Установіть `gen_ai_latest_experimental`, щоб генерувати найновіший експериментальний атрибут GenAI span (`gen_ai.provider.name`) замість застарілого `gen_ai.system`. Метрики GenAI завжди використовують обмежені семантичні атрибути з низькою кардинальністю. | -| `OPENCLAW_OTEL_PRELOADED` | Установіть `1`, коли інший preload або хост-процес уже зареєстрував глобальний OpenTelemetry SDK. Тоді plugin пропускає власний життєвий цикл NodeSDK, але все одно підключає діагностичні слухачі та враховує `traces`/`metrics`/`logs`. | +| `OTEL_EXPORTER_OTLP_PROTOCOL` | Перевизначає протокол передавання (сьогодні враховується лише `http/protobuf`). | +| `OTEL_SEMCONV_STABILITY_OPT_IN` | Установіть `gen_ai_latest_experimental`, щоб створювати найновіший експериментальний атрибут GenAI span (`gen_ai.provider.name`) замість застарілого `gen_ai.system`. Метрики GenAI завжди використовують обмежені семантичні атрибути з низькою кардинальністю. | +| `OPENCLAW_OTEL_PRELOADED` | Установіть `1`, коли інший preload або хост-процес уже зареєстрував глобальний OpenTelemetry SDK. Тоді Plugin пропускає власний життєвий цикл NodeSDK, але все одно підключає діагностичних слухачів і враховує `traces`/`metrics`/`logs`. | ## Приватність і захоплення вмісту -Сирий вміст моделі/інструменту **не** експортується за замовчуванням. Spans містять обмежені -ідентифікатори (канал, провайдер, модель, категорію помилки, ідентифікатори запитів лише як хеш) -і ніколи не містять текст prompt, текст відповіді, вхідні дані інструментів, вихідні дані інструментів або -ключі сеансів. +Сирий вміст моделі/інструмента **не** експортується за замовчуванням. Spans містять обмежені +ідентифікатори (канал, провайдер, модель, категорія помилки, ідентифікатори запитів лише у вигляді хешу) +і ніколи не включають текст prompt, текст відповіді, вхідні дані інструмента, вихідні дані інструмента або +ключі сесії. -Вихідні запити до моделі можуть містити W3C-заголовок `traceparent`. Цей заголовок -генерується лише з діагностичного контексту трасування, що належить OpenClaw, для активного -виклику моделі. Наявні заголовки `traceparent`, надані викликачем, замінюються, тому plugins або -власні параметри провайдера не можуть підробити походження міжсервісного трейсу. +Вихідні запити моделі можуть включати заголовок W3C `traceparent`. Цей заголовок +створюється лише з діагностичного контексту трасування, що належить OpenClaw, для активного виклику моделі. +Наявні заголовки `traceparent`, надані викликачем, замінюються, тому Plugins або +користувацькі параметри провайдера не можуть підробити міжсервісне походження трейсу. Установлюйте `diagnostics.otel.captureContent.*` у `true` лише тоді, коли ваш колектор і -політика зберігання схвалені для тексту prompt, відповіді, інструменту або системного prompt. -Кожен підключ є незалежним opt-in: +політика зберігання схвалені для тексту prompt, відповіді, інструмента або системного prompt. +Кожен підключ є окремим opt-in: - `inputMessages` — вміст prompt користувача. - `outputMessages` — вміст відповіді моделі. -- `toolInputs` — payload аргументів інструменту. -- `toolOutputs` — payload результатів інструменту. +- `toolInputs` — payload аргументів інструмента. +- `toolOutputs` — payload результатів інструмента. - `systemPrompt` — зібраний системний/developer prompt. -Коли ввімкнено будь-який підключ, spans моделі та інструментів отримують обмежені, відредаговані +Коли будь-який підключ увімкнено, spans моделі та інструментів отримують обмежені, відредаговані атрибути `openclaw.content.*` лише для цього класу. -## Семплювання та скидання +## Семплування та скидання - **Трейси:** `diagnostics.otel.sampleRate` (лише root-span, `0.0` відкидає всі, `1.0` зберігає всі). - **Метрики:** `diagnostics.otel.flushIntervalMs` (мінімум `1000`). -- **Журнали:** OTLP-журнали враховують `logging.level` (рівень файлового журналу). Вони використовують +- **Журнали:** журнали OTLP враховують `logging.level` (рівень файлового журналу). Вони використовують шлях редагування діагностичних log-record, а не форматування консолі. Інсталяціям із великим обсягом - слід надавати перевагу семплюванню/фільтрації в OTLP collector над локальним семплюванням. -- **Кореляція файлових журналів:** JSONL-файлові журнали містять верхньорівневі `traceId`, + слід надавати перевагу семплуванню/фільтрації в колекторі OTLP замість локального семплування. +- **Кореляція файлових журналів:** JSONL файлові журнали містять top-level `traceId`, `spanId`, `parentSpanId` і `traceFlags`, коли виклик журналу має дійсний - діагностичний контекст трасування, що дає змогу обробникам журналів поєднувати локальні рядки журналів з + діагностичний контекст трасування, що дає змогу процесорам журналів поєднувати локальні рядки журналу з експортованими spans. -- **Кореляція запитів:** HTTP-запити Gateway і WebSocket-фрейми створюють - внутрішню область трасування запиту. Журнали та діагностичні події всередині цієї області - за замовчуванням успадковують трасування запиту, тоді як spans запуску агента та виклику моделі - створюються як дочірні, щоб заголовки `traceparent` провайдера залишалися в тому самому трейсі. +- **Кореляція запитів:** HTTP-запити Gateway і кадри WebSocket створюють + внутрішню область трасування запиту. Журнали та діагностичні події в цій області + успадковують трасування запиту за замовчуванням, а spans запуску агента та виклику моделі + створюються як дочірні, щоб заголовки `traceparent` провайдера залишалися в тому самому трейсi. ## Експортовані метрики @@ -181,7 +181,7 @@ openclaw plugins enable diagnostics-otel - `openclaw.run.duration_ms` (гістограма, attrs: `openclaw.channel`, `openclaw.provider`, `openclaw.model`) - `openclaw.context.tokens` (гістограма, attrs: `openclaw.context`, `openclaw.channel`, `openclaw.provider`, `openclaw.model`) - `gen_ai.client.token.usage` (гістограма, метрика семантичних конвенцій GenAI, attrs: `gen_ai.token.type` = `input`/`output`, `gen_ai.provider.name`, `gen_ai.operation.name`, `gen_ai.request.model`) -- `gen_ai.client.operation.duration` (гістограма, секунди, метрика семантичних конвенцій GenAI, attrs: `gen_ai.provider.name`, `gen_ai.operation.name`, `gen_ai.request.model`, необов’язковий `error.type`) +- `gen_ai.client.operation.duration` (гістограма, секунди, метрика семантичних конвенцій GenAI, attrs: `gen_ai.provider.name`, `gen_ai.operation.name`, `gen_ai.request.model`, optional `error.type`) - `openclaw.model_call.duration_ms` (гістограма, attrs: `openclaw.provider`, `openclaw.model`, `openclaw.api`, `openclaw.transport`, плюс `openclaw.errorCategory` і `openclaw.failureKind` для класифікованих помилок) - `openclaw.model_call.request_bytes` (гістограма, розмір у байтах UTF-8 фінального payload запиту моделі; без сирого вмісту payload) - `openclaw.model_call.response_bytes` (гістограма, розмір у байтах UTF-8 подій потокової відповіді моделі; без сирого вмісту відповіді) @@ -198,58 +198,58 @@ openclaw plugins enable diagnostics-otel - `openclaw.message.delivery.started` (лічильник, attrs: `openclaw.channel`, `openclaw.delivery.kind`) - `openclaw.message.delivery.duration_ms` (гістограма, attrs: `openclaw.channel`, `openclaw.delivery.kind`, `openclaw.outcome`, `openclaw.errorCategory`) -### Черги та сеанси +### Черги та сесії - `openclaw.queue.lane.enqueue` (лічильник, attrs: `openclaw.lane`) - `openclaw.queue.lane.dequeue` (лічильник, attrs: `openclaw.lane`) - `openclaw.queue.depth` (гістограма, attrs: `openclaw.lane` або `openclaw.channel=heartbeat`) - `openclaw.queue.wait_ms` (гістограма, attrs: `openclaw.lane`) - `openclaw.session.state` (лічильник, attrs: `openclaw.state`, `openclaw.reason`) -- `openclaw.session.stuck` (лічильник, attrs: `openclaw.state`; генерується лише для обліку застарілих сеансів без активної роботи) -- `openclaw.session.stuck_age_ms` (гістограма, attrs: `openclaw.state`; генерується лише для обліку застарілих сеансів без активної роботи) +- `openclaw.session.stuck` (лічильник, attrs: `openclaw.state`; створюється лише для обліку застарілих сесій без активної роботи) +- `openclaw.session.stuck_age_ms` (гістограма, attrs: `openclaw.state`; створюється лише для обліку застарілих сесій без активної роботи) - `openclaw.run.attempt` (лічильник, attrs: `openclaw.attempt`) -### Телеметрія активності сеансу +### Телеметрія життєздатності сесії `diagnostics.stuckSessionWarnMs` — це поріг віку без прогресу для діагностики -активності сеансів. Сеанс `processing` не наближається до цього порогу, -поки OpenClaw спостерігає прогрес відповіді, інструменту, статусу, блоку або середовища виконання ACP. -Typing keepalives не зараховуються як прогрес, тому беззвучну модель або harness -все ще можна виявити. +життєздатності сесії. Сесія `processing` не наближається до цього порога, +поки OpenClaw спостерігає прогрес відповіді, інструмента, статусу, блоку або ACP runtime. +Typing keepalives не враховуються як прогрес, тому мовчазну модель або harness все ще можна +виявити. -OpenClaw класифікує сеанси за роботою, яку він ще може спостерігати: +OpenClaw класифікує сесії за роботою, яку він усе ще може спостерігати: - `session.long_running`: активна вбудована робота, виклики моделі або виклики інструментів - усе ще просуваються. + досі просуваються. - `session.stalled`: активна робота існує, але активний запуск не повідомляв - про нещодавній прогрес. Застряглі вбудовані запуски спершу залишаються лише для спостереження, а потім - виконують abort-drain після щонайменше 10 хвилин і 5x `diagnostics.stuckSessionWarnMs` - без прогресу, щоб чергові ходи за цим lane могли відновитися. + про нещодавній прогрес. Завислі вбудовані запуски спочатку залишаються лише для спостереження, а потім + переходять до abort-drain після щонайменше 10 хвилин і 5x `diagnostics.stuckSessionWarnMs` + без прогресу, щоб поставлені в чергу ходи позаду lane могли відновитися. - `session.stuck`: застарілий облік сесії без активної роботи. Це негайно звільняє - відповідний lane сесії. + відповідну session lane. -Лише `session.stuck` емітує лічильник `openclaw.session.stuck`, +Лише `session.stuck` генерує лічильник `openclaw.session.stuck`, гістограму `openclaw.session.stuck_age_ms` і span `openclaw.session.stuck`. -Повторні діагностичні події `session.stuck` застосовують backoff, доки сесія залишається -незмінною, тому dashboards мають сповіщати про стійке зростання, а не про кожен -тік Heartbeat. Про параметр конфігурації та значення за замовчуванням див. -[Довідник конфігурації](/uk/gateway/configuration-reference#diagnostics). +Повторні діагностичні події `session.stuck` сповільнюються, доки сесія +залишається незмінною, тому панелі моніторингу мають сповіщати про сталі +зростання, а не про кожен Heartbeat tick. Налаштування конфігурації та значення за замовчуванням див. +у [довіднику конфігурації](/uk/gateway/configuration-reference#diagnostics). ### Життєвий цикл harness -- `openclaw.harness.duration_ms` (гістограма, attrs: `openclaw.harness.id`, `openclaw.harness.plugin`, `openclaw.outcome`, `openclaw.harness.phase` для помилок) +- `openclaw.harness.duration_ms` (гістограма, атрибути: `openclaw.harness.id`, `openclaw.harness.plugin`, `openclaw.outcome`, `openclaw.harness.phase` для помилок) ### Exec -- `openclaw.exec.duration_ms` (гістограма, attrs: `openclaw.exec.target`, `openclaw.exec.mode`, `openclaw.outcome`, `openclaw.failureKind`) +- `openclaw.exec.duration_ms` (гістограма, атрибути: `openclaw.exec.target`, `openclaw.exec.mode`, `openclaw.outcome`, `openclaw.failureKind`) ### Внутрішня діагностика (пам’ять і цикл інструментів) -- `openclaw.memory.heap_used_bytes` (гістограма, attrs: `openclaw.memory.kind`) +- `openclaw.memory.heap_used_bytes` (гістограма, атрибути: `openclaw.memory.kind`) - `openclaw.memory.rss_bytes` (гістограма) -- `openclaw.memory.pressure` (лічильник, attrs: `openclaw.memory.level`) -- `openclaw.tool.loop.iterations` (лічильник, attrs: `openclaw.toolName`, `openclaw.outcome`) -- `openclaw.tool.loop.duration_ms` (гістограма, attrs: `openclaw.toolName`, `openclaw.outcome`) +- `openclaw.memory.pressure` (лічильник, атрибути: `openclaw.memory.level`) +- `openclaw.tool.loop.iterations` (лічильник, атрибути: `openclaw.toolName`, `openclaw.outcome`) +- `openclaw.tool.loop.duration_ms` (гістограма, атрибути: `openclaw.toolName`, `openclaw.outcome`) ## Експортовані spans @@ -265,7 +265,7 @@ OpenClaw класифікує сеанси за роботою, яку він щ - `gen_ai.request.model`, `gen_ai.operation.name`, `openclaw.provider`, `openclaw.model`, `openclaw.api`, `openclaw.transport` - `openclaw.errorCategory` і необов’язковий `openclaw.failureKind` для помилок - `openclaw.model_call.request_bytes`, `openclaw.model_call.response_bytes`, `openclaw.model_call.time_to_first_byte_ms` - - `openclaw.provider.request_id_hash` (обмежений SHA-хеш id запиту до upstream-провайдера; raw ids не експортуються) + - `openclaw.provider.request_id_hash` (обмежений SHA-хеш ідентифікатора запиту upstream-провайдера; необроблені ідентифікатори не експортуються) - `openclaw.harness.run` - `openclaw.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` @@ -275,37 +275,37 @@ OpenClaw класифікує сеанси за роботою, яку він щ - `openclaw.exec` - `openclaw.exec.target`, `openclaw.exec.mode`, `openclaw.outcome`, `openclaw.failureKind`, `openclaw.exec.command_length`, `openclaw.exec.exit_code`, `openclaw.exec.timed_out` - `openclaw.webhook.processed` - - `openclaw.channel`, `openclaw.webhook`, `openclaw.chatId` + - `openclaw.channel`, `openclaw.webhook` - `openclaw.webhook.error` - - `openclaw.channel`, `openclaw.webhook`, `openclaw.chatId`, `openclaw.error` + - `openclaw.channel`, `openclaw.webhook`, `openclaw.error` - `openclaw.message.processed` - - `openclaw.channel`, `openclaw.outcome`, `openclaw.chatId`, `openclaw.messageId`, `openclaw.reason` + - `openclaw.channel`, `openclaw.outcome`, `openclaw.reason` - `openclaw.message.delivery` - `openclaw.channel`, `openclaw.delivery.kind`, `openclaw.outcome`, `openclaw.errorCategory`, `openclaw.delivery.result_count` - `openclaw.session.stuck` - `openclaw.state`, `openclaw.ageMs`, `openclaw.queueDepth` - `openclaw.context.assembled` - - `openclaw.prompt.size`, `openclaw.history.size`, `openclaw.context.tokens`, `openclaw.errorCategory` (без prompt, history, response або вмісту session-key) + - `openclaw.prompt.size`, `openclaw.history.size`, `openclaw.context.tokens`, `openclaw.errorCategory` (без вмісту prompt, history, response або session-key) - `openclaw.tool.loop` - - `openclaw.toolName`, `openclaw.outcome`, `openclaw.iterations`, `openclaw.errorCategory` (без повідомлень циклу, params або виводу інструмента) + - `openclaw.toolName`, `openclaw.outcome`, `openclaw.iterations`, `openclaw.errorCategory` (без повідомлень циклу, параметрів або виводу інструменту) - `openclaw.memory.pressure` - `openclaw.memory.level`, `openclaw.memory.heap_used_bytes`, `openclaw.memory.rss_bytes` -Коли захоплення вмісту явно ввімкнено, spans моделі та інструментів також можуть -містити обмежені, відредаговані атрибути `openclaw.content.*` для конкретних -класів вмісту, які ви ввімкнули. +Коли capture вмісту явно ввімкнено, spans моделі та інструментів також можуть +містити обмежені й відредаговані атрибути `openclaw.content.*` для конкретних +класів вмісту, які ви вибрали. ## Каталог діагностичних подій -Події нижче підтримують наведені вище метрики та spans. Plugins також можуть підписуватися -на них напряму без експорту OTLP. +Наведені нижче події підтримують метрики та spans вище. Plugins також можуть +підписуватися на них напряму без експорту OTLP. **Використання моделі** -- `model.usage` — tokens, cost, duration, context, provider/model/channel, - ids сесій. `usage` — це облік провайдера/ходу для вартості й телеметрії; - `context.used` — поточний знімок prompt/context і може бути нижчим за - provider `usage.total`, коли задіяно cached input або виклики tool-loop. +- `model.usage` — токени, вартість, тривалість, контекст, provider/model/channel, + ідентифікатори сесії. `usage` — це облік провайдера/ходу для вартості й телеметрії; + `context.used` — це поточний знімок prompt/context і може бути нижчим за + provider `usage.total`, коли задіяні кешований ввід або виклики tool-loop. **Потік повідомлень** @@ -325,20 +325,20 @@ OpenClaw класифікує сеанси за роботою, яку він щ - `harness.run.started` / `harness.run.completed` / `harness.run.error` — життєвий цикл кожного запуску для agent harness. Містить `harnessId`, необов’язковий `pluginId`, provider/model/channel і run id. Завершення додає - `durationMs`, `outcome`, необов’язкові `resultClassification`, `yieldDetected`, + `durationMs`, `outcome`, необов’язкові `resultClassification`, `yieldDetected` і лічильники `itemLifecycle`. Помилки додають `phase` (`prepare`/`start`/`send`/`resolve`/`cleanup`), `errorCategory` і необов’язковий `cleanupFailed`. **Exec** -- `exec.process.completed` — кінцевий результат, тривалість, target, mode, exit +- `exec.process.completed` — підсумковий результат термінала, тривалість, target, mode, exit code і failure kind. Текст команди та робочі каталоги не включаються. ## Без експортера -Ви можете залишити діагностичні події доступними для Plugins або власних sinks без +Ви можете залишити діагностичні події доступними для Plugins або користувацьких sinks без запуску `diagnostics-otel`: ```json5 @@ -348,7 +348,7 @@ OpenClaw класифікує сеанси за роботою, яку він щ ``` Для цільового debug-виводу без підвищення `logging.level` використовуйте діагностичні -flags. Flags не чутливі до регістру та підтримують wildcards (наприклад, `telegram.*` або +прапорці. Прапорці не чутливі до регістру та підтримують wildcards (наприклад, `telegram.*` або `*`): ```json5 @@ -357,15 +357,15 @@ flags. Flags не чутливі до регістру та підтримуют } ``` -Або як одноразове перевизначення env: +Або як одноразове перевизначення через env: ```bash OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gateway ``` -Вивід flags потрапляє у стандартний файл журналу (`logging.file`) і все одно +Вивід прапорців надходить до стандартного log-файлу (`logging.file`) і все одно редагується через `logging.redactSensitive`. Повний посібник: -[Діагностичні flags](/uk/diagnostics/flags). +[діагностичні прапорці](/uk/diagnostics/flags). ## Вимкнення @@ -380,8 +380,8 @@ OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gateway ## Пов’язане -- [Журналювання](/uk/logging) — файлові журнали, консольний вивід, CLI tailing і вкладка Logs у Control UI -- [Внутрішня логіка журналювання Gateway](/uk/gateway/logging) — стилі WS-логів, префікси підсистем і захоплення консолі -- [Діагностичні flags](/uk/diagnostics/flags) — цільові flags debug-log +- [Журналювання](/uk/logging) — файлові журнали, консольний вивід, CLI tailing і вкладка журналів Control UI +- [Внутрішнє журналювання Gateway](/uk/gateway/logging) — стилі журналів WS, префікси підсистем і capture консолі +- [Діагностичні прапорці](/uk/diagnostics/flags) — цільові прапорці debug-log - [Експорт діагностики](/uk/gateway/diagnostics) — інструмент support-bundle для операторів (окремо від експорту OTEL) -- [Довідник конфігурації](/uk/gateway/configuration-reference#diagnostics) — повний довідник полів `diagnostics.*` +- [Довідник конфігурації](/uk/gateway/configuration-reference#diagnostics) — повна довідка полів `diagnostics.*`