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 दोनों सक्षम हों, इसलिए डिफ़ॉल्ट रूप से इन-प्रोसेस लागत लगभग शून्य रहती है।

त्वरित शुरुआत

bash
openclaw plugins install clawhub:@openclaw/diagnostics-otel
json5
{  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 सेट करें।

कॉन्फ़िगरेशन संदर्भ

json5
{  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.usage
    • openclaw.channel, openclaw.provider, openclaw.model
    • openclaw.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.run
    • openclaw.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.failureKind
    • openclaw.model_call.request_bytes, openclaw.model_call.response_bytes, openclaw.model_call.time_to_first_byte_ms
    • openclaw.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.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
    • त्रुटि पर: openclaw.harness.phase, openclaw.errorCategory, वैकल्पिक openclaw.harness.cleanup_failed
  • openclaw.tool.execution
    • gen_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.exec
    • openclaw.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.processed
    • openclaw.channel, openclaw.webhook
  • openclaw.webhook.error
    • openclaw.channel, openclaw.webhook, openclaw.error
  • openclaw.message.processed
    • 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 (कोई प्रॉम्प्ट, इतिहास, प्रतिक्रिया या सत्र-कुंजी सामग्री नहीं)
  • openclaw.tool.loop
    • openclaw.toolName, openclaw.loop.level, openclaw.loop.action, openclaw.loop.detector, openclaw.loop.count, वैकल्पिक openclaw.loop.paired_tool (कोई लूप संदेश, पैरामीटर या टूल आउटपुट नहीं)
  • openclaw.memory.pressure
    • openclaw.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.error
  • message.queued / message.processed
  • message.delivery.started / message.delivery.completed / message.delivery.error

कतार और सत्र

  • queue.lane.enqueue / queue.lane.dequeue
  • session.state / session.long_running / session.stalled / session.stuck
  • run.attempt / run.progress
  • run.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 या कस्टम सिंक के लिए उपलब्ध रखें:

json5
{  diagnostics: { enabled: true },}

logging.level बढ़ाए बिना लक्षित डीबग आउटपुट के लिए डायग्नोस्टिक्स फ़्लैग का उपयोग करें। फ़्लैग केस-इनसेंसिटिव होते हैं और वाइल्डकार्ड (telegram.* या *) का समर्थन करते हैं:

json5
{  diagnostics: { flags: ["telegram.http"] },}

या एकबारगी एनवायरनमेंट ओवरराइड के रूप में:

bash
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gateway

फ़्लैग आउटपुट मानक लॉग फ़ाइल (logging.file) में जाता है और फिर भी logging.redactSensitive द्वारा संपादित किया जाता है। पूरी मार्गदर्शिका: डायग्नोस्टिक्स फ़्लैग

अक्षम करें

json5
{  diagnostics: { otel: { enabled: false } },}

या plugins.allow में diagnostics-otel को शामिल न करें, अथवा openclaw plugins disable diagnostics-otel चलाएँ।

संबंधित

Was this useful?
On this page

On this page