nokv provides operational visibility similar to RocksDB ldb / Badger CLI, with script-friendly JSON output.
go install ./cmd/nokv--workdir <path>: NoKV database directory (must containCURRENTfor manifest commands)--json: JSON output (default is plain text)--expvar <url>: forstats, fetch from/debug/vars--no-region-metrics: for offlinestats, skip attaching runtime region metrics
- Reads
StatsSnapshoteither offline (--workdir) or online (--expvar) - JSON output is nested by domain (not flat)
Common fields:
entriesflush.pending,flush.queue_length,flush.last_wait_mscompaction.backlog,compaction.max_scorevalue_log.segments,value_log.pending_deletes,value_log.gc.*wal.active_segment,wal.segment_count,wal.typed_record_ratiowrite.queue_depth,write.queue_entries,write.hot_key_limitedregion.total,region.running,region.removinghot.read_keys,hot.write_keyslsm.levels,lsm.value_bytes_totaltransport.*,redis.*
Example:
nokv stats --workdir ./testdata/db --json | jq '.flush.queue_length'- Reads manifest version state
- Shows log pointer, per-level file info, and value-log metadata
- Lists value-log segments and current head per bucket
- Useful after GC/recovery checks
- Dumps manifest-backed region catalog (state/range/epoch/peers)
- Supports
--json
- Starts TinyKv gRPC service backed by local
raftstore - Requires
--workdir,--store-id, and--pd-addr - Common flags:
--addr(default127.0.0.1:20160)--peer storeID=address(repeatable)--election-tick,--heartbeat-tick--raft-max-msg-bytes,--raft-max-inflight--raft-tick-interval,--raft-debug-log
Example:
nokv serve \
--workdir ./artifacts/cluster/store-1 \
--store-id 1 \
--addr 127.0.0.1:20170 \
--pd-addr 127.0.0.1:2379 \
--peer 2=127.0.0.1:20171 \
--peer 3=127.0.0.1:20172- Combine with
RECOVERY_TRACE_METRICS=1for recovery validation. - In CI, compare JSON snapshots to detect observability regressions.
- Use
nokv stats --expvarfor online diagnostics and--workdirfor offline forensics.