Prometheus Integration

BetterDB Monitor exports 110+ metrics at /api/prometheus/metrics — raw node-level metrics from INFO, cluster and per-slot statistics, persisted forensics (slowlog/commandlog patterns, ACL denials, client activity), and precomputed anomaly signals.

See the full metrics reference for every metric, its labels, and cardinality notes.

What’s Exported

Category Examples Source
Server / node betterdb_uptime_in_seconds, betterdb_instance_info INFO server
Memory betterdb_memory_used_bytes, betterdb_memory_fragmentation_ratio, betterdb_memory_used_peak_bytes INFO memory
CPU betterdb_cpu_sys_seconds_total, betterdb_cpu_user_seconds_total INFO cpu
Stats / keyspace betterdb_keyspace_hits_total, betterdb_evicted_keys_total, betterdb_db_keys, betterdb_db_avg_ttl_seconds INFO stats, INFO keyspace
Clients betterdb_connected_clients, betterdb_blocked_clients, betterdb_client_connections_by_user INFO clients, CLIENT LIST
Replication betterdb_replication_offset, betterdb_connected_slaves, betterdb_repl_output_buffer_ratio INFO replication
Command stats betterdb_commandstats_calls_total, betterdb_commandstats_latency_us INFO commandstats
Cluster betterdb_cluster_size, betterdb_cluster_slots_ok/_fail/_pfail, betterdb_cluster_known_nodes CLUSTER INFO
Per-slot stats betterdb_cluster_slot_keys, betterdb_cluster_slot_reads_total, betterdb_cluster_slot_writes_total CLUSTER SLOT-STATS (Valkey 8.0+)
Slowlog patterns betterdb_slowlog_pattern_count, betterdb_slowlog_pattern_avg_duration_us Persisted slowlog history
COMMANDLOG betterdb_commandlog_large_request_by_pattern, betterdb_commandlog_large_reply_by_pattern COMMANDLOG (Valkey 8.1+)
ACL audit betterdb_acl_denied, betterdb_acl_denied_by_user Persisted ACL LOG history
Anomaly detection betterdb_anomaly_events_total, betterdb_anomaly_by_severity BetterDB detectors
Vector search betterdb_vector_index_memory_bytes FT.INFO

All metrics carry a connection label, so a single BetterDB instance monitoring multiple databases exports each family per connection. Node.js process metrics are included with the same betterdb_ prefix.

Scrape Config

scrape_configs:
  - job_name: 'betterdb'
    static_configs:
      - targets: ['localhost:3001']
    metrics_path: '/api/prometheus/metrics'
    scrape_interval: 15s

Useful Queries

# Cache hit ratio per connection
rate(betterdb_keyspace_hits_total[5m])
  / (rate(betterdb_keyspace_hits_total[5m]) + rate(betterdb_keyspace_misses_total[5m]))

# Memory utilization vs maxmemory
betterdb_memory_used_bytes / betterdb_memory_max_bytes > 0.9

# Hottest cluster slots by write volume
topk(10, rate(betterdb_cluster_slot_writes_total[5m]))

# Slowest command patterns
topk(5, betterdb_slowlog_pattern_avg_duration_us)

# Anomaly rate
rate(betterdb_anomaly_events_total[5m])

# Critical anomalies in last hour
betterdb_anomaly_by_severity{severity="critical"}

Anomaly Metrics

Anomaly detection publishes precomputed signals alongside the raw metrics:

Metric Type Labels
betterdb_anomaly_events_total Counter severity, metric_type, anomaly_type
betterdb_anomaly_events_current Gauge severity
betterdb_anomaly_by_severity Gauge severity
betterdb_anomaly_by_metric Gauge metric_type
betterdb_correlated_groups_total Counter pattern, severity
betterdb_correlated_groups_by_pattern Gauge pattern
betterdb_anomaly_buffer_ready Gauge metric_type
betterdb_anomaly_buffer_mean Gauge metric_type
betterdb_anomaly_buffer_stddev Gauge metric_type

Alert Rules

See docs/alertmanager-rules.yml for ready-to-use Alertmanager rules.

Configuration

The anomaly summary update interval can be configured via ANOMALY_PROMETHEUS_INTERVAL_MS (default: 30000ms).