Skip to main content

Metrics

Every Prometheus metric the server exports at GET /metrics. For scraping setup and alerting guidance see Monitoring.

Scraping​

curl -s -H "Authorization: Bearer $RUSHDB_TOKEN" http://127.0.0.1:3000/metrics
  • The endpoint requires the boot token or a capability with read permission.
  • Format: Prometheus text exposition, version 0.0.4.
  • --metrics-prefix prepends a string to every name; --metrics-filter keeps only families whose name contains a substring.
  • Values are refreshed when the endpoint is scraped, except the storage byte breakdown (rushdb_storage_data_bytes, _history_bytes, _log_bytes, _receipt_bytes), which a background task refreshes every 15 minutes, starting 15 minutes after boot.
  • Every family ending in _total is a counter; it resets when the process restarts.

Histogram buckets (seconds) for every histogram below: 0.001, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10.

Requests​

MetricTypeLabelsMeaning
rushdb_requests_totalcounterrouteRequests executed, by route.
rushdb_request_duration_secondshistogramrouteRequest latency, measured around execution.
rushdb_rows_returned_totalcounterrouteRows/records returned by queries.
rushdb_operation_work_totalcounteroperation, counterBounded work units. operation is the protocol family (query, mutate, describe, ingest, index, transaction, purge_tenant, backup) with counter response_rows or response_bytes; or operation="sql_scan" with counter candidate_rows, reconstructed_rows, filtered_rows, posting_bytes.
rushdb_scheduler_inflightgauge—Jobs admitted to the bounded request scheduler.
rushdb_scheduler_capacitygauge—Scheduler admission capacity (workers + queue).
rushdb_http_inflight_body_bytesgauge—HTTP request-body bytes currently reserved.

route values: one per Protocol v1 operation (for example query.records, mutate.putRecord, transaction.commit; the full list is in HTTP endpoints), invalid for an HTTP body that is not a valid envelope, transport.execute for gRPC and Bolt, and pgwire.execute for PostgreSQL wire.

Commits and write path​

MetricTypeLabelsMeaning
rushdb_commits_totalcounter—Durable commit index: commits since the store was created.
rushdb_commit_latency_secondshistogram—Time from enqueue to durable acknowledgement per commit.
rushdb_commit_phase_secondshistogramphaseCommit pipeline time by phase. Per commit: admission_wait, build, expand, durable. Per publish group: wal_encode, wal_append_sync, backend_apply, derive, publish.
rushdb_storage_group_commits_totalcounter—Group-commit write transactions persisted.
rushdb_sequencer_inflight_keysgauge—Keys assigned to commits that are not yet published.
rushdb_conflict_window_bytesgauge—Memory held by the conflict-validation window.
rushdb_storage_admission_waits_totalcounter—Waits for the storage admission lock.
rushdb_storage_admission_wait_ms_totalcounter—Milliseconds spent waiting for storage admission.
rushdb_storage_backend_mutex_wait_ms_totalcounter—Milliseconds spent waiting for the storage backend lock.
rushdb_storage_backend_mutex_hold_ms_totalcounter—Milliseconds the storage backend lock was held.
rushdb_storage_backend_mutex_hold_max_msgauge—Longest single hold of the storage backend lock.

Storage, WAL, and retention​

MetricTypeLabelsMeaning
rushdb_storage_file_bytesgauge—Size of the primary store file (0 for in-memory).
rushdb_storage_data_bytesgauge—Live data row bytes (key + value), excluding history and log. 15-minute refresh.
rushdb_storage_history_bytesgauge—Retained MVCC history bytes. 15-minute refresh.
rushdb_storage_log_bytesgauge—Command-log bytes inside the store; normally 0 for a durable store because the log is the WAL. 15-minute refresh.
rushdb_storage_receipt_bytesgauge—Retry-receipt bytes. 15-minute refresh.
rushdb_wal_retained_bytesgauge—WAL bytes retained on disk.
rushdb_bytes_storedgaugetenantApproximate stored bytes; tenant="all" is the node total.
rushdb_records_storedgaugetenantRecords stored. tenant="all" always; per-tenant series (internal tenant id) only with --metrics-tenant-limit.
rushdb_storage_checkpoints_totalcounter—Durability checkpoints taken.
rushdb_storage_checkpoint_wait_ms_totalcounter—Milliseconds spent in checkpoints.
rushdb_storage_compactions_totalcounter—Completed storage compactions.
rushdb_commit_log_rows_prunedgauge—Command-log rows reclaimed by retention.
rushdb_receipts_sweptgauge—Retry receipts removed after the idempotency window.
rushdb_gc_tick_secondshistogram—Duration of one maintenance tick (GC, retention, checkpoint).
rushdb_retention_consumersgauge—Active retention consumers (backups, WAL archive, replicas, cursors).
rushdb_retention_protected_floorgauge—Lowest commit protected by a retention consumer.
rushdb_retention_oldest_reader_commitgauge—Oldest commit pinned by a live read view (0 = none).

Memory​

MetricTypeLabelsMeaning
rushdb_budget_used_bytesgaugepoolBytes currently reserved in a managed pool.
rushdb_budget_peak_bytesgaugepoolPeak reservation of a pool since start.
rushdb_budget_limit_bytesgaugepoolConfigured limit of a pool.
rushdb_allocator_allocated_bytesgauge—Bytes allocated by the application (jemalloc stats.allocated).
rushdb_allocator_active_bytesgauge—Bytes in active pages (stats.active).
rushdb_allocator_metadata_bytesgauge—Allocator metadata (stats.metadata).
rushdb_allocator_resident_bytesgauge—Physically resident bytes (stats.resident); the closest in-process view of RSS.
rushdb_allocator_retained_bytesgauge—Bytes retained by the allocator but not active (stats.retained).
rushdb_allocator_bytes_allocated_totalcounter—Cumulative bytes allocated; only populated in special measurement builds, otherwise 0.
rushdb_planner_stats_bytesgauge—Bytes in the planner-statistics cache.
rushdb_planner_stats_entriesgauge—Value distributions in the planner-statistics cache.
rushdb_tenants_residentgauge—Tenants whose in-memory handles are resident.
rushdb_tenant_resident_bytesgauge—Bytes charged by resident tenant handles.

pool values: managed (the whole managed envelope), transaction (transaction staging pool), and, when the logical cache is enabled, vector, sql, graph. Per-query pools (sql, graph) are reserved only while a query runs, so their used is usually 0 between scrapes; read their peak. The rushdb_budget_* gauges track reservations, not mapped memory; compare them with the rushdb_allocator_* gauges. The allocator gauges stay 0 in builds without jemalloc.

MetricTypeLabelsMeaning
rushdb_text_pendinggaugeindexChanges not yet applied to each text index. In multitenant mode, summed by index name over the resident tenants.
rushdb_ann_exact_fallbacks_totalcounter—Vector searches answered exactly because the cache budget could not admit the ANN index.
rushdb_unindexed_walks_totalcounter—Queries whose unindexed predicate leaf walked more than 10,000 owners; describe.explain names the ordered index to declare.

Startup​

MetricTypeLabelsMeaning
rushdb_boot_phase_duration_secondshistogramphaseStartup phase durations: config, storage, raft (Preview only), total.

See also​