Establish a delivery-health baseline
Set the application’s queue path, the server URL and a read token, then inspect delivery:-health-addr instead when it differs. The relay also exposes /metrics
on that listener. These local endpoints are separate from authenticated /v1/health.
A zero backlog can mean records were sent or terminally dropped. Compare sent and dropped
counters, then find a known execution on the server. Server loss information depends on what
reached the server; compare it with the local queue.
No recording appears
- Confirm
init()ran before the marked entry point. A@vexlo.stepoutside a trace does not start a recording. Inspectvexlo.diagnostics()in the application process, includingsteps_outside_traceand internal-error counters. - Check local
enabledconfiguration and service policy. Confirm the SDK and relay use the same queue directory. - Run
relay statusagainst that directory. If no writer appears, confirm the SDK selected that directory and the entry point executed. Inspect a backlog for delivery failures. Check relay logs and the destination/token settings. - Check server access with
whoami, then reader team, environment, service and time filters. A correctly recorded trace outside your token’s scope looks absent.
The server was unreachable
Network errors,429, and HTTP 500, 502, 503 and 504 are retryable. Restore the
server or correct the destination while the records remain queued. Queue pressure can evict unsent
records during an outage. See
local queue retention.
The server rejected records
Other response statuses are terminal, including invalid or wrong-role credentials. The relay counts the rejected records asdaemon_terminal_reject and advances past them. Correcting the
credential prevents later rejections; it does not automatically send the rejected records again.
A wrong-role relay credential produced this queue status:
Authentication or transport fails
The API returned this response after a credential was revoked:
Calls or values are missing
Review Capture controls before changing what leaves the process.
For missing bytes, Retention distinguishes capture decisions, delivery
loss and server expiry. Increasing a budget cannot reconstruct bytes already unavailable.
Capture resumes after a policy outage
The Python SDK falls back toinit() configuration when its policy file is unusable or
older than 300 seconds. A remote restriction is therefore temporary while policy delivery is
unavailable. Put required restrictions in local configuration, then use policy only to lower
that ceiling. See policy freshness.
A recording remains open or incomplete
Readcompleteness separately from the root call’s status. An in_flight attempt has an
entry record without a completion record; a lost completion leaves the same evidence as a
still-running function.
Follow every step page, collecting distinct paths until next_cursor is null. Compare
that count with the newest step_count and restart the walk if they differ. A walk while
records are still arriving does not establish exhaustive coverage. Slowest-first order puts
calls without a completed duration last, beyond the first page when the trace is large.
See HTTP traces and values for exact fields and pagination semantics.
Capacity check or relay health fails
A nonzerovexlo check indicates invalid configuration, including a value budget greater
than the total capacity of its volume. serve applies the same capacity validation. Reduce
the budget or select a larger volume before using -allow-overcommit. Values expiring before
call records are reported without failing the check.
With a backlog, relay health is degraded until the first accepted send, or after five minutes
without an accepted send. Queue usage above 80% of its budget also degrades health. Inspect
relay status and relay logs to distinguish destination failure, terminal drops and pressure
eviction.
An agent cannot connect or read data
The MCP server requiresVEXLO_API_URL and a read-role VEXLO_TOKEN. Set VEXLO_API_URL to
the same server base URL used for VEXLO_ENDPOINT, without /v1. It checks the server’s
capabilities and API version, then the credential’s identity and role. A successful connection
with no results still requires checking service, team, environment and instrumentation.
Use Connect an agent for the supported host setup and
MCP tools for exact filters and errors.