Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Логирование

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 (env ANGARABASE_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высокие — только разработка

См. также