Логирование
AngaraBase пишет структурированные логи через tracing / tracing_subscriber
(формат key=value), пригодные для систем агрегации (ELK, Splunk и т.п.).
Уровни
| Уровень | Когда | Примеры |
|---|---|---|
error | сбои системы, неустранимые ошибки | повреждение данных, OOM, восстановление после паники |
warn | восстановимые сбои, деградация, мисконфигурация | отказ heartbeat, ошибки audit-sink, fallback-режимы |
info | операционные события, смена состояния | старт инстанса, захват аренды, завершение сбора статистики |
debug | детальная диагностика, внутреннее состояние | прогресс micro-rescan, детали MVCC-recovery, статистика buffer pool |
trace | очень подробно, горячий путь | обработка отдельных кортежей, захват блокировок |
Рекомендации: info — в production; debug — на время разбора инцидента;
trace — только в разработке.
Управление уровнем
Уровень и фильтр задаёт переменная окружения RUST_LOG (читается на старте,
по умолчанию info). Поддерживается синтаксис EnvFilter — в т.ч. фильтры по
модулям:
# глобальный уровень
RUST_LOG=debug ./angarabase-server --config-path /etc/angarabase/angarabase.conf
# по модулям: debug для сервера, warn для TLS
export RUST_LOG="angarabase_server=debug,rustls=warn"
./angarabase-server --config-path /etc/angarabase/angarabase.conf
Фильтр фиксируется при запуске — чтобы изменить уровень, перезапустите сервер с
новым RUST_LOG.
Настройка
logging.log_level(envANGARABASE_LOG_LEVEL, конфиг[logging]) валидируется и видна вsys.settings, но консольный subscriber слушает именноRUST_LOG. Для фактического изменения вербозности сервера используйтеRUST_LOGи перезапуск.
-- посмотреть записанное значение настройки
SELECT name, value FROM sys.settings WHERE name = 'logging.log_level';
Формат строки
2026-03-09T10:30:45.123Z INFO angarabase_server::stats stats_scheduler: auto_analyze_triggered table=users staleness_score=2.45
- Timestamp — ISO 8601, миллисекунды.
- Level — ERROR/WARN/INFO/DEBUG/TRACE.
- Module — путь модуля Rust (например,
angarabase_server::stats). - Context — структурированные пары
key=valueс префиксом операции (например,instance_lease:,micro_rescan:). Чувствительные данные в логи не попадают — только идентификаторы.
Production
Ротация (logrotate)
# /etc/logrotate.d/angarabase
/var/log/angarabase/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 0644 angarabase angarabase
postrotate
systemctl reload angarabase-server
endscript
}
Агрегация
ELK (logstash):
filter {
if [program] == "angarabase-server" {
grok { match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{DATA:module} %{GREEDYDATA:context}" } }
kv { source => "context" field_split => " " value_split => "=" }
}
}
Splunk:
[angarabase]
EXTRACT-level = (?<level>ERROR|WARN|INFO|DEBUG|TRACE)
EXTRACT-operation = (?<operation>\w+):
Полезные грепы
grep "ERROR" /var/log/angarabase/server.log | wc -l # частота ошибок
grep "instance_lease.*failed" /var/log/angarabase/server.log
grep "mvcc_recovery:" /var/log/angarabase/server.log
Влияние на производительность
| Уровень | Накладные расходы |
|---|---|
error/warn | минимальные — безопасно в production |
info | низкие — уровень по умолчанию |
debug | умеренные — на короткое время для разбора |
trace | высокие — только разработка |
См. также
- Tracing — распределённая трассировка (spans, OTLP).
- Мониторинг — метрики Prometheus.
- Жизненный цикл инстанса — события аренды в логах.
- Crash recovery — логи восстановления MVCC.