Server logs and traces
The server writes text logs to stdout by default. Set
The server writes text logs to stdout by default. Set
OMNIGRAPH_LOG_FORMAT=json for structured logs. HTTP completion records include
the route template, method, status and response_headers_ms: elapsed time until
response headers are available, not the duration of a streaming body. Unknown
routes use <unmatched>; request URLs, query strings, headers and bodies are not
included in these records.
To export traces, point the server at an OpenTelemetry collector:
OMNIGRAPH_LOG_FORMAT=json \
OTEL_EXPORTER_OTLP_ENDPOINT=http://collector:4318 \
OTEL_SERVICE_NAME=omnigraph-server \
OTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=production,service.version=build-123 \
omnigraph-server --cluster /srv/omnigraph/company-brain --bind 0.0.0.0:8080Export is off unless an endpoint is explicitly set. The supported transport is
OTLP HTTP/protobuf; a general endpoint gets /v1/traces appended.
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT overrides it with an exact trace URL.
Endpoints must use HTTP or HTTPS without userinfo, query parameters or fragments.
Use HTTPS outside a trusted private network. OTEL_SDK_DISABLED=true disables
export without disabling logs. Normal authentication configuration still applies.
Incoming W3C traceparent and tracestate connect HTTP requests to their callers.
Owned read/write spans follow the work even when the caller stops waiting;
JSON logs include their trace_id and span_id. Context is correlation only and
never supplies an actor or changes permissions. Baggage is not imported.
The SDK's OTEL_TRACES_SAMPLER and OTEL_TRACES_SAMPLER_ARG control sampling;
the default follows the parent, or samples a root request.
Only explicitly authored request and native-operation spans are exported.
RUST_LOG controls stdout log events (info by default), independently of
trace export and sampling. Setting it to warn, error or off does not
disable traces; warnings and errors still retain trace correlation when INFO
logs are suppressed. The rmcp, lance::dataset_events and
lance::file_audit targets remain restricted to warnings/errors, even with
debug overrides. These targets can include query arguments/results, full storage
URIs and deletion predicates. omnigraph_server::init_tracing() also enforces
the restrictions; embedders using their own subscriber must preserve them.
A failed Blob delivery, change-route request or streamed response is logged by
its error class, never by its message; see HTTP errors.
Collect stdout separately for logs; the server does not send
the same logs over OTLP. Resource attributes are operator-provided metadata;
do not place secrets or graph contents in them.
Export uses a bounded queue of 2,048 spans, batches of up to 256, a five-second flush interval and a three-second HTTP timeout. A full queue drops telemetry; collector failure never blocks a graph operation. After serving stops, a best-effort flush starts in the background with a five-second bound; it never delays process exit or changes native shutdown deadlines. Process exit can lose buffered spans; telemetry is not durable operation evidence.