Gateway
OpenTelemetry-export
OpenClaw exporteert diagnostische gegevens via de officiële Plugin diagnostics-otel
met OTLP/HTTP (protobuf). Logboeken kunnen ook als JSONL naar stdout worden
geschreven voor logpijplijnen van containers en sandboxes. Elke collector of backend
die OTLP/HTTP accepteert, werkt zonder codewijzigingen. Zie
Logboekregistratie voor lokale logbestanden.
- Diagnostische gebeurtenissen zijn gestructureerde records binnen het proces die door de Gateway en meegeleverde plugins worden uitgezonden voor modeluitvoeringen, berichtstromen, sessies, wachtrijen en exec.
diagnostics-otelabonneert zich op deze gebeurtenissen en exporteert ze als OpenTelemetry-metrieken, traces en logboeken via OTLP/HTTP, en kan logboekrecords spiegelen naar stdout als JSONL.- Provideraanroepen ontvangen een W3C-
traceparent-header uit de context van de vertrouwde modelaanroepspan van OpenClaw wanneer het providertransport aangepaste headers accepteert. Door plugins uitgezonden tracecontext wordt niet doorgegeven. - Exporters worden alleen gekoppeld wanneer zowel de diagnostische interface als de Plugin zijn ingeschakeld, waardoor de kosten binnen het proces standaard vrijwel nul blijven.
Snel aan de slag
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, }, },}Of schakel de Plugin in via de CLI: openclaw plugins enable diagnostics-otel.
Geëxporteerde signalen
| Signaal | Inhoud |
|---|---|
| Metrieken | Tellers/histogrammen voor tokengebruik, kosten, uitvoeringsduur, failover, gebruik van Skills, berichtstroom, Talk-gebeurtenissen, wachtrijbanen, sessiestatus/-herstel, tooluitvoering, exec, geheugen, beschikbaarheid en status van de exporter. |
| Traces | Spans voor modelgebruik, modelaanroepen, levenscyclus van de harness, gebruik van Skills, tooluitvoering, exec, verwerking van Webhooks/berichten, contextopbouw en toollussen. |
| Logboeken | Gestructureerde logging.file-records die via OTLP of als JSONL naar stdout worden geëxporteerd wanneer diagnostics.otel.logs is ingeschakeld; logboekinhoud wordt weggelaten tenzij inhoudsregistratie expliciet is ingeschakeld. |
Schakel traces, metrics en logs onafhankelijk van elkaar in of uit. Traces en
metrieken zijn standaard ingeschakeld wanneer diagnostics.otel.enabled waar is;
logboeken zijn standaard uitgeschakeld en worden alleen geëxporteerd wanneer
diagnostics.otel.logs expliciet true is. Logboekexport gebruikt standaard OTLP;
stel diagnostics.otel.logsExporter in op stdout voor JSONL op stdout, of op
both voor beide.
Configuratiereferentie
{ 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 schakelt OTLP-export uit serviceName: "openclaw-gateway", // indien niet ingesteld, wordt teruggevallen op OTEL_SERVICE_NAME en daarna op "openclaw" headers: { "x-collector-token": "..." }, traces: true, metrics: true, logs: true, logsExporter: "otlp", // otlp | stdout | both sampleRate: 0.2, // sampler voor hoofdspans, 0.0..1.0 flushIntervalMs: 60000, // interval voor metriekexport (minimaal 1000 ms) captureContent: { enabled: false, inputMessages: false, outputMessages: false, toolInputs: false, toolOutputs: false, systemPrompt: false, toolDefinitions: false, }, }, },}Omgevingsvariabelen
| Variabele | Doel |
|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
Terugvalwaarde voor diagnostics.otel.endpoint wanneer de configuratiesleutel niet is ingesteld. |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT / OTEL_EXPORTER_OTLP_METRICS_ENDPOINT / OTEL_EXPORTER_OTLP_LOGS_ENDPOINT |
Signaalspecifieke terugval-eindpunten die worden gebruikt wanneer de bijbehorende configuratiesleutel diagnostics.otel.*Endpoint niet is ingesteld. Signaalspecifieke configuratie heeft voorrang op signaalspecifieke omgevingsvariabelen, die op hun beurt voorrang hebben op het gedeelde eindpunt. |
OTEL_SERVICE_NAME |
Terugvalwaarde voor diagnostics.otel.serviceName wanneer de configuratiesleutel niet is ingesteld. De standaardservicenaam is openclaw. |
OTEL_EXPORTER_OTLP_PROTOCOL |
Terugvalwaarde voor het overdrachtsprotocol wanneer diagnostics.otel.protocol niet is ingesteld. Alleen http/protobuf schakelt export in. |
OTEL_SEMCONV_STABILITY_OPT_IN |
Stel in op gen_ai_latest_experimental om de nieuwste vorm van GenAI-inferentiespans uit te zenden: spannamen {gen_ai.operation.name} {gen_ai.request.model}, spantype CLIENT en gen_ai.provider.name in plaats van het verouderde gen_ai.system. GenAI-metrieken gebruiken altijd begrensde attributen met een lage cardinaliteit. |
OPENCLAW_OTEL_PRELOADED |
Stel in op 1 wanneer een andere preload of een ander 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 inhoudsregistratie
Onbewerkte model-/toolinhoud wordt standaard niet geëxporteerd. Spans bevatten
begrensde identificatoren (kanaal, provider, model, foutcategorie, uitsluitend gehashte
aanvraag-id's, toolbron, tooleigenaar, naam/bron van Skills) en bevatten nooit
prompttekst, antwoordtekst, toolinvoer, tooluitvoer, bestandspaden van Skills of
sessiesleutels. Waarden die eruitzien als sessiesleutels met een agentbereik
(bijvoorbeeld beginnend met agent:) worden in attributen met lage cardinaliteit
vervangen door unknown. OTLP-logboekrecords behouden standaard de ernst, logger,
codelocatie, vertrouwde tracecontext en opgeschoonde attributen; de onbewerkte inhoud
van het logboekbericht wordt alleen geëxporteerd wanneer
diagnostics.otel.captureContent de Booleaanse waarde true heeft. Gedetailleerde
subsleutels onder captureContent.* schakelen logboekinhoud nooit in. Talk-metrieken
exporteren alleen begrensde gebeurtenismetadata (modus, transport, provider,
gebeurtenistype) — geen transcripties, audiopayloads, sessie-id's, beurt-id's,
oproep-id's, ruimte-id's of overdrachtstokens.
Uitgaande modelaanvragen kunnen een W3C-traceparent-header bevatten die uitsluitend
wordt gegenereerd vanuit tracecontext voor diagnostiek die eigendom is van OpenClaw
voor de actieve modelaanroep. Bestaande door de aanroeper opgegeven
traceparent-headers worden vervangen, zodat plugins of aangepaste provideropties
geen traceafstamming tussen services kunnen vervalsen.
Stel diagnostics.otel.captureContent.* alleen in op true wanneer uw collector
en bewaarbeleid zijn goedgekeurd voor tekst uit prompts, antwoorden, tools of
systeemprompts. Elke subsleutel werkt onafhankelijk:
inputMessages— inhoud van gebruikersprompts.outputMessages— inhoud van modelantwoorden.toolInputs— payloads met toolargumenten.toolOutputs— payloads met toolresultaten.systemPrompt— samengestelde systeem-/ontwikkelaarsprompt.toolDefinitions— namen, beschrijvingen en schema's van modeltools.
Wanneer een subsleutel is ingeschakeld, krijgen model- en toolspans alleen voor die
klasse begrensde, geredigeerde openclaw.content.*-attributen.
Inhoud van toolInputs/toolOutputs wordt vastgelegd voor tooluitvoeringen van de
ingebouwde agentruntime (openclaw.content.tool_input en
gen_ai.tool.call.arguments bij voltooide spans/foutspans;
openclaw.content.tool_output en gen_ai.tool.call.result bij voltooide
spans). De namen openclaw.content.* blijven de stabiele OpenClaw-attribuutnamen;
de kopieën van gen_ai.tool.call.* spiegelen deze voor viewers die semconv
rechtstreeks ondersteunen. Toolaanroepen van externe harnesses (Codex, Claude CLI)
zenden tool.execution.*-spans uit zonder inhoudspayloads. Vastgelegde inhoud wordt
via een vertrouwd kanaal uitsluitend voor listeners verzonden en wordt nooit op de
openbare bus voor diagnostische gebeurtenissen geplaatst.
Sampling en flushen
- Traces:
diagnostics.otel.sampleRatestelt alleen voor de root-span eenTraceIdRatioBasedSamplerin (0.0laat alles vallen,1.0behoudt alles). Indien niet ingesteld, wordt de standaardwaarde van de OpenTelemetry SDK gebruikt (altijd ingeschakeld). - Metrieken:
diagnostics.otel.flushIntervalMs(begrensd op een minimum van1000); indien niet ingesteld, wordt de standaardwaarde van de SDK voor periodieke export gebruikt. - Logboeken: OTLP-logboeken respecteren
logging.level(logniveau van het bestand) en gebruiken het redactiepad voor diagnostische logrecords, niet de consoleopmaak. Installaties met grote volumes kunnen beter sampling/filtering van de OTLP-collector gebruiken dan lokale sampling. Steldiagnostics.otel.logsExporter: "stdout"in wanneer uw platform stdout/stderr al naar een logverwerker verzendt en u geen OTLP-logcollector hebt. Stdout-records bestaan uit één JSON-object per regel metts,signal,service.name, ernstniveau, inhoud, geredigeerde attributen en vertrouwde tracevelden indien beschikbaar. - Correlatie van bestandslogboeken: JSONL-bestandslogboeken bevatten
traceId,spanId,parentSpanIdentraceFlagsop het hoogste niveau wanneer de logaanroep een geldige diagnostische tracecontext bevat, zodat logverwerkers lokale logregels aan geëxporteerde spans kunnen koppelen. - Aanvraagcorrelatie: HTTP-aanvragen en WebSocket-frames van de Gateway maken
een intern tracebereik voor de aanvraag. Logboeken en diagnostische gebeurtenissen binnen dat
bereik nemen standaard de aanvraagtrace over, terwijl spans voor agentruns en modelaanroepen
als onderliggende spans worden gemaakt, zodat
traceparent-headers van providers binnen dezelfde trace blijven. - Correlatie van modelaanroepen:
openclaw.model.call-spans bevatten standaard veilige groottes van promptcomponenten en tokenattributen per aanroep wanneer het providerresultaat gebruiksgegevens beschikbaar stelt.openclaw.model.usageblijft de span voor boekhouding op runniveau voor geaggregeerde kosten-, context- en kanaaldashboards en blijft binnen dezelfde diagnostische trace wanneer de emitterende runtime over een vertrouwde tracecontext beschikt.
Geëxporteerde metrieken
Modelgebruik
openclaw.tokens(teller, attrs:openclaw.token,openclaw.channel,openclaw.provider,openclaw.model,openclaw.agent)openclaw.cost.usd(teller, 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, metriek volgens de semantische GenAI-conventies, 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, metriek volgens de semantische GenAI-conventies, 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 payload van de modelaanvraag; geen onbewerkte payloadinhoud)openclaw.model_call.response_bytes(histogram, UTF-8-bytegrootte van payloads van gestreamde responsfragmenten; frequente tekst-, redeneer- en toolaanroepdelta's tellen alleen incrementeledelta-bytes; geen onbewerkte responsinhoud)openclaw.model_call.time_to_first_byte_ms(histogram, verstreken tijd vóór de eerste gestreamde responsgebeurtenis)openclaw.model.failover(teller, attrs:openclaw.provider,openclaw.model,openclaw.failover.to_provider,openclaw.failover.to_model,openclaw.failover.reason,openclaw.failover.suspended,openclaw.lane)openclaw.skill.used(teller, attrs:openclaw.skill.name,openclaw.skill.source,openclaw.skill.activation, optioneelopenclaw.agent, optioneelopenclaw.toolName)
Berichtenstroom
openclaw.webhook.received(teller, attrs:openclaw.channel,openclaw.webhook)openclaw.webhook.error(teller, attrs:openclaw.channel,openclaw.webhook)openclaw.webhook.duration_ms(histogram, attrs:openclaw.channel,openclaw.webhook)openclaw.message.queued(teller, attrs:openclaw.channel,openclaw.source)openclaw.message.received(teller, attrs:openclaw.channel,openclaw.source)openclaw.message.dispatch.started(teller, attrs:openclaw.channel,openclaw.source)openclaw.message.dispatch.completed(teller, attrs:openclaw.channel,openclaw.outcome,openclaw.reason,openclaw.source)openclaw.message.dispatch.duration_ms(histogram, attrs:openclaw.channel,openclaw.outcome,openclaw.reason,openclaw.source)openclaw.message.processed(teller, attrs:openclaw.channel,openclaw.outcome)openclaw.message.duration_ms(histogram, attrs:openclaw.channel,openclaw.outcome)openclaw.message.delivery.started(teller, attrs:openclaw.channel,openclaw.delivery.kind)openclaw.message.delivery.duration_ms(histogram, attrs:openclaw.channel,openclaw.delivery.kind,openclaw.outcome,openclaw.errorCategory)
Spraak
openclaw.talk.event(teller, attrs:openclaw.talk.event_type,openclaw.talk.mode,openclaw.talk.transport,openclaw.talk.brain,openclaw.talk.provider)openclaw.talk.event.duration_ms(histogram, attrs: hetzelfde alsopenclaw.talk.event; uitgezonden wanneer een spraakgebeurtenis een duur rapporteert)openclaw.talk.audio.bytes(histogram, attrs: hetzelfde alsopenclaw.talk.event; uitgezonden voor gebeurtenissen van spraakaudioframes die een bytelengte rapporteren)
Wachtrijen en sessies
openclaw.queue.lane.enqueue(teller, attrs:openclaw.lane)openclaw.queue.lane.dequeue(teller, attrs:openclaw.lane)openclaw.queue.depth(histogram, attrs:openclaw.laneofopenclaw.channel=heartbeat)openclaw.queue.wait_ms(histogram, attrs:openclaw.lane)openclaw.session.state(teller, attrs:openclaw.state,openclaw.reason)openclaw.session.stuck(teller, attrs:openclaw.state; uitgezonden voor herstelbare verouderde sessieboekhouding)openclaw.session.stuck_age_ms(histogram, attrs:openclaw.state; uitgezonden voor herstelbare verouderde sessieboekhouding)openclaw.session.turn.created(teller, attrs:openclaw.agent,openclaw.channel,openclaw.trigger)openclaw.session.recovery.requested(teller, attrs:openclaw.state,openclaw.action,openclaw.active_work_kind,openclaw.reason)openclaw.session.recovery.completed(teller, attrs:openclaw.state,openclaw.action,openclaw.status,openclaw.active_work_kind,openclaw.reason)openclaw.session.recovery.age_ms(histogram, attrs: hetzelfde als de bijbehorende herstelteller)openclaw.run.attempt(teller, attrs:openclaw.attempt)
Telemetrie voor sessieactiviteit
diagnostics.stuckSessionWarnMs is de leeftijdsdrempel zonder voortgang voor diagnostiek van
sessieactiviteit. Een processing-sessie nadert deze
drempel niet zolang OpenClaw voortgang waarneemt van antwoorden, tools, status, blokkades of de ACP-runtime.
Keepalives voor typen tellen niet als voortgang, zodat een stil model of
harnas nog steeds kan worden gedetecteerd.
OpenClaw classificeert sessies op basis van het werk dat nog kan worden waargenomen:
session.long_running: actief ingebed werk, modelaanroepen of toolaanroepen boeken nog steeds voortgang. Modelaanroepen met een eigenaar die langer stil blijven dandiagnostics.stuckSessionWarnMs, worden vóórdiagnostics.stuckSessionAbortMsook als langdurig gerapporteerd, zodat trage of niet-streamende modelproviders niet op vastgelopen Gateway-sessies lijken zolang afbreken waarneembaar is.session.stalled: er is actief werk, maar de actieve run heeft geen recente voortgang gerapporteerd. Modelaanroepen met een eigenaar schakelen op of nadiagnostics.stuckSessionAbortMsover vansession.long_runningnaarsession.stalled; verouderde model-/toolactiviteit zonder eigenaar wordt niet als onschadelijk langdurig werk behandeld. Vastgelopen ingebedde runs worden aanvankelijk alleen geobserveerd en gaan vervolgens nadiagnostics.stuckSessionAbortMszonder voortgang over op afbreken en leegmaken, zodat achterliggende beurten in de wachtrij van de lane kunnen worden hervat. Indien niet ingesteld, gebruikt de afbreekdrempel standaard het veiligere verlengde venster van minstens 5 minuten en 3xdiagnostics.stuckSessionWarnMs.session.stuck: verouderde sessieboekhouding zonder actief werk, of een inactieve sessie in de wachtrij met verouderde model-/toolactiviteit zonder eigenaar. Hierdoor wordt de getroffen sessielane onmiddellijk vrijgegeven nadat de herstelcontroles zijn geslaagd.
Herstel zendt gestructureerde gebeurtenissen session.recovery.requested en
session.recovery.completed uit. De diagnostische sessiestatus wordt pas als inactief gemarkeerd
na een muterend herstelresultaat (aborted of released) en alleen als
dezelfde verwerkingsgeneratie nog actueel is.
Alleen session.stuck zendt de teller openclaw.session.stuck, het
histogram openclaw.session.stuck_age_ms en de span openclaw.session.stuck
uit. Herhaalde diagnostiek voor session.stuck past een toenemende vertraging toe zolang de sessie
ongewijzigd blijft, zodat dashboards moeten waarschuwen bij aanhoudende stijgingen in plaats van bij
elke Heartbeat-tik. Zie voor de configuratieoptie en standaardwaarden
Configuratiereferentie.
Waarschuwingen voor activiteit zenden ook het volgende uit:
openclaw.liveness.warning(teller, attrs:openclaw.liveness.reason)openclaw.liveness.event_loop_delay_p99_ms(histogram, attrs:openclaw.liveness.reason)openclaw.liveness.event_loop_delay_max_ms(histogram, attrs:openclaw.liveness.reason)openclaw.liveness.event_loop_utilization(histogram, attrs:openclaw.liveness.reason)openclaw.liveness.cpu_core_ratio(histogram, attrs:openclaw.liveness.reason)
Levenscyclus van het harnas
openclaw.harness.duration_ms(histogram, attrs:openclaw.harness.id,openclaw.harness.plugin,openclaw.outcome,openclaw.harness.phasebij fouten)
Tooluitvoering en lusdetectie
openclaw.tool.execution.duration_ms(histogram, attrs:gen_ai.tool.name,openclaw.toolName,openclaw.tool.source,openclaw.tool.owner,openclaw.tool.params.kind, plusopenclaw.errorCategorybij fouten)openclaw.tool.execution.blocked(teller, attrs:gen_ai.tool.name,openclaw.toolName,openclaw.tool.source,openclaw.tool.owner,openclaw.tool.params.kind,openclaw.deniedReason)openclaw.tool.loop(teller, attrs:openclaw.toolName,openclaw.loop.level,openclaw.loop.action,openclaw.loop.detector,openclaw.loop.count, optioneelopenclaw.loop.paired_tool; uitgezonden wanneer een herhaalde lus van toolaanroepen wordt gedetecteerd)
Exec
openclaw.exec.duration_ms(histogram, attrs:openclaw.exec.target,openclaw.exec.mode,openclaw.outcome,openclaw.failureKind)
Interne diagnostiek (geheugen, payloads, exportstatus)
openclaw.payload.large(teller, attrs:openclaw.payload.surface,openclaw.payload.action,openclaw.channel,openclaw.plugin,openclaw.reason)openclaw.payload.large_bytes(histogram, attrs: hetzelfde alsopenclaw.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(histogrammen, geen attrs; metingen van procesgeheugen)openclaw.memory.pressure(teller, attrs:openclaw.memory.level,openclaw.memory.reason)openclaw.diagnostic.async_queue.dropped(teller, attrs:openclaw.diagnostic.async_queue.drop_class; verlies door tegendruk in de interne diagnostische wachtrij)openclaw.telemetry.exporter.events(teller, attrs:openclaw.exporter,openclaw.signal,openclaw.status, optioneelopenclaw.reason, optioneelopenclaw.errorCategory; zelftelemetrie voor de levenscyclus en fouten van de exporter)
Geëxporteerde spans
openclaw.model.usageopenclaw.channel,openclaw.provider,openclaw.modelopenclaw.tokens.*(input/output/cache_read/cache_write/total)- standaard
gen_ai.system, ofgen_ai.provider.namewanneer voor de nieuwste semantische GenAI-conventies is gekozen 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 voor de nieuwste semantische GenAI-conventies is gekozen gen_ai.request.model,gen_ai.operation.name,openclaw.provider,openclaw.model,openclaw.api,openclaw.transportopenclaw.errorCategory,error.typeen optioneelopenclaw.failureKindbij foutenopenclaw.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(alleen veilige componentgroottes, geen prompttekst)openclaw.model_call.usage.*engen_ai.usage.*wanneer het resultaat van de modelaanroep gebruiksgegevens van de provider voor die afzonderlijke aanroep bevat- Span-gebeurtenis
openclaw.provider.requestmet attribuutopenclaw.upstreamRequestIdHash(begrensd, op hashes gebaseerd) wanneer het resultaat van de bovenliggende provider een aanvraag-ID bevat; onbewerkte ID's worden nooit geëxporteerd - Met
OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimentalgebruiken spans van modelaanroepen de nieuwste GenAI-naam voor inferentiespans{gen_ai.operation.name} {gen_ai.request.model}en het spantypeCLIENTin plaats vanopenclaw.model.call.
- 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 een fout:
openclaw.harness.phase,openclaw.errorCategory, optioneelopenclaw.harness.cleanup_failed
openclaw.tool.executiongen_ai.tool.name,gen_ai.operation.name(execute_tool),openclaw.toolName,openclaw.tool.source, optioneelgen_ai.tool.call.id,openclaw.tool.owner,openclaw.tool.params.*- Optioneel
openclaw.errorCategory/openclaw.errorCodebij fouten,openclaw.deniedReasonenopenclaw.outcome=blockedbij weigering door beleid of sandbox
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(geen inhoud van prompts, geschiedenis, antwoorden of sessiesleutels)
openclaw.tool.loopopenclaw.toolName,openclaw.loop.level,openclaw.loop.action,openclaw.loop.detector,openclaw.loop.count, optioneelopenclaw.loop.paired_tool(geen lusberichten, parameters of uitvoer van hulpmiddelen)
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, optioneelopenclaw.memory.threshold_bytes/openclaw.memory.rss_growth_bytes/openclaw.memory.window_ms
Wanneer inhoudsregistratie expliciet is ingeschakeld, kunnen model- en hulpmiddelspans ook
begrensde, geredigeerde openclaw.content.*-attributen bevatten voor de specifieke
inhoudsklassen waarvoor u hebt gekozen.
Catalogus met diagnostische gebeurtenissen
De onderstaande gebeurtenissen vormen de basis voor de bovenstaande metrische gegevens en spans. Plugins kunnen zich er ook rechtstreeks op abonneren zonder OTLP-export.
Modelgebruik
model.usage- tokens, kosten, duur, context, provider/model/kanaal en sessie-ID's.usageis de gebruiksregistratie van de provider/beurt voor kosten en telemetrie;context.usedis de huidige momentopname van de prompt/context en kan lager zijn danusage.totalvan de provider wanneer invoer uit de cache of aanroepen in hulpmiddellussen een rol spelen.
Berichtenstroom
webhook.received/webhook.processed/webhook.errormessage.queued/message.processedmessage.delivery.started/message.delivery.completed/message.delivery.error
Wachtrij en sessie
queue.lane.enqueue/queue.lane.dequeuesession.state/session.long_running/session.stalled/session.stuckrun.attempt/run.progressdiagnostic.heartbeat(geaggregeerde tellers: webhooks/wachtrij/sessie)
Levenscyclus van de harness
harness.run.started/harness.run.completed/harness.run.error- levenscyclus per uitvoering voor de agent-harness. BevatharnessId, optioneelpluginId, provider/model/kanaal en uitvoerings-ID. Bij voltooiing wordendurationMs,outcome, optioneelresultClassification,yieldDetecteden aantallen vooritemLifecycletoegevoegd. Bij fouten wordenphase(prepare/start/send/resolve/cleanup),errorCategoryen optioneelcleanupFailedtoegevoegd.
Uitvoering
exec.process.completed- eindstatus van de terminal, duur, doel, modus, afsluitcode en fouttype. Opdrachttekst en werkmappen worden niet opgenomen.exec.approval.followup_suppressed- verouderde opvolging van een goedkeuring verwijderd nadat een sessie opnieuw is gekoppeld. BevatapprovalId,reason(session_rebound),phase(direct_deliveryofgateway_preflight) en het tijdstempel van de dispatcher. Sessiesleutels, routes en opdrachttekst worden niet opgenomen.
Zonder een exportmodule
Houd diagnostische gebeurtenissen beschikbaar voor Plugins of aangepaste uitvoerbestemmingen zonder
diagnostics-otel uit te voeren:
{ diagnostics: { enabled: true },}Gebruik diagnostische vlaggen voor gerichte foutopsporingsuitvoer zonder logging.level
te verhogen. Vlaggen zijn niet hoofdlettergevoelig en ondersteunen jokertekens (telegram.* of
*):
{ diagnostics: { flags: ["telegram.http"] },}Of als een eenmalige overschrijving via een omgevingsvariabele:
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gatewayUitvoer van vlaggen gaat naar het standaardlogbestand (logging.file) en wordt nog steeds
geredigeerd door logging.redactSensitive. Volledige handleiding:
Diagnostische vlaggen.
Uitschakelen
{ diagnostics: { otel: { enabled: false } },}Of laat diagnostics-otel weg uit plugins.allow, of voer
openclaw plugins disable diagnostics-otel uit.
Gerelateerd
- Logboekregistratie - bestandslogboeken, console-uitvoer, volgen via de CLI en het tabblad Logboeken in de Control UI
- Interne Gateway-logboekregistratie - WS-logboekstijlen, voorvoegsels van subsystemen en vastlegging van console-uitvoer
- Diagnostische vlaggen - gerichte vlaggen voor foutopsporingslogboeken
- Diagnostische export - hulpmiddel voor ondersteuningsbundels voor beheerders (los van OTEL-export)
- Configuratiereferentie - volledige referentie voor
diagnostics.*-velden