148 lines
3.8 KiB
Markdown
148 lines
3.8 KiB
Markdown
# Мониторинг и наблюдаемость
|
|
|
|
## Проверки здоровья
|
|
|
|
### HTTP endpoint проверки здоровья
|
|
|
|
```bash
|
|
curl http://localhost:9470/health
|
|
```
|
|
|
|
Ответ:
|
|
|
|
```json
|
|
{
|
|
"status": "healthy",
|
|
"version": "0.1.0",
|
|
"uptime_seconds": 86400,
|
|
"checks": {
|
|
"storage": "ok",
|
|
"memory": "ok",
|
|
"connections": "ok"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Readiness Probe
|
|
|
|
```bash
|
|
curl http://localhost:9470/ready
|
|
```
|
|
|
|
Возвращает `200 OK` когда сервер готов принимать трафик, `503` во время запуска.
|
|
|
|
## Метрики
|
|
|
|
### Prometheus-совместимые метрики
|
|
|
|
```bash
|
|
curl http://localhost:9470/metrics
|
|
```
|
|
|
|
Пример вывода:
|
|
|
|
```
|
|
# 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
|
|
|
|
# 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_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
|
|
```
|
|
|
|
### Метрики в формате JSON
|
|
|
|
```bash
|
|
curl http://localhost:9470/metrics?format=json
|
|
```
|
|
|
|
## Логирование
|
|
|
|
### Уровни логирования
|
|
|
|
| Уровень | Описание |
|
|
|---------|----------|
|
|
| `debug` | Детальные внутренние операции |
|
|
| `info` | Нормальные операции |
|
|
| `warn` | Восстанавливаемые проблемы |
|
|
| `error` | Сбои требующие внимания |
|
|
|
|
### Структурированные JSON логи
|
|
|
|
```bash
|
|
BARADB_LOG_LEVEL=info \
|
|
BARADB_LOG_FORMAT=json \
|
|
BARADB_LOG_FILE=/var/log/baradb/baradb.log \
|
|
./build/baradadb
|
|
```
|
|
|
|
Пример записи лога:
|
|
|
|
```json
|
|
{
|
|
"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"
|
|
}
|
|
```
|
|
|
|
## Grafana Dashboard
|
|
|
|
Импортируйте dashboard ID `baradb-001` или используйте JSON в `monitoring/grafana-dashboard.json`.
|
|
|
|
Ключевые панели:
|
|
- Queries per second
|
|
- Query latency percentiles (p50, p95, p99)
|
|
- Storage size and SSTable count
|
|
- Cache hit rate
|
|
- Active connections
|
|
- Transaction rate
|
|
- Error rate
|
|
|
|
## Мониторинг кластера
|
|
|
|
```bash
|
|
curl http://node1:9470/metrics/cluster
|
|
```
|
|
|
|
```json
|
|
{
|
|
"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
|
|
}
|
|
```
|
|
|
|
## Устранение проблем с метриками
|
|
|
|
| Симптом | Метрика | Действие |
|
|
|---------|---------|----------|
|
|
| Медленные запросы | `baradb_queries_duration_seconds` | Проверить cache hit rate, добавить индексы |
|
|
| Высокая память | `process_resident_memory_bytes` | Уменьшить размеры memtable/cache |
|
|
| Рост хранилища | `baradb_storage_lsm_size_bytes` | Запустить ручную компактификацию |
|
|
| Ошибки соединений | `baradb_active_connections` | Увеличить пул или добавить узлы |
|
|
| Отставание репликации | `baradb_replication_lag_ms` | Проверить сеть, увеличить ресурсы | |