Gateway
OpenTelemetry निर्यात
OpenClaw आधिकारिक 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 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।
निर्यात किए गए सिग्नल
| सिग्नल | इसमें क्या शामिल होता है |
|---|---|
| मेट्रिक्स | टोकन उपयोग, लागत, रन अवधि, फ़ेलओवर, स्किल उपयोग, संदेश प्रवाह, Talk इवेंट, कतार लेन, सत्र स्थिति/पुनर्प्राप्ति, टूल निष्पादन, exec, मेमोरी, जीवंतता और निर्यातक स्वास्थ्य के लिए काउंटर/हिस्टोग्राम। |
| ट्रेस | मॉडल उपयोग, मॉडल कॉल, हार्नेस जीवनचक्र, स्किल उपयोग, टूल निष्पादन, exec, webhook/संदेश प्रोसेसिंग, संदर्भ संयोजन और टूल लूप के लिए स्पैन। |
| लॉग | जब diagnostics.otel.logs सक्षम हो, तब OTLP या stdout JSONL पर निर्यात किए गए संरचित logging.file रिकॉर्ड; जब तक सामग्री कैप्चर स्पष्ट रूप से सक्षम न हो, लॉग बॉडी रोक दी जाती हैं। |
traces, metrics और logs को स्वतंत्र रूप से टॉगल करें। जब diagnostics.otel.enabled true होता है, तब ट्रेस और मेट्रिक्स
डिफ़ॉल्ट रूप से चालू होते हैं; लॉग डिफ़ॉल्ट रूप से बंद होते हैं
और केवल तभी निर्यात होते हैं, जब diagnostics.otel.logs को स्पष्ट रूप से true किया गया हो। लॉग निर्यात
का डिफ़ॉल्ट OTLP है; stdout पर JSONL के लिए diagnostics.otel.logsExporter को 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 disables OTLP export serviceName: "openclaw-gateway", // unset falls back to OTEL_SERVICE_NAME, then "openclaw" 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 के लिए फ़ॉलबैक। |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT / OTEL_EXPORTER_OTLP_METRICS_ENDPOINT / OTEL_EXPORTER_OTLP_LOGS_ENDPOINT |
मेल खाने वाली diagnostics.otel.*Endpoint कॉन्फ़िगरेशन कुंजी सेट न होने पर उपयोग किए जाने वाले सिग्नल-विशिष्ट एंडपॉइंट फ़ॉलबैक। सिग्नल-विशिष्ट कॉन्फ़िगरेशन की प्राथमिकता सिग्नल-विशिष्ट पर्यावरण चर से अधिक होती है और उसकी प्राथमिकता साझा एंडपॉइंट से अधिक होती है। |
OTEL_SERVICE_NAME |
कॉन्फ़िगरेशन कुंजी सेट न होने पर diagnostics.otel.serviceName के लिए फ़ॉलबैक। डिफ़ॉल्ट सेवा नाम openclaw है। |
OTEL_EXPORTER_OTLP_PROTOCOL |
diagnostics.otel.protocol सेट न होने पर वायर प्रोटोकॉल के लिए फ़ॉलबैक। केवल http/protobuf निर्यात सक्षम करता है। |
OTEL_SEMCONV_STABILITY_OPT_IN |
नवीनतम GenAI इन्फ़रेंस स्पैन स्वरूप उत्सर्जित करने के लिए gen_ai_latest_experimental पर सेट करें: {gen_ai.operation.name} {gen_ai.request.model} स्पैन नाम, CLIENT स्पैन प्रकार और लेगेसी gen_ai.system के बजाय gen_ai.provider.name। GenAI मेट्रिक्स किसी भी स्थिति में सीमित, कम-कार्डिनैलिटी विशेषताओं का उपयोग करते हैं। |
OPENCLAW_OTEL_PRELOADED |
जब किसी अन्य प्रीलोड या होस्ट प्रक्रिया ने पहले ही ग्लोबल OpenTelemetry SDK पंजीकृत कर दिया हो, तब 1 पर सेट करें। इसके बाद plugin अपना NodeSDK जीवनचक्र छोड़ देता है, लेकिन फिर भी डायग्नोस्टिक लिसनर जोड़ता है और traces/metrics/logs का पालन करता है। |
गोपनीयता और सामग्री कैप्चर
कच्ची मॉडल/टूल सामग्री डिफ़ॉल्ट रूप से निर्यात नहीं की जाती। स्पैन में सीमित
पहचानकर्ता (चैनल, प्रोवाइडर, मॉडल, त्रुटि श्रेणी, केवल-हैश अनुरोध आईडी,
टूल स्रोत, टूल स्वामी, स्किल नाम/स्रोत) होते हैं और उनमें कभी भी प्रॉम्प्ट टेक्स्ट,
प्रतिक्रिया टेक्स्ट, टूल इनपुट, टूल आउटपुट, स्किल फ़ाइल पथ या सत्र कुंजियाँ शामिल नहीं होतीं।
स्कोप किए गए एजेंट सत्र कुंजियों जैसे दिखने वाले मान (उदाहरण के लिए
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.* विशेषताएँ मिलती हैं।
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 ऐप-सर्वर कॉल इस इकाई का उपयोग करते हैं।
दोनों इकाइयाँ मॉडल-कॉल स्पैन बनी रहती हैं, ताकि ट्रेस बैकएंड मॉडल इनपुट,
आउटपुट, उपयोग और पदानुक्रम प्रदर्शित कर सकें। अनुरोध स्पैन API से प्राप्त GenAI ऑपरेशन
(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 निष्पादन।
Claude CLI डायग्नोस्टिक्स केवल तभी इंस्टैंशिएट होते हैं, जब प्रक्रिया डायग्नोस्टिक डिस्पैचर सक्षम हो और कोई आंतरिक या विश्वसनीय इवेंट लिसनर संलग्न हो। कोई ऑब्ज़र्वेबिलिटी Plugin या अन्य लिसनर सक्रिय न होने पर Claude CLI टर्न संश्लेषित ट्रेस पदानुक्रम, सामग्री बफ़र और डायग्नोस्टिक स्ट्रीम-बाइट लेखांकन छोड़ देते हैं। सामग्री कैप्चर सक्षम होने पर प्रॉम्प्ट और सिस्टम-प्रॉम्प्ट फ़ील्ड प्रत्येक अधिकतम 128 KiB तक सीमित होते हैं; असिस्टेंट आउटपुट अधिकतम 200 एनवेलप में कुल 128 KiB तक सीमित होता है, जिसमें अंतिम दृश्यमान फ़ॉलबैक प्रतिक्रिया के लिए 16 KiB और एक आइटम आरक्षित रहता है। सीमा पूरी होने पर एक मार्कर ट्रंकेशन दर्ज करता है।
OpenClaw, Claude CLI टर्न को वही स्वामित्व पदानुक्रम देता है जो अन्य
एजेंट रनटाइम उपयोग करते हैं: 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
exec.process.completed- टर्मिनल परिणाम, अवधि, लक्ष्य, मोड, एग्ज़िट कोड और विफलता का प्रकार। कमांड टेक्स्ट और कार्यशील डायरेक्टरियाँ शामिल नहीं हैं।exec.approval.followup_suppressed- सत्र के दोबारा जुड़ने के बाद पुराने अनुमोदन का फ़ॉलो-अप हटा दिया गया। इसमेंapprovalId,reason(session_rebound),phase(direct_deliveryयाgateway_preflight), और डिस्पैचर टाइमस्टैम्प शामिल हैं। सत्र कुंजियाँ, रूट और कमांड टेक्स्ट शामिल नहीं हैं।
एक्सपोर्टर के बिना
diagnostics-otel चलाए बिना डायग्नोस्टिक्स इवेंट को Plugin या कस्टम सिंक के लिए
उपलब्ध रखें:
{ diagnostics: { enabled: true },}logging.level बढ़ाए बिना लक्षित डीबग आउटपुट के लिए डायग्नोस्टिक्स
फ़्लैग का उपयोग करें। फ़्लैग केस-इनसेंसिटिव होते हैं और वाइल्डकार्ड (telegram.* या
*) का समर्थन करते हैं:
{ diagnostics: { flags: ["telegram.http"] },}या एकबारगी एनवायरनमेंट ओवरराइड के रूप में:
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gatewayफ़्लैग आउटपुट मानक लॉग फ़ाइल (logging.file) में जाता है और फिर भी
logging.redactSensitive द्वारा संपादित किया जाता है। पूरी मार्गदर्शिका:
डायग्नोस्टिक्स फ़्लैग।
अक्षम करें
{ diagnostics: { otel: { enabled: false } },}या plugins.allow में diagnostics-otel को शामिल न करें, अथवा
openclaw plugins disable diagnostics-otel चलाएँ।
संबंधित
- लॉगिंग - फ़ाइल लॉग, कंसोल आउटपुट, CLI टेलिंग और Control UI का Logs टैब
- Gateway लॉगिंग की आंतरिक कार्यप्रणाली - WS लॉग शैलियाँ, सबसिस्टम प्रीफ़िक्स और कंसोल कैप्चर
- डायग्नोस्टिक्स फ़्लैग - लक्षित डीबग-लॉग फ़्लैग
- डायग्नोस्टिक्स एक्सपोर्ट - ऑपरेटर सपोर्ट-बंडल टूल (OTEL एक्सपोर्ट से अलग)
- कॉन्फ़िगरेशन संदर्भ -
diagnostics.*फ़ील्ड का पूरा संदर्भ