About
Ship OpenClaw Gateway telemetry to Sazabi withdiagnostics-otel, OpenClaw’s official OpenTelemetry exporter plugin. It needs no code changes and sends over OTLP/HTTP protobuf:
- Spans for each agent run (
openclaw.run,openclaw.harness.run), model call (openclaw.model.call, withgen_ai.request.modelandgen_ai.usage.*token counts), tool execution (openclaw.tool.execution, withgen_ai.tool.name), and message flow (openclaw.message.processed,openclaw.message.delivery,openclaw.webhook.*). They carryopenclaw.channel,openclaw.provider,openclaw.model,openclaw.outcome, andopenclaw.errorCategory. - Log records from the Gateway’s
logging.filelog, withopenclaw.subsystem, severity, code location, trace context, and structured attributes such as model fallback decisions.
openclaw agent --local runs export from the CLI process. openclaw agent exec runs export nothing.
Prerequisites
- OpenClaw with the
openclaw pluginsandopenclaw configcommands - Your Sazabi intake URL, shown above — open the log source and copy the Intake URL from its setup screen (the public key is embedded in the URL)
Set up in the dashboard
1
Install and enable diagnostics-otel
Run these commands where the OpenClaw Gateway runs:Terminal
diagnostics-otel; there, only the enable command is needed.2
Point the exporter at Sazabi
Write the exporter settings into~/.openclaw/openclaw.json:Terminal
<your intake URL> with the intake URL shown above, with no path. OpenClaw appends /v1/traces and /v1/logs itself. The public key is part of the URL, so no headers entry is needed.OpenClaw exports no logs unless diagnostics.otel.logs is true. Metrics stay off because Sazabi would store each data point as a log row, and the spans already carry token counts.3
Restart the Gateway
Changes underdiagnostics.otel hot-reload in a running Gateway, but enabling a plugin takes effect on start. Restart once:Terminal
Set up with the CLI
You can also register the OpenClaw log source with the Sazabi CLI (installed and authenticated — see CLI reference). Registering the source mints the same intake URL the dashboard shows above (the public key is embedded in its hostname):sazabi log-sources get <log-source-id> at any time to reprint the endpoint, or sazabi log-sources list to see every log source in the project.
Verify
Restart the Gateway and send the agent one message through any channel.openclaw status --all shows the exporter state for traces and logs. Open the Intake page in the Sazabi dashboard and confirm logs from the OpenClaw source appear within a minute or two.
From the CLI, sazabi logs ask "How many openclaw-gateway log lines arrived in the last 15 minutes, by span name?" confirms rows are arriving, and sazabi logs ask "Show failed OpenClaw tool executions in the last day" lists tool spans with an error category.
Troubleshooting
Nothing arrives — Confirmopenclaw plugins list shows diagnostics-otel enabled, openclaw config get diagnostics has enabled: true at both levels, and OTEL_SDK_DISABLED is not true in the Gateway’s environment. If plugins.allow is set, it must include diagnostics-otel.
Spans arrive but no log records — diagnostics.otel.logs is unset or false, or diagnostics.otel.logsExporter is stdout. Set logs to true and remove logsExporter.
Every log body reads log — Expected with captureContent: false; OpenClaw withholds the message text. Filter on openclaw.subsystem, severity, and attributes.
Exporter failures in openclaw status --all — Confirm the endpoint is the intake URL with no path and protocol is http/protobuf.
Further reading
OpenClaw OpenTelemetry export
OpenClaw’s guide to the diagnostics-otel plugin, its settings, and its span
catalog.
Intake
See per-source ingestion volume and health.
Log sources
Browse the full log source catalog.