Files
Baradb/docs/en/monitoring.md
T

5.3 KiB

Monitoring & Observability

Health Checks

HTTP Health Endpoint

curl http://localhost:9470/health

Response:

{
  "status": "healthy",
  "version": "0.1.0",
  "uptime_seconds": 86400,
  "checks": {
    "storage": "ok",
    "memory": "ok",
    "connections": "ok"
  }
}

Readiness Probe

curl http://localhost:9470/ready

Returns 200 OK when the server is ready to accept traffic, 503 during startup.

Metrics

Prometheus-Compatible Metrics

curl http://localhost:9470/metrics

Example output:

# HELP baradb_queries_total Total number of queries executed
# TYPE baradb_queries_total counter
baradb_queries_total 152340

# HELP baradb_queries_duration_seconds Query duration histogram
# TYPE baradb_queries_duration_seconds histogram
baradb_queries_duration_seconds_bucket{le="0.001"} 45000
baradb_queries_duration_seconds_bucket{le="0.01"} 120000
baradb_queries_duration_seconds_bucket{le="0.1"} 148000

# HELP baradb_storage_lsm_size_bytes LSM-Tree total size
# TYPE baradb_storage_lsm_size_bytes gauge
baradb_storage_lsm_size_bytes 2147483648

# HELP baradb_storage_sstables Number of SSTables
# TYPE baradb_storage_sstables gauge
baradb_storage_sstables 12

# HELP baradb_cache_hit_rate Page cache hit rate
# TYPE baradb_cache_hit_rate gauge
baradb_cache_hit_rate 0.94

# HELP baradb_active_connections Active client connections
# TYPE baradb_active_connections gauge
baradb_active_connections 42

# HELP baradb_txns_active Active transactions
# TYPE baradb_txns_active gauge
baradb_txns_active 7

# HELP baradb_txns_committed_total Total committed transactions
# TYPE baradb_txns_committed_total counter
baradb_txns_committed_total 89123

JSON Metrics

curl http://localhost:9470/metrics?format=json

Logging

Log Levels

Level Description
debug Detailed internal operations
info Normal operations
warn Recoverable issues
error Failures requiring attention

Structured JSON Logs

BARADB_LOG_LEVEL=info \
BARADB_LOG_FORMAT=json \
BARADB_LOG_FILE=/var/log/baradb/baradb.log \
./build/baradadb

Example log entry:

{
  "timestamp": "2025-01-15T10:30:00.123Z",
  "level": "info",
  "component": "server",
  "message": "Query executed",
  "query": "SELECT * FROM users",
  "duration_ms": 12,
  "client_ip": "10.0.0.15"
}

Text Format

BARADB_LOG_FORMAT=text ./build/baradadb

Output:

2025-01-15T10:30:00.123Z [INFO] server: Query executed | query="SELECT * FROM users" duration_ms=12

Alerting Rules

Prometheus AlertManager

groups:
  - name: baradb
    rules:
      - alert: BaraDBHighErrorRate
        expr: rate(baradb_errors_total[5m]) > 0.1
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "BaraDB error rate is high"

      - alert: BaraDBLowCacheHitRate
        expr: baradb_cache_hit_rate < 0.8
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "BaraDB cache hit rate below 80%"

      - alert: BaraDBHighConnections
        expr: baradb_active_connections > 800
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "BaraDB connection count is high"

      - alert: BaraDBDown
        expr: up{job="baradb"} == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "BaraDB instance is down"

Grafana Dashboard

Import dashboard ID baradb-001 or use the provided JSON in monitoring/grafana-dashboard.json.

Key panels:

  • Queries per second
  • Query latency percentiles (p50, p95, p99)
  • Storage size and SSTable count
  • Cache hit rate
  • Active connections
  • Transaction rate
  • Error rate

Distributed Monitoring

Cluster Metrics

For Raft clusters, monitor:

curl http://node1:9470/metrics/cluster
{
  "cluster_id": "baradb-cluster-1",
  "nodes": [
    {"id": "node1", "role": "leader", "health": "healthy"},
    {"id": "node2", "role": "follower", "health": "healthy"},
    {"id": "node3", "role": "follower", "health": "healthy"}
  ],
  "raft_log_index": 15420,
  "raft_commit_index": 15420,
  "shards": 4,
  "replication_lag_ms": 5
}

Performance Profiling

Built-in CPU Profiler

curl -X POST http://localhost:9470/debug/pprof/cpu?seconds=30 > cpu.prof

Memory Profiler

curl http://localhost:9470/debug/pprof/heap > heap.prof

Trace

curl -X POST http://localhost:9470/debug/pprof/trace?seconds=5 > trace.out

Log Aggregation

Fluent Bit Configuration

[INPUT]
    Name tail
    Path /var/log/baradb/baradb.log
    Parser json
    Tag baradb

[OUTPUT]
    Name elasticsearch
    Match baradb
    Host elasticsearch
    Port 9200
    Index baradb-logs

Troubleshooting with Metrics

Symptom Metric Action
Slow queries baradb_queries_duration_seconds Check cache hit rate, consider adding indexes
High memory process_resident_memory_bytes Reduce memtable/cache sizes
Storage growing baradb_storage_lsm_size_bytes Run manual compaction
Connection errors baradb_active_connections Increase connection pool or add nodes
Replication lag baradb_replication_lag_ms Check network, increase resources