Skip to content

Observability

NamiDB is instrumented with tracing on every pub async function in the workspace. OpenTelemetry export is on the roadmap; today you have:

Tracing

Terminal window
export RUST_LOG=namidb=info,namidb_storage=debug
export NAMIDB_LOG_FORMAT=json # optional, structured

Every Cypher call emits a tracing span with the parsed plan, the chosen physical operators, and per-stage timings.

Per-stage profile dump

Terminal window
export NAMIDB_PROFILE_DUMP=1

After every query, NamiDB prints a per-stage counter block to stderr: parse, lower, optimise, execute, with row counts and µs / stage.

Cache stats (Python)

print(client.cache_stats())
# {
# "adjacency": {"hits": ..., "misses": ..., "bytes": ...},
# "node_view": {...},
# "sst": {...}
# }

Hook this into your dashboards to spot working-set vs budget mismatches.

Server health endpoints

Terminal window
curl http://your-host:8080/v0/health | jq .
curl http://your-host:8080/v0/version | jq .

/v0/health returns the manifest version, the epoch, and last commit timestamp.

Roadmap

  • /v0/metrics — Prometheus exposition (counters, latency histogram, cache hit rates).
  • OpenTelemetry export — spans + metrics over OTLP.
  • Structured EXPLAIN ANALYZE — runtime row counts per operator.

Track progress in github.com/namidb/namidb/issues.

See also