diagnostics-otel plugin के माध्यम से डायग्नोस्टिक्स निर्यात करता है,
जिसमें OTLP/HTTP (protobuf) का उपयोग होता है। कंटेनर और सैंडबॉक्स लॉग पाइपलाइनों के लिए
लॉग stdout JSONL के रूप में भी लिखे जा सकते हैं। OTLP/HTTP स्वीकार करने वाला कोई भी
कलेक्टर या बैकएंड बिना कोड परिवर्तन के काम करता है। स्थानीय फ़ाइल लॉग के लिए,
लॉगिंग देखें।
- डायग्नोस्टिक्स इवेंट संरचित, इन-प्रोसेस रिकॉर्ड हैं, जिन्हें Gateway और बंडल किए गए plugins मॉडल रन, संदेश प्रवाह, सत्र, कतारों और exec के लिए उत्सर्जित करते हैं।
diagnostics-otelउन इवेंट की सदस्यता लेता है और उन्हें OTLP/HTTP पर OpenTelemetry मेट्रिक्स, ट्रेस और लॉग के रूप में निर्यात करता है तथा लॉग रिकॉर्ड को stdout JSONL पर मिरर कर सकता है।- प्रोवाइडर कॉल को OpenClaw के विश्वसनीय मॉडल-कॉल स्पैन संदर्भ से एक W3C
traceparentहेडर मिलता है, जब प्रोवाइडर ट्रांसपोर्ट कस्टम हेडर स्वीकार करता है। Plugin द्वारा उत्सर्जित ट्रेस संदर्भ आगे प्रसारित नहीं किया जाता। - निर्यातक केवल तभी संलग्न होते हैं, जब डायग्नोस्टिक्स सतह और plugin दोनों सक्षम हों, इसलिए डिफ़ॉल्ट रूप से इन-प्रोसेस लागत लगभग शून्य रहती है।
त्वरित शुरुआत
openclaw plugins enable diagnostics-otel।
protocol केवल http/protobuf का समर्थन करता है। चूँकि traces और metrics डिफ़ॉल्ट रूप से सक्षम होते हैं, इसलिए कोई भी अन्य मान (grpc सहित) unsupported protocol चेतावनी के साथ पूरी diagnostics-otel सदस्यता को रोक देता है—इससे stdout लॉग निर्यात भी रुक जाता है। यदि आपको गैर-OTLP प्रोटोकॉल मान के साथ केवल logsExporter: "stdout" चाहिए, तो traces: false और metrics: false को स्पष्ट रूप से सेट करें।निर्यात किए गए सिग्नल
traces, metrics और logs को स्वतंत्र रूप से टॉगल करें। जब diagnostics.otel.enabled true होता है, तब ट्रेस और मेट्रिक्स
डिफ़ॉल्ट रूप से चालू होते हैं; लॉग डिफ़ॉल्ट रूप से बंद होते हैं
और केवल तभी निर्यात होते हैं, जब diagnostics.otel.logs को स्पष्ट रूप से true किया गया हो। लॉग निर्यात
का डिफ़ॉल्ट OTLP है; stdout पर JSONL के लिए diagnostics.otel.logsExporter को stdout,
या दोनों के लिए both सेट करें।
कॉन्फ़िगरेशन संदर्भ
पर्यावरण चर
गोपनीयता और सामग्री कैप्चर
कच्ची मॉडल/टूल सामग्री डिफ़ॉल्ट रूप से निर्यात नहीं की जाती। स्पैन में सीमित पहचानकर्ता (चैनल, प्रोवाइडर, मॉडल, त्रुटि श्रेणी, केवल-हैश अनुरोध आईडी, टूल स्रोत, टूल स्वामी, स्किल नाम/स्रोत) होते हैं और उनमें कभी भी प्रॉम्प्ट टेक्स्ट, प्रतिक्रिया टेक्स्ट, टूल इनपुट, टूल आउटपुट, स्किल फ़ाइल पथ या सत्र कुंजियाँ शामिल नहीं होतीं। स्कोप किए गए एजेंट सत्र कुंजियों जैसे दिखने वाले मान (उदाहरण के लिएagent: से शुरू होने वाले) कम-कार्डिनैलिटी विशेषताओं पर unknown से बदल दिए जाते हैं। OTLP लॉग
रिकॉर्ड डिफ़ॉल्ट रूप से गंभीरता, लॉगर, कोड स्थान, विश्वसनीय ट्रेस संदर्भ और
सैनिटाइज़ की गई विशेषताएँ बनाए रखते हैं; कच्ची लॉग संदेश बॉडी केवल
तभी निर्यात की जाती है, जब diagnostics.otel.captureContent बूलियन true हो। सूक्ष्म
captureContent.* उपकुंजियाँ कभी भी लॉग बॉडी सक्षम नहीं करतीं। Talk मेट्रिक्स केवल
सीमित इवेंट मेटाडेटा (मोड, ट्रांसपोर्ट, प्रोवाइडर, इवेंट प्रकार) निर्यात करते हैं—कोई
ट्रांसक्रिप्ट, ऑडियो पेलोड, सत्र आईडी, टर्न आईडी, कॉल आईडी, रूम आईडी या
हैंडऑफ़ टोकन नहीं।
आउटबाउंड मॉडल अनुरोधों में एक W3C traceparent हेडर शामिल हो सकता है, जो केवल
सक्रिय मॉडल कॉल के लिए OpenClaw-स्वामित्व वाले डायग्नोस्टिक ट्रेस संदर्भ से जनरेट होता है।
कॉलर द्वारा पहले से दिए गए traceparent हेडर बदल दिए जाते हैं, इसलिए plugins या
कस्टम प्रोवाइडर विकल्प क्रॉस-सर्विस ट्रेस वंशावली की जालसाज़ी नहीं कर सकते।
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.* प्रतियाँ semconv-मूल व्यूअर के लिए उन्हें मिरर करती हैं।
बाहरी हार्नेस टूल कॉल (Codex, Claude CLI)
सामग्री पेलोड के बिना tool.execution.* स्पैन उत्सर्जित करते हैं। कैप्चर की गई सामग्री एक
विश्वसनीय, केवल-लिसनर चैनल पर जाती है और उसे कभी भी सार्वजनिक डायग्नोस्टिक इवेंट
बस पर नहीं रखा जाता।
सैंपलिंग और फ्लशिंग
- ट्रेस:
diagnostics.otel.sampleRateकेवल रूट स्पैन पर एकTraceIdRatioBasedSamplerसेट करता है (0.0सभी को हटा देता है,1.0सभी को रखता है)। सेट न होने पर OpenTelemetry SDK का डिफ़ॉल्ट (हमेशा चालू) उपयोग होता है। - मेट्रिक्स:
diagnostics.otel.flushIntervalMs(न्यूनतम1000तक सीमित); सेट न होने पर SDK के आवधिक-निर्यात डिफ़ॉल्ट का उपयोग होता है। - लॉग: OTLP लॉग
logging.level(फ़ाइल लॉग स्तर) का पालन करते हैं और कंसोल फ़ॉर्मैटिंग के बजाय डायग्नोस्टिक लॉग-रिकॉर्ड रिडैक्शन पथ का उपयोग करते हैं। अधिक मात्रा वाले इंस्टॉलेशन में स्थानीय सैंपलिंग के बजाय OTLP कलेक्टर सैंपलिंग/फ़िल्टरिंग को प्राथमिकता देनी चाहिए। जब आपका प्लेटफ़ॉर्म पहले से stdout/stderr को किसी लॉग प्रोसेसर को भेजता है और आपके पास कोई OTLP लॉग कलेक्टर नहीं है, तबdiagnostics.otel.logsExporter: "stdout"सेट करें। Stdout रिकॉर्ड प्रति पंक्ति एक JSON ऑब्जेक्ट होते हैं, जिनमेंts,signal,service.name, गंभीरता, मुख्य सामग्री, रिडैक्ट किए गए एट्रिब्यूट और उपलब्ध होने पर विश्वसनीय ट्रेस फ़ील्ड होते हैं। - फ़ाइल-लॉग सहसंबंध: जब लॉग कॉल में मान्य
डायग्नोस्टिक ट्रेस संदर्भ होता है, तब JSONL फ़ाइल लॉग में शीर्ष-स्तरीय
traceId,spanId,parentSpanIdऔरtraceFlagsशामिल होते हैं, जिससे लॉग प्रोसेसर स्थानीय लॉग पंक्तियों को निर्यात किए गए स्पैन से जोड़ सकते हैं। - अनुरोध सहसंबंध: Gateway HTTP अनुरोध और WebSocket फ़्रेम
एक आंतरिक अनुरोध ट्रेस स्कोप बनाते हैं। उस स्कोप के भीतर लॉग और डायग्नोस्टिक इवेंट
डिफ़ॉल्ट रूप से अनुरोध ट्रेस प्राप्त करते हैं, जबकि एजेंट रन और मॉडल-कॉल
स्पैन चाइल्ड के रूप में बनाए जाते हैं, ताकि प्रोवाइडर के
traceparentहेडर उसी ट्रेस पर रहें। - मॉडल-कॉल सहसंबंध:
openclaw.model.callस्पैन में डिफ़ॉल्ट रूप से सुरक्षित प्रॉम्प्ट घटक आकार और, प्रोवाइडर परिणाम में उपयोग उपलब्ध होने पर, प्रति-कॉल टोकन एट्रिब्यूट शामिल होते हैं।openclaw.model.usageसमग्र लागत, संदर्भ और चैनल डैशबोर्ड के लिए रन-स्तरीय लेखांकन स्पैन बना रहता है और उत्सर्जन करने वाले रनटाइम में विश्वसनीय ट्रेस संदर्भ होने पर उसी डायग्नोस्टिक ट्रेस पर रहता है।
मॉडल-कॉल अवलोकन इकाइयाँ
प्रत्येकopenclaw.model.call स्पैन openclaw.model_call.observation_unit के माध्यम से बताता है कि उसका जीवनचक्र क्या मापता है:
request- एक अवलोकनीय मॉडल/प्रोवाइडर अनुरोध। मूल एम्बेडेड मॉडल कॉल इस इकाई का उपयोग करते हैं, और पुराने या बाहरी उत्सर्जकों के साथ संगतता के लिए निर्यातक अनुपस्थित मान कोrequestमानते हैं।turn- एक अपारदर्शी एजेंट CLI टर्न, जिसमें छिपे हुए मॉडल अनुरोध, पुनः प्रयास, टूल कार्य या पृष्ठभूमि कार्य हो सकते हैं। Claude Code CLI और Codex ऐप-सर्वर कॉल इस इकाई का उपयोग करते हैं।
chat, generate_content या text_completion) का उपयोग करते हैं, जबकि टर्न स्पैन
gen_ai.operation.name = invoke_agent का उपयोग करते हैं। दोनों
gen_ai.client.operation.duration में योगदान देते हैं, जहाँ ऑपरेशन नाम प्रत्यक्ष
अनुरोध विलंबता को पूर्ण-टर्न विलंबता से अलग रखता है। OpenClaw के OTEL मॉडल-कॉल
मेट्रिक्स में openclaw.model_call.observation_unit भी शामिल है; Prometheus
मॉडल-कॉल मेट्रिक्स समतुल्य observation_unit लेबल प्रदर्शित करते हैं।
Claude Code CLI मॉडल-कॉल निष्ठा
Claude Code CLI टर्न एक संश्लेषित, टर्न-स्तरीयopenclaw.model.call
स्पैन उत्सर्जित करते हैं। ये Anthropic HTTP अनुरोध स्पैन नहीं हैं। वे openclaw.api = claude-code, openclaw.model_call.observation_unit = turn का उपयोग करते हैं और
ऑपरेशन की पहचान gen_ai.operation.name = invoke_agent के रूप में करते हैं। वे
openclaw.transport के माध्यम से OpenClaw की CLI सीमा की पहचान करते हैं:
stdio- एक बार चलने वाली स्थानीय Claude Code प्रक्रिया।stdio-live- प्रबंधित स्थायी Claude stdio सत्र में एक टर्न।paired-node-cli- युग्मित Node को सौंपा गया एक बार का Claude Code निष्पादन।
openclaw.harness.run (openclaw.harness.id = claude-cli)
में openclaw.run होता है, जिसमें Claude का openclaw.model.call
स्पैन होता है। हार्नेस और रन स्पैन संश्लेषित OpenClaw टर्न सीमाएँ हैं, न कि
Claude Code के आंतरिक चरण। एक बार चलने वाले और प्रबंधित stdio टर्न समान
पदानुक्रम का उपयोग करते हैं; वास्तविक नए-सत्र का पुनः प्रयास उसी OpenClaw रन के भीतर
एक और मॉडल-कॉल चाइल्ड बनाता है।
स्पैन तब शुरू होता है जब OpenClaw तैयार CLI टर्न को स्वीकार करता है और केवल
उस टर्न की सफलता या विफलता के बाद समाप्त होता है। प्रबंधित सत्रों में, जब Claude परिणाम रोके रखने वाले पृष्ठभूमि एजेंट या
वर्कफ़्लो की रिपोर्ट करता है, तब अंतरिम सफल परिणाम
स्पैन समाप्त नहीं करता; ड्रेन के बाद का अंतिम परिणाम ऐसा करता है। निरस्तीकरण, टाइमआउट, प्रक्रिया विफलता,
आउटपुट/पार्स विफलता और अन्य टर्न विफलताएँ उसी स्पैन को त्रुटि के साथ समाप्त करती हैं।
Claude Code प्रति-असिस्टेंट-संदेश उपयोग की रिपोर्ट करता है और अपने टर्मिनल परिणाम पर संचयी
उपयोग की रिपोर्ट भी कर सकता है। OpenClaw उत्तर लेखांकन अंतिम असिस्टेंट संदेश का उपयोग
जारी रखता है, ताकि मौजूदा लागत अर्थविज्ञान न बदले; टर्न-स्तरीय मॉडल-कॉल स्पैन उपलब्ध होने पर
टर्मिनल संचयी उपयोग का उपयोग करता है, जिसमें कैश-पठन और कैश-निर्माण टोकन शामिल हैं।
इन CLI स्पैन के लिए बाइट और समय फ़ील्ड अवलोकनीय OpenClaw
CLI सीमा का वर्णन करते हैं:
openclaw.model_call.request_bytesएक बार चलने वाले stdin/argv पर भेजे गए प्रॉम्प्ट मान या प्रबंधित stdio JSONL उपयोगकर्ता एनवेलप का UTF-8 आकार है। यह Claude Code के छिपे हुए मॉडल अनुरोध का आकार नहीं है।openclaw.model_call.response_bytesटर्न के दौरान देखे गए Claude CLI stdout का UTF-8 आकार है। यह Anthropic HTTP प्रतिक्रिया का आकार नहीं है।openclaw.model_call.time_to_first_byte_msपहले अवलोकनीय Claude CLI stdout या stderr आउटपुट तक का समय है। यह नेटवर्क TTFB नहीं है।
captureContent फ़ील्ड सक्षम होने पर स्पैन
OpenClaw द्वारा Claude Code को भेजा गया प्रभावी प्रॉम्प्ट, OpenClaw का जोड़ा गया सिस्टम
प्रॉम्प्ट और दृश्यमान असिस्टेंट पाठ/रीज़निंग/टूल-कॉल पहचान
gen_ai.input.messages, gen_ai.output.messages और
gen_ai.system_instructions के माध्यम से निर्यात करता है। टूल आर्ग्युमेंट, अपारदर्शी थिंकिंग सिग्नेचर और
टूल परिणाम Claude असिस्टेंट एनवेलप से बाहर रखे जाते हैं। OpenClaw
Claude Code के निजी सिस्टम प्रॉम्प्ट, छिपे हुए पुनः आरंभ या
Compaction किए गए अनुरोध पेलोड, मूल आंतरिक टूल स्कीमा, कच्चे Anthropic HTTP
अनुरोध, आंतरिक पुनः प्रयास, अपस्ट्रीम अनुरोध आईडी या वास्तविक नेटवर्क TTFB तक पहुँच का दावा नहीं करता। चूँकि
Claude Code अपनी प्रभावी मूल टूल परिभाषाएँ सटीक रूप से प्रदर्शित नहीं करता,
ये स्पैन gen_ai.tool.definitions को पॉप्युलेट नहीं करते।
बाहरी Claude हार्नेस टूल स्पैन, टूल सामग्री
कैप्चर सक्षम होने पर भी, केवल मेटाडेटा बने रहते हैं। प्रत्येक मॉडल स्पैन की तरह कैप्चर की गई Claude CLI सामग्री
केवल विश्वसनीय लिसनर वाले पथ और निर्यातक की मौजूदा रिडैक्शन तथा आकार
सीमाओं का उपयोग करती है; सामग्री डिफ़ॉल्ट रूप से बंद रहती है।
निर्यात किए गए मेट्रिक्स
मॉडल उपयोग
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; टर्न अवलोकनgen_ai.operation.name = invoke_agentका उपयोग करते हैं)openclaw.model_call.duration_ms(हिस्टोग्राम, एट्रिब्यूट:openclaw.provider,openclaw.model,openclaw.api,openclaw.transport,openclaw.model_call.observation_unit, साथ ही वर्गीकृत त्रुटियों परopenclaw.errorCategoryऔरopenclaw.failureKind)openclaw.model_call.request_bytes(हिस्टोग्राम, अंतिम मॉडल अनुरोध पेलोड का UTF-8 बाइट आकार; Claude Code CLI के लिए ऊपर वर्णित अवलोकनीय प्रॉम्प्ट इनपुट/एनवेलप; कोई कच्ची पेलोड सामग्री नहीं)openclaw.model_call.response_bytes(हिस्टोग्राम, स्ट्रीम किए गए प्रतिक्रिया चंक पेलोड का UTF-8 बाइट आकार; उच्च-आवृत्ति पाठ, थिंकिंग और टूल-कॉल डेल्टा केवल वृद्धिशीलdeltaबाइट गिनते हैं; Claude Code CLI के लिए देखे गए stdout बाइट; कोई कच्ची प्रतिक्रिया सामग्री नहीं)openclaw.model_call.time_to_first_byte_ms(हिस्टोग्राम, पहले स्ट्रीम किए गए प्रतिक्रिया इवेंट से पहले बीता समय; Claude Code CLI के लिए नेटवर्क TTFB के बजाय पहला अवलोकनीय CLI आउटपुट)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)
वार्ता
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के समान; जब कोई वार्ता इवेंट अवधि की रिपोर्ट करता है, तब उत्सर्जित)openclaw.talk.audio.bytes(हिस्टोग्राम, एट्रिब्यूट:openclaw.talk.eventके समान; बाइट लंबाई की रिपोर्ट करने वाले वार्ता ऑडियो फ़्रेम इवेंट के लिए उत्सर्जित)
कतारें और सत्र
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)
सत्र सक्रियता टेलीमेट्री
जब OpenClaw उत्तर, टूल, स्थिति, ब्लॉक या ACP रनटाइम प्रगति देखता है, तब कोईprocessing सत्र अंतर्निहित सक्रियता सीमा की ओर पुराना नहीं होता। टाइपिंग कीपअलाइव को प्रगति नहीं माना जाता, इसलिए मौन मॉडल या हार्नेस का फिर भी पता लगाया जा सकता है।
OpenClaw सत्रों को उस कार्य के आधार पर वर्गीकृत करता है जिसे वह अभी भी देख सकता है:
session.long_running: सक्रिय एम्बेडेड कार्य, मॉडल कॉल या टूल कॉल अभी भी प्रगति कर रहे हैं। स्वामित्व वाली मौन मॉडल कॉल भी अंतर्निहित निरस्तीकरण सीमा से पहले लंबे समय से चल रही के रूप में रिपोर्ट होती हैं, ताकि धीमे या गैर-स्ट्रीमिंग मॉडल प्रदाता निरस्तीकरण-अवलोकनीय रहने के दौरान रुके हुए Gateway सत्रों जैसे न दिखें।session.stalled: सक्रिय कार्य मौजूद है, लेकिन सक्रिय रन ने हाल की प्रगति रिपोर्ट नहीं की है। स्वामित्व वाली मॉडल कॉल अंतर्निहित निरस्तीकरण सीमा पर या उसके बादsession.long_runningसेsession.stalledपर चली जाती हैं; स्वामी-रहित पुरानी मॉडल/टूल गतिविधि को हानिरहित दीर्घकालिक कार्य नहीं माना जाता। रुके हुए एम्बेडेड रन आरंभ में केवल-अवलोकन स्थिति में रहते हैं, फिर बिना प्रगति के निरस्तीकरण सीमा के बाद निरस्त होकर निकासी करते हैं, ताकि लेन में उनके पीछे कतारबद्ध टर्न फिर से शुरू हो सकें।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.*(इनपुट/आउटपुट/cache_read/cache_write/कुल)- डिफ़ॉल्ट रूप से
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.model_call.observation_unit(requestयाturn)openclaw.errorCategory,error.type, और त्रुटियों पर वैकल्पिकopenclaw.failureKindopenclaw.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.upstreamRequestIdHash(सीमित, हैश-आधारित) वाला स्पैन इवेंटopenclaw.provider.request; अपरिष्कृत आईडी कभी एक्सपोर्ट नहीं किए जाते OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimentalके साथ, अनुरोध स्पैन नवीनतम GenAI इन्फ़रेंस स्पैन नाम{gen_ai.operation.name} {gen_ai.request.model}का उपयोग करते हैं। टर्न स्पैनinvoke_agentका उपयोग करते हैं क्योंकि OpenClaw अपारदर्शी CLI सीमा से किसी मूल एजेंट नाम का दावा नहीं करता। दोनोंopenclaw.model.callके बजायCLIENTस्पैन प्रकार का उपयोग करते हैं।
- डिफ़ॉल्ट रूप से
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.* विशेषताएँ भी
शामिल कर सकते हैं जिन्हें आपने चुना है।
निदान इवेंट सूची
नीचे दिए गए इवेंट ऊपर के मेट्रिक्स और स्पैन का आधार बनते हैं या सीधे Plugin सदस्यता के लिए उपलब्ध हैं।run.progress और run.execution_phase केवल-प्रत्यक्ष
जीवनचक्र संकेत हैं; diagnostics-otel Plugin उन्हें
स्वतंत्र OTLP संकेतों के रूप में एक्सपोर्ट नहीं करता। इवेंट प्रकार और run.execution_phase.phase मान
योगात्मक हैं। TypeScript उपभोक्ताओं को किसी भी
यूनियन को स्थायी रूप से पूर्ण मानने के बजाय डिफ़ॉल्ट शाखाएँ रखनी चाहिए।
मॉडल उपयोग
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.progressrun.execution_phase(सार्वजनिक, सत्र-सहसंबद्ध एम्बेडेड-रनर स्टार्टअप माइलस्टोन)diagnostic.heartbeat(समग्र काउंटर: Webhook/कतार/सत्र)
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 चलाए बिना डायग्नोस्टिक्स इवेंट को Plugin या कस्टम सिंक के लिए
उपलब्ध रखें:
logging.level बढ़ाए बिना लक्षित डीबग आउटपुट के लिए डायग्नोस्टिक्स
फ़्लैग का उपयोग करें। फ़्लैग केस-इनसेंसिटिव होते हैं और वाइल्डकार्ड (telegram.* या
*) का समर्थन करते हैं:
logging.file) में जाता है और फिर भी
logging.redactSensitive द्वारा संपादित किया जाता है। पूरी मार्गदर्शिका:
डायग्नोस्टिक्स फ़्लैग।
अक्षम करें
plugins.allow में diagnostics-otel को शामिल न करें, अथवा
openclaw plugins disable diagnostics-otel चलाएँ।
संबंधित
- लॉगिंग - फ़ाइल लॉग, कंसोल आउटपुट, CLI टेलिंग और Control UI का Logs टैब
- Gateway लॉगिंग की आंतरिक कार्यप्रणाली - WS लॉग शैलियाँ, सबसिस्टम प्रीफ़िक्स और कंसोल कैप्चर
- डायग्नोस्टिक्स फ़्लैग - लक्षित डीबग-लॉग फ़्लैग
- डायग्नोस्टिक्स एक्सपोर्ट - ऑपरेटर सपोर्ट-बंडल टूल (OTEL एक्सपोर्ट से अलग)
- कॉन्फ़िगरेशन संदर्भ -
diagnostics.*फ़ील्ड का पूरा संदर्भ