OpenClaw exporteert diagnostiek via de gebundeldeDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
diagnostics-otel Plugin
met OTLP/HTTP (protobuf). Elke collector of backend die OTLP/HTTP
accepteert, werkt zonder codewijzigingen. Zie
Logging voor lokale bestandslogs en hoe je die leest.
Hoe het samenwerkt
- Diagnostische gebeurtenissen zijn gestructureerde, in-process records die worden uitgezonden door de Gateway en gebundelde plugins voor modelruns, berichtstroom, sessies, wachtrijen, en exec.
diagnostics-otelPlugin abonneert zich op die gebeurtenissen en exporteert ze als OpenTelemetry metrics, traces en logs via OTLP/HTTP.- Provider-aanroepen ontvangen een W3C
traceparent-header van OpenClaw’s vertrouwde spancontext voor modelaanroepen wanneer het providertransport aangepaste headers accepteert. Door plugins uitgezonden tracecontext wordt niet doorgegeven. - Exporters worden alleen gekoppeld wanneer zowel het diagnostische oppervlak als de Plugin zijn ingeschakeld, zodat de in-process kosten standaard bijna nul blijven.
Snel starten
protocol ondersteunt momenteel alleen http/protobuf. grpc wordt genegeerd.Geëxporteerde signalen
| Signaal | Wat erin gaat |
|---|---|
| Metrics | Tellers en histogrammen voor tokengebruik, kosten, runduur, berichtstroom, wachtrijlanes, sessiestatus, exec en geheugendruk. |
| Traces | Spans voor modelgebruik, modelaanroepen, harness-levenscyclus, tooluitvoering, exec, Webhook-/berichtverwerking, contextopbouw en toollussen. |
| Logs | Gestructureerde logging.file-records die via OTLP worden geëxporteerd wanneer diagnostics.otel.logs is ingeschakeld. |
traces, metrics en logs onafhankelijk in of uit. Alle drie staan standaard aan
wanneer diagnostics.otel.enabled true is.
Configuratiereferentie
Omgevingsvariabelen
| Variabele | Doel |
|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT | Overschrijft diagnostics.otel.endpoint. Als de waarde al /v1/traces, /v1/metrics of /v1/logs bevat, wordt die ongewijzigd gebruikt. |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT / OTEL_EXPORTER_OTLP_METRICS_ENDPOINT / OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | Signaalspecifieke endpoint-overschrijvingen die worden gebruikt wanneer de bijpassende configuratiesleutel diagnostics.otel.*Endpoint niet is ingesteld. Signaalspecifieke configuratie wint van signaalspecifieke env, die wint van het gedeelde endpoint. |
OTEL_SERVICE_NAME | Overschrijft diagnostics.otel.serviceName. |
OTEL_EXPORTER_OTLP_PROTOCOL | Overschrijft het wire-protocol (alleen http/protobuf wordt vandaag gehonoreerd). |
OTEL_SEMCONV_STABILITY_OPT_IN | Stel in op gen_ai_latest_experimental om het nieuwste experimentele GenAI-spanattribuut (gen_ai.provider.name) uit te zenden in plaats van de legacy gen_ai.system. GenAI-metrics gebruiken altijd begrensde semantische attributen met lage cardinaliteit. |
OPENCLAW_OTEL_PRELOADED | Stel in op 1 wanneer een andere preload of hostproces de globale OpenTelemetry SDK al heeft geregistreerd. De Plugin slaat dan zijn eigen NodeSDK-levenscyclus over, maar koppelt nog steeds diagnostische listeners en respecteert traces/metrics/logs. |
Privacy en inhoudsvastlegging
Ruwe model-/toolinhoud wordt standaard niet geëxporteerd. Spans dragen begrensde identifiers (kanaal, provider, model, foutcategorie, request-id’s alleen als hash) en bevatten nooit prompttekst, antwoordtekst, toolinvoer, tooluitvoer of sessiesleutels. Uitgaande modelrequests kunnen een W3Ctraceparent-header bevatten. Die header wordt
alleen gegenereerd vanuit OpenClaw-eigen diagnostische tracecontext voor de actieve modelaanroep.
Bestaande door de caller aangeleverde traceparent-headers worden vervangen, zodat plugins of
aangepaste provideropties cross-service trace-afkomst niet kunnen spoofen.
Stel diagnostics.otel.captureContent.* alleen in op true wanneer je collector en
retentiebeleid zijn goedgekeurd voor prompt-, antwoord-, tool- of systeemprompttekst.
Elke subsleutel is onafhankelijk opt-in:
inputMessages— inhoud van gebruikersprompt.outputMessages— inhoud van modelantwoord.toolInputs— payloads van toolargumenten.toolOutputs— payloads van toolresultaten.systemPrompt— samengestelde systeem-/developerprompt.
openclaw.content.*-attributen alleen voor die klasse.
Sampling en flushen
- Traces:
diagnostics.otel.sampleRate(alleen root-span,0.0dropt alles,1.0behoudt alles). - Metrics:
diagnostics.otel.flushIntervalMs(minimum1000). - Logs: OTLP-logs respecteren
logging.level(bestandslogniveau). Ze gebruiken het redactiepad voor diagnostische logrecords, niet console-opmaak. Installaties met hoog volume moeten liever OTLP collector-sampling/-filtering gebruiken dan lokale sampling. - Bestandslogcorrelatie: JSONL-bestandslogs bevatten op topniveau
traceId,spanId,parentSpanIdentraceFlagswanneer de logaanroep een geldige diagnostische tracecontext draagt, waardoor logprocessors lokale logregels kunnen koppelen aan geëxporteerde spans. - Requestcorrelatie: Gateway-HTTP-requests en WebSocket-frames maken een
interne request-tracescope. Logs en diagnostische gebeurtenissen binnen die scope
erven standaard de requesttrace, terwijl agentrun- en modelaanroep-spans als kinderen worden
gemaakt, zodat provider-
traceparent-headers op dezelfde trace blijven.
Geëxporteerde metrics
Modelgebruik
openclaw.tokens(counter, attrs:openclaw.token,openclaw.channel,openclaw.provider,openclaw.model,openclaw.agent)openclaw.cost.usd(counter, attrs:openclaw.channel,openclaw.provider,openclaw.model)openclaw.run.duration_ms(histogram, attrs:openclaw.channel,openclaw.provider,openclaw.model)openclaw.context.tokens(histogram, attrs:openclaw.context,openclaw.channel,openclaw.provider,openclaw.model)gen_ai.client.token.usage(histogram, GenAI semantic-conventions metric, attrs:gen_ai.token.type=input/output,gen_ai.provider.name,gen_ai.operation.name,gen_ai.request.model)gen_ai.client.operation.duration(histogram, seconden, GenAI semantic-conventions metric, attrs:gen_ai.provider.name,gen_ai.operation.name,gen_ai.request.model, optioneelerror.type)openclaw.model_call.duration_ms(histogram, attrs:openclaw.provider,openclaw.model,openclaw.api,openclaw.transport, plusopenclaw.errorCategoryenopenclaw.failureKindbij geclassificeerde fouten)openclaw.model_call.request_bytes(histogram, UTF-8-bytegrootte van de uiteindelijke modelrequestpayload; geen ruwe payloadinhoud)openclaw.model_call.response_bytes(histogram, UTF-8-bytegrootte van gestreamde modelantwoordgebeurtenissen; geen ruwe antwoordinhoud)openclaw.model_call.time_to_first_byte_ms(histogram, verstreken tijd vóór de eerste gestreamde antwoordgebeurtenis)
Berichtstroom
openclaw.webhook.received(counter, attrs:openclaw.channel,openclaw.webhook)openclaw.webhook.error(counter, attrs:openclaw.channel,openclaw.webhook)openclaw.webhook.duration_ms(histogram, attrs:openclaw.channel,openclaw.webhook)openclaw.message.queued(counter, attrs:openclaw.channel,openclaw.source)openclaw.message.processed(counter, attrs:openclaw.channel,openclaw.outcome)openclaw.message.duration_ms(histogram, attrs:openclaw.channel,openclaw.outcome)openclaw.message.delivery.started(counter, attrs:openclaw.channel,openclaw.delivery.kind)openclaw.message.delivery.duration_ms(histogram, attrs:openclaw.channel,openclaw.delivery.kind,openclaw.outcome,openclaw.errorCategory)
Wachtrijen en sessies
openclaw.queue.lane.enqueue(counter, attrs:openclaw.lane)openclaw.queue.lane.dequeue(counter, attrs:openclaw.lane)openclaw.queue.depth(histogram, attrs:openclaw.laneofopenclaw.channel=heartbeat)openclaw.queue.wait_ms(histogram, attrs:openclaw.lane)openclaw.session.state(counter, attrs:openclaw.state,openclaw.reason)openclaw.session.stuck(counter, attrs:openclaw.state)openclaw.session.stuck_age_ms(histogram, attrs:openclaw.state)openclaw.run.attempt(counter, attrs:openclaw.attempt)
Harness-levenscyclus
openclaw.harness.duration_ms(histogram, attrs:openclaw.harness.id,openclaw.harness.plugin,openclaw.outcome,openclaw.harness.phasebij fouten)
Exec
openclaw.exec.duration_ms(histogram, attrs:openclaw.exec.target,openclaw.exec.mode,openclaw.outcome,openclaw.failureKind)
Diagnostiek-internals (geheugen en toollus)
openclaw.memory.heap_used_bytes(histogram, attrs:openclaw.memory.kind)openclaw.memory.rss_bytes(histogram)openclaw.memory.pressure(counter, attrs:openclaw.memory.level)openclaw.tool.loop.iterations(counter, attrs:openclaw.toolName,openclaw.outcome)openclaw.tool.loop.duration_ms(histogram, attrs:openclaw.toolName,openclaw.outcome)
Geëxporteerde spans
openclaw.model.usageopenclaw.channel,openclaw.provider,openclaw.modelopenclaw.tokens.*(invoer/uitvoer/cache_read/cache_write/totaal)- standaard
gen_ai.system, ofgen_ai.provider.namewanneer de nieuwste semantische conventies van GenAI zijn ingeschakeld 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- standaard
gen_ai.system, ofgen_ai.provider.namewanneer de nieuwste semantische conventies van GenAI zijn ingeschakeld gen_ai.request.model,gen_ai.operation.name,openclaw.provider,openclaw.model,openclaw.api,openclaw.transportopenclaw.errorCategoryen optioneelopenclaw.failureKindbij foutenopenclaw.model_call.request_bytes,openclaw.model_call.response_bytes,openclaw.model_call.time_to_first_byte_msopenclaw.provider.request_id_hash(begrensde SHA-gebaseerde hash van de request-id van de upstream-provider; ruwe id’s worden niet geëxporteerd)
- standaard
openclaw.harness.runopenclaw.harness.id,openclaw.harness.plugin,openclaw.outcome,openclaw.provider,openclaw.model,openclaw.channel- Bij voltooiing:
openclaw.harness.result_classification,openclaw.harness.yield_detected,openclaw.harness.items.started,openclaw.harness.items.completed,openclaw.harness.items.active - Bij fout:
openclaw.harness.phase,openclaw.errorCategory, optioneelopenclaw.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.chatId
openclaw.webhook.erroropenclaw.channel,openclaw.webhook,openclaw.chatId,openclaw.error
openclaw.message.processedopenclaw.channel,openclaw.outcome,openclaw.chatId,openclaw.messageId,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(geen prompt-, geschiedenis-, reactie- of sessiesleutelinhoud)
openclaw.tool.loopopenclaw.toolName,openclaw.outcome,openclaw.iterations,openclaw.errorCategory(geen loopberichten, parameters of tooluitvoer)
openclaw.memory.pressureopenclaw.memory.level,openclaw.memory.heap_used_bytes,openclaw.memory.rss_bytes
openclaw.content.*-attributen bevatten voor de specifieke
inhoudsklassen waarvoor je hebt gekozen.
Catalogus met diagnostische gebeurtenissen
De onderstaande gebeurtenissen ondersteunen de bovenstaande metrieken en spans. Plugins kunnen zich er ook direct op abonneren zonder OTLP-export. Modelgebruikmodel.usage— tokens, kosten, duur, context, provider/model/kanaal, sessie-id’s.usageis provider-/turnboekhouding voor kosten en telemetrie;context.usedis de huidige prompt-/contextsnapshot en kan lager zijn dan providerusage.totalwanneer gecachte invoer of tool-loop-aanroepen betrokken zijn.
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.stuckrun.attemptdiagnostic.heartbeat(geaggregeerde tellers: webhooks/wachtrij/sessie)
harness.run.started/harness.run.completed/harness.run.error— levenscyclus per run voor de agent-harness. BevatharnessId, optioneelpluginId, provider/model/kanaal en run-id. Voltooiing voegtdurationMs,outcome, optioneelresultClassification,yieldDetected, enitemLifecycle-aantallen toe. Fouten voegenphase(prepare/start/send/resolve/cleanup),errorCategoryen optioneelcleanupFailedtoe.
exec.process.completed— terminale uitkomst, duur, doel, modus, exitcode en soort storing. Commandotekst en werkmappen worden niet opgenomen.
Zonder exporteur
Je kunt diagnostische gebeurtenissen beschikbaar houden voor plugins of aangepaste sinks zonderdiagnostics-otel uit te voeren:
logging.level te verhogen.
Vlaggen zijn hoofdletterongevoelig en ondersteunen jokertekens (bijv. telegram.* of
*):
logging.file) en wordt nog steeds
geredigeerd door logging.redactSensitive. Volledige handleiding:
Diagnostische vlaggen.
Uitschakelen
diagnostics-otel ook buiten plugins.allow laten, of
openclaw plugins disable diagnostics-otel uitvoeren.
Gerelateerd
- Logregistratie — bestandslogs, console-uitvoer, CLI-tailing en het tabblad Logs in de Control UI
- Interne logregistratie van Gateway — WS-logstijlen, subsysteemprefixen en consolevastlegging
- Diagnostische vlaggen — gerichte debuglogvlaggen
- Diagnostische export — supportbundeltool voor operators (los van OTEL-export)
- Configuratiereferentie — volledige veldreferentie voor
diagnostics.*