Gateway
OpenTelemetry निर्यात
OpenClaw आधिकारिक diagnostics-otel Plugin के माध्यम से डायग्नॉस्टिक्स निर्यात करता है,
OTLP/HTTP (protobuf) का उपयोग करके। कंटेनर और सैंडबॉक्स लॉग पाइपलाइनों के लिए
लॉग stdout JSONL के रूप में भी लिखे जा सकते हैं। OTLP/HTTP स्वीकार करने वाला कोई भी
कलेक्टर या बैकएंड बिना कोड बदलावों के काम करता है। स्थानीय फ़ाइल लॉग और उन्हें पढ़ने के तरीके के लिए,
लॉगिंग देखें।
यह साथ में कैसे फिट होता है
- डायग्नॉस्टिक्स इवेंट संरचित, इन-प्रोसेस रिकॉर्ड होते हैं जिन्हें Gateway और bundled Plugins मॉडल रन, संदेश प्रवाह, सत्रों, कतारों, और exec के लिए उत्सर्जित करते हैं।
diagnostics-otelPlugin उन इवेंट की सदस्यता लेता है और उन्हें OTLP/HTTP पर OpenTelemetry मेट्रिक्स, ट्रेस, और लॉग के रूप में निर्यात करता है। यह डायग्नॉस्टिक लॉग रिकॉर्ड को stdout JSONL में मिरर भी कर सकता है।- प्रोवाइडर कॉल को OpenClaw के विश्वसनीय मॉडल-कॉल स्पैन संदर्भ से
W3C
traceparentहेडर मिलता है, जब प्रोवाइडर ट्रांसपोर्ट कस्टम हेडर स्वीकार करता है। Plugin द्वारा उत्सर्जित ट्रेस संदर्भ आगे नहीं भेजा जाता। - एक्सपोर्टर केवल तब अटैच होते हैं जब डायग्नॉस्टिक्स सतह और Plugin दोनों सक्षम हों, इसलिए डिफ़ॉल्ट रूप से इन-प्रोसेस लागत लगभग शून्य रहती है।
त्वरित शुरुआत
पैकेज्ड इंस्टॉल के लिए, पहले Plugin इंस्टॉल करें:
openclaw plugins install clawhub:@openclaw/diagnostics-otel{ plugins: { allow: ["diagnostics-otel"], entries: { "diagnostics-otel": { enabled: true }, }, }, diagnostics: { enabled: true, otel: { enabled: true, endpoint: "http://otel-collector:4318", protocol: "http/protobuf", serviceName: "openclaw-gateway", traces: true, metrics: true, logs: true, sampleRate: 0.2, flushIntervalMs: 60000, }, },}आप CLI से भी Plugin सक्षम कर सकते हैं:
openclaw plugins enable diagnostics-otelनिर्यात किए गए सिग्नल
| सिग्नल | इसमें क्या जाता है |
|---|---|
| मेट्रिक्स | टोकन उपयोग, लागत, रन अवधि, फेलओवर, skill उपयोग, संदेश प्रवाह, Talk इवेंट, कतार लेन, सत्र स्थिति/रिकवरी, टूल निष्पादन, oversized payloads, exec, और मेमोरी दबाव के लिए काउंटर और हिस्टोग्राम। |
| ट्रेस | मॉडल उपयोग, मॉडल कॉल, harness lifecycle, skill उपयोग, टूल निष्पादन, exec, webhook/संदेश प्रोसेसिंग, context assembly, और टूल लूप के लिए स्पैन। |
| लॉग | diagnostics.otel.logs सक्षम होने पर OTLP या stdout JSONL पर निर्यात किए गए संरचित logging.file रिकॉर्ड; लॉग बॉडी तब तक रोकी जाती हैं जब तक content capture स्पष्ट रूप से सक्षम न हो। |
traces, metrics, और logs को स्वतंत्र रूप से टॉगल करें। जब
diagnostics.otel.enabled true होता है, तब ट्रेस और मेट्रिक्स डिफ़ॉल्ट रूप से चालू होते हैं। लॉग डिफ़ॉल्ट रूप से बंद रहते हैं और
केवल तब निर्यात किए जाते हैं जब diagnostics.otel.logs स्पष्ट रूप से true हो। लॉग निर्यात
डिफ़ॉल्ट रूप से OTLP पर होता है; stdout पर JSONL के लिए diagnostics.otel.logsExporter को stdout पर सेट करें,
या प्रत्येक डायग्नॉस्टिक लॉग रिकॉर्ड को OTLP और stdout दोनों पर भेजने के लिए both सेट करें।
कॉन्फ़िगरेशन संदर्भ
{ diagnostics: { enabled: true, otel: { enabled: true, endpoint: "http://otel-collector:4318", tracesEndpoint: "http://otel-collector:4318/v1/traces", metricsEndpoint: "http://otel-collector:4318/v1/metrics", logsEndpoint: "http://otel-collector:4318/v1/logs", protocol: "http/protobuf", // grpc is ignored serviceName: "openclaw-gateway", headers: { "x-collector-token": "..." }, traces: true, metrics: true, logs: true, logsExporter: "otlp", // otlp | stdout | both sampleRate: 0.2, // root-span sampler, 0.0..1.0 flushIntervalMs: 60000, // metric export interval (min 1000ms) captureContent: { enabled: false, inputMessages: false, outputMessages: false, toolInputs: false, toolOutputs: false, systemPrompt: false, toolDefinitions: false, }, }, },}एनवायरनमेंट वैरिएबल
| वैरिएबल | उद्देश्य |
|---|---|
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_SERVICE_NAME |
diagnostics.otel.serviceName को ओवरराइड करें। |
OTEL_EXPORTER_OTLP_PROTOCOL |
वायर प्रोटोकॉल को ओवरराइड करें (आज केवल http/protobuf का सम्मान किया जाता है)। |
OTEL_SEMCONV_STABILITY_OPT_IN |
नवीनतम experimental GenAI inference span shape उत्सर्जित करने के लिए gen_ai_latest_experimental पर सेट करें, जिसमें {gen_ai.operation.name} {gen_ai.request.model} span names, CLIENT span kind, और legacy gen_ai.system के बजाय gen_ai.provider.name शामिल हैं। GenAI मेट्रिक्स हमेशा bounded, low-cardinality semantic attributes का उपयोग करते हैं। |
OPENCLAW_OTEL_PRELOADED |
जब किसी दूसरे preload या host process ने global OpenTelemetry SDK पहले से register कर दिया हो, तो 1 पर सेट करें। तब Plugin अपना NodeSDK lifecycle छोड़ देता है, लेकिन फिर भी diagnostic listeners wire करता है और traces/metrics/logs का सम्मान करता है। |
गोपनीयता और सामग्री कैप्चर
कच्ची मॉडल/टूल सामग्री डिफ़ॉल्ट रूप से निर्यात नहीं की जाती। स्पैन bounded
identifiers (channel, provider, model, error category, hash-only request ids,
tool source, tool owner, और skill name/source) रखते हैं और prompt text,
response text, tool inputs, tool outputs, skill file paths, या session keys कभी शामिल नहीं करते।
OTLP लॉग रिकॉर्ड डिफ़ॉल्ट रूप से severity, logger, code location, trusted trace context,
और sanitized attributes रखते हैं, लेकिन raw log message body केवल
तब निर्यात की जाती है जब diagnostics.otel.captureContent boolean true पर सेट हो। Granular
captureContent.* subkeys log bodies को सक्षम नहीं करते। scoped agent session keys जैसी दिखने वाली
labels को unknown से बदल दिया जाता है।
Talk मेट्रिक्स केवल bounded event metadata निर्यात करते हैं, जैसे mode, transport,
provider, और event type। उनमें transcripts, audio payloads,
session ids, turn ids, call ids, room ids, या handoff tokens शामिल नहीं होते।
आउटबाउंड मॉडल अनुरोधों में W3C traceparent हेडर शामिल हो सकता है। वह हेडर
केवल सक्रिय मॉडल कॉल के लिए OpenClaw-owned diagnostic trace context से
जनरेट किया जाता है। मौजूदा caller-supplied traceparent हेडर बदल दिए जाते हैं, इसलिए Plugins या
custom provider options cross-service trace ancestry को spoof नहीं कर सकते।
diagnostics.otel.captureContent.* को true पर केवल तब सेट करें जब आपका collector और
retention policy prompt, response, tool, या system-prompt
text के लिए स्वीकृत हों। प्रत्येक subkey स्वतंत्र रूप से opt-in है:
inputMessages- user prompt content.outputMessages- model response content.toolInputs- tool argument payloads.toolOutputs- tool result payloads.systemPrompt- assembled system/developer prompt.toolDefinitions- model tool names, descriptions, and schemas.
जब कोई subkey सक्षम होती है, model और tool spans को केवल उसी वर्ग के लिए bounded, redacted
openclaw.content.* attributes मिलते हैं। boolean
captureContent: true केवल व्यापक diagnostics captures के लिए उपयोग करें, जहाँ OTLP log
message bodies भी export के लिए approved हों।
toolInputs/toolOutputs content built-in agent runtime के
tool executions के लिए capture किया जाता है (openclaw.content.tool_input completed/error spans पर,
openclaw.content.tool_output completed spans पर)। External harness tool calls
(Codex, Claude CLI) content payloads के बिना tool.execution.* spans emit करते हैं।
Captured content trusted, listener-only channel पर यात्रा करता है और public diagnostic event bus पर
कभी नहीं रखा जाता।
सैंपलिंग और फ्लशिंग
- ट्रेस:
diagnostics.otel.sampleRate(केवल root-span,0.0सभी को drop करता है,1.0सभी को रखता है)। - मेट्रिक्स:
diagnostics.otel.flushIntervalMs(न्यूनतम1000)। - लॉग: OTLP logs
logging.level(file log level) का सम्मान करते हैं। वे diagnostic log-record redaction path का उपयोग करते हैं, console formatting का नहीं। High-volume installs को local sampling के बजाय OTLP collector sampling/filtering को प्राथमिकता देनी चाहिए। जब आपका platform पहले से stdout/stderr को log processor तक भेजता हो और आपके पास OTLP logs collector न हो, तबdiagnostics.otel.logsExporter: "stdout"सेट करें। Stdout records प्रति line एक JSON object होते हैं, जिनमेंts,signal,service.name, severity, body, redacted attributes, और उपलब्ध होने पर trusted trace fields शामिल होते हैं। - फ़ाइल-लॉग correlation: JSONL file logs में top-level
traceId,spanId,parentSpanId, औरtraceFlagsशामिल होते हैं, जब log call valid diagnostic trace context रखती है, जिससे log processors local log lines को exported spans से जोड़ सकते हैं। - Request correlation: Gateway HTTP requests और WebSocket frames एक
internal request trace scope बनाते हैं। उस scope के अंदर logs और diagnostic events
डिफ़ॉल्ट रूप से request trace inherit करते हैं, जबकि agent run और model-call spans
children के रूप में बनाए जाते हैं ताकि provider
traceparentheaders उसी trace पर रहें।
निर्यात किए गए मेट्रिक्स
मॉडल उपयोग
openclaw.tokens(काउंटर, attrs:openclaw.token,openclaw.channel,openclaw.provider,openclaw.model,openclaw.agent)openclaw.cost.usd(काउंटर, attrs:openclaw.channel,openclaw.provider,openclaw.model)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 semantic-conventions मेट्रिक, 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 semantic-conventions मेट्रिक, attrs:gen_ai.provider.name,gen_ai.operation.name,gen_ai.request.model, वैकल्पिक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 बाइट आकार; कोई कच्ची पेलोड सामग्री नहीं)openclaw.model_call.response_bytes(हिस्टोग्राम, स्ट्रीम किए गए प्रतिक्रिया चंक पेलोड का UTF-8 बाइट आकार; उच्च-आवृत्ति टेक्स्ट, सोच, और टूल-कॉल डेल्टा केवल वृद्धिशीलdeltaबाइट गिनते हैं; कोई कच्ची प्रतिक्रिया सामग्री नहीं)openclaw.model_call.time_to_first_byte_ms(हिस्टोग्राम, पहले स्ट्रीम किए गए प्रतिक्रिया इवेंट से पहले बीता समय)openclaw.model.failover(काउंटर, attrs:openclaw.provider,openclaw.model,openclaw.failover.to_provider,openclaw.failover.to_model,openclaw.failover.reason,openclaw.failover.suspended,openclaw.lane)openclaw.skill.used(काउंटर, attrs:openclaw.skill.name,openclaw.skill.source,openclaw.skill.activation, वैकल्पिकopenclaw.agent, वैकल्पिकopenclaw.toolName)
संदेश प्रवाह
openclaw.webhook.received(काउंटर, attrs:openclaw.channel,openclaw.webhook)openclaw.webhook.error(काउंटर, attrs:openclaw.channel,openclaw.webhook)openclaw.webhook.duration_ms(हिस्टोग्राम, attrs:openclaw.channel,openclaw.webhook)openclaw.message.queued(काउंटर, attrs:openclaw.channel,openclaw.source)openclaw.message.received(काउंटर, attrs:openclaw.channel,openclaw.source)openclaw.message.dispatch.started(काउंटर, attrs:openclaw.channel,openclaw.source)openclaw.message.dispatch.completed(काउंटर, attrs:openclaw.channel,openclaw.outcome,openclaw.reason,openclaw.source)openclaw.message.dispatch.duration_ms(हिस्टोग्राम, attrs:openclaw.channel,openclaw.outcome,openclaw.reason,openclaw.source)openclaw.message.processed(काउंटर, attrs:openclaw.channel,openclaw.outcome)openclaw.message.duration_ms(हिस्टोग्राम, attrs:openclaw.channel,openclaw.outcome)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.talk.event(काउंटर, attrs:openclaw.talk.event_type,openclaw.talk.mode,openclaw.talk.transport,openclaw.talk.brain,openclaw.talk.provider)openclaw.talk.event.duration_ms(हिस्टोग्राम, attrs:openclaw.talk.eventजैसे ही; जब कोई Talk इवेंट अवधि रिपोर्ट करता है तब उत्सर्जित)openclaw.talk.audio.bytes(हिस्टोग्राम, attrs:openclaw.talk.eventजैसे ही; बाइट लंबाई रिपोर्ट करने वाले Talk ऑडियो फ्रेम इवेंट के लिए उत्सर्जित)
कतारें और सत्र
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.turn.created(काउंटर, attrs:openclaw.agent,openclaw.channel,openclaw.trigger)openclaw.session.recovery.requested(काउंटर, attrs:openclaw.state,openclaw.action,openclaw.active_work_kind,openclaw.reason)openclaw.session.recovery.completed(काउंटर, attrs:openclaw.state,openclaw.action,openclaw.status,openclaw.active_work_kind,openclaw.reason)openclaw.session.recovery.age_ms(हिस्टोग्राम, attrs: मेल खाने वाले रिकवरी काउंटर जैसे ही)openclaw.run.attempt(काउंटर, attrs:openclaw.attempt)
सत्र सक्रियता टेलीमेट्री
diagnostics.stuckSessionWarnMs सत्र सक्रियता डायग्नॉस्टिक्स के लिए no-progress आयु सीमा है। कोई processing सत्र इस सीमा की ओर उम्र नहीं बढ़ाता, जब तक OpenClaw reply, tool, status, block, या ACP runtime प्रगति देखता है। Typing keepalives को प्रगति के रूप में नहीं गिना जाता, इसलिए silent model या harness फिर भी पहचाना जा सकता है।
OpenClaw सत्रों को उस काम के आधार पर वर्गीकृत करता है जिसे वह अब भी देख सकता है:
session.long_running: सक्रिय embedded work, model calls, या tool calls अब भी प्रगति कर रहे हैं। स्वामित्व वाले model calls जोdiagnostics.stuckSessionWarnMsसे आगे silent रहते हैं, वे भीdiagnostics.stuckSessionAbortMsसे पहले long-running के रूप में रिपोर्ट करते हैं ताकि धीमे या non-streaming model providers, abort-observable बने रहने तक, stalled gateway sessions जैसे न दिखें।session.stalled: सक्रिय काम मौजूद है, लेकिन सक्रिय run ने हाल की प्रगति रिपोर्ट नहीं की है। स्वामित्व वाले model callsdiagnostics.stuckSessionAbortMsपर या उसके बादsession.long_runningसेsession.stalledमें स्विच करते हैं; ownerless पुराने model/tool activity को harmless long-running work नहीं माना जाता। Stalled embedded runs पहले observe-only रहते हैं, फिरdiagnostics.stuckSessionAbortMsके बाद कोई प्रगति न होने पर abort-drain करते हैं ताकि lane के पीछे queued turns फिर शुरू हो सकें। unset होने पर, abort threshold कम से कम 5 मिनट औरdiagnostics.stuckSessionWarnMsके 3x की अधिक सुरक्षित विस्तारित window पर डिफॉल्ट होता है।session.stuck: बिना सक्रिय काम के पुराना सत्र बहीखाता, या पुराने ownerless model/tool activity वाला निष्क्रिय queued session। recovery gates पास होने के तुरंत बाद यह प्रभावित session lane को release करता है।
Recovery संरचित session.recovery.requested और session.recovery.completed इवेंट उत्सर्जित करती है। Diagnostic session state को केवल mutating recovery outcome (aborted या released) के बाद और केवल तभी idle चिह्नित किया जाता है जब वही processing generation अब भी current हो।
केवल session.stuck, openclaw.session.stuck काउंटर, openclaw.session.stuck_age_ms हिस्टोग्राम, और openclaw.session.stuck span उत्सर्जित करता है। बार-बार आने वाले session.stuck diagnostics session के unchanged रहने तक back off करते हैं, इसलिए dashboards को हर heartbeat tick के बजाय sustained increases पर alert करना चाहिए। config knob और defaults के लिए, देखें Configuration reference.
Liveness warnings भी उत्सर्जित करते हैं:
openclaw.liveness.warning(काउंटर, attrs:openclaw.liveness.reason)openclaw.liveness.event_loop_delay_p99_ms(हिस्टोग्राम, attrs:openclaw.liveness.reason)openclaw.liveness.event_loop_delay_max_ms(हिस्टोग्राम, attrs:openclaw.liveness.reason)openclaw.liveness.event_loop_utilization(हिस्टोग्राम, attrs:openclaw.liveness.reason)openclaw.liveness.cpu_core_ratio(हिस्टोग्राम, attrs:openclaw.liveness.reason)
हार्नेस जीवनचक्र
openclaw.harness.duration_ms(हिस्टोग्राम, attrs:openclaw.harness.id,openclaw.harness.plugin,openclaw.outcome, त्रुटियों परopenclaw.harness.phase)
टूल निष्पादन
openclaw.tool.execution.duration_ms(हिस्टोग्राम, attrs:gen_ai.tool.name,openclaw.toolName,openclaw.tool.source,openclaw.tool.owner,openclaw.tool.params.kind, साथ ही त्रुटियों परopenclaw.errorCategory)openclaw.tool.execution.blocked(काउंटर, attrs:gen_ai.tool.name,openclaw.toolName,openclaw.tool.source,openclaw.tool.owner,openclaw.tool.params.kind,openclaw.deniedReason)
निष्पादन
openclaw.exec.duration_ms(हिस्टोग्राम, attrs:openclaw.exec.target,openclaw.exec.mode,openclaw.outcome,openclaw.failureKind)
डायग्नॉस्टिक्स आंतरिक भाग (मेमोरी और टूल लूप)
openclaw.payload.large(काउंटर, attrs:openclaw.payload.surface,openclaw.payload.action,openclaw.channel,openclaw.plugin,openclaw.reason)openclaw.payload.large_bytes(हिस्टोग्राम, attrs:openclaw.payload.largeजैसे ही)openclaw.memory.heap_used_bytes(हिस्टोग्राम, attrs: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.model.usageopenclaw.channel,openclaw.provider,openclaw.modelopenclaw.tokens.*(input/output/cache_read/cache_write/total)- डिफ़ॉल्ट रूप से
gen_ai.system, या नवीनतम GenAI अर्थगत परंपराएँ चुने जाने परgen_ai.provider.name gen_ai.request.model,gen_ai.operation.name,gen_ai.usage.*
openclaw.runopenclaw.outcome,openclaw.channel,openclaw.provider,openclaw.model,openclaw.errorCategory
openclaw.model.call- डिफ़ॉल्ट रूप से
gen_ai.system, या नवीनतम GenAI अर्थगत परंपराएँ चुने जाने परgen_ai.provider.name 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_msopenclaw.provider.request_id_hash(upstream provider request id का सीमित SHA-आधारित हैश; कच्चे ids निर्यात नहीं किए जाते)OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimentalके साथ, model-call spansopenclaw.model.callके बजाय नवीनतम GenAI inference span नाम{gen_ai.operation.name} {gen_ai.request.model}औरCLIENTspan kind का उपयोग करते हैं।
- डिफ़ॉल्ट रूप से
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,openclaw.toolName,openclaw.errorCategory,openclaw.tool.params.*
openclaw.execopenclaw.exec.target,openclaw.exec.mode,openclaw.outcome,openclaw.failureKind,openclaw.exec.command_length,openclaw.exec.exit_code,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(कोई prompt, history, response, या session-key सामग्री नहीं)
openclaw.tool.loopopenclaw.toolName,openclaw.outcome,openclaw.iterations,openclaw.errorCategory(कोई loop messages, params, या tool output नहीं)
openclaw.memory.pressureopenclaw.memory.level,openclaw.memory.heap_used_bytes,openclaw.memory.rss_bytes
जब content capture स्पष्ट रूप से सक्षम हो, तो model और tool spans में उन विशिष्ट
content classes के लिए सीमित, संशोधित openclaw.content.* attributes भी
शामिल हो सकते हैं जिन्हें आपने चुना है।
Diagnostic event catalog
नीचे दिए गए events ऊपर के metrics और spans को आधार देते हैं। Plugins OTLP export के बिना भी उन्हें सीधे subscribe कर सकते हैं।
Model usage
model.usage- tokens, cost, duration, context, provider/model/channel, session ids.usageलागत और telemetry के लिए provider/turn accounting है;context.usedवर्तमान prompt/context snapshot है और cached input या tool-loop calls शामिल होने पर providerusage.totalसे कम हो सकता है।
Message flow
webhook.received/webhook.processed/webhook.errormessage.queued/message.processedmessage.delivery.started/message.delivery.completed/message.delivery.error
Queue and session
queue.lane.enqueue/queue.lane.dequeuesession.state/session.long_running/session.stalled/session.stuckrun.attempt/run.progressdiagnostic.heartbeat(aggregate counters: webhooks/queue/session)
Harness lifecycle
harness.run.started/harness.run.completed/harness.run.error- agent harness के लिए प्रति-run lifecycle। इसमेंharnessId, वैकल्पिकpluginId, provider/model/channel, और run id शामिल हैं। CompletiondurationMs,outcome, वैकल्पिकresultClassification,yieldDetected, औरitemLifecyclecounts जोड़ता है। Errorsphase(prepare/start/send/resolve/cleanup),errorCategory, और वैकल्पिकcleanupFailedजोड़ते हैं।
Exec
exec.process.completed- terminal outcome, duration, target, mode, exit code, और failure kind। Command text और working directories शामिल नहीं हैं।
Without an exporter
आप diagnostics-otel चलाए बिना diagnostics events को plugins या custom sinks के लिए उपलब्ध रख सकते हैं:
{ diagnostics: { enabled: true },}logging.level बढ़ाए बिना लक्षित debug output के लिए, diagnostics
flags का उपयोग करें। Flags case-insensitive हैं और wildcards का समर्थन करते हैं (जैसे telegram.* या
*):
{ diagnostics: { flags: ["telegram.http"] },}या एक बार के env override के रूप में:
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gatewayFlag output standard log file (logging.file) में जाता है और फिर भी
logging.redactSensitive द्वारा redacted रहता है। पूर्ण मार्गदर्शिका:
Diagnostics flags.
Disable
{ diagnostics: { otel: { enabled: false } },}आप diagnostics-otel को plugins.allow से बाहर भी छोड़ सकते हैं, या
openclaw plugins disable diagnostics-otel चला सकते हैं।
Related
- Logging - file logs, console output, CLI tailing, और Control UI Logs tab
- Gateway logging internals - WS log styles, subsystem prefixes, और console capture
- Diagnostics flags - लक्षित debug-log flags
- Diagnostics export - operator support-bundle tool (OTEL export से अलग)
- Configuration reference - पूर्ण
diagnostics.*field reference