Tracing
AngaraBase использует tracing. Есть два уровня наблюдаемости:
- Логи сервера — вербозность задаёт
RUST_LOG(см. Логирование). - Трассы запросов (OTel-спаны) — опциональный per-query экспорт спанов
accept → parse → plan → execute → storage → commit.
Экспорт идёт только в stderr (через лог) или в локальный JSONL-файл. Сетевого OTLP-коллектора, Jaeger/Tempo, push по HTTP — нет.
Включение трасс запросов
Per-query трассы выключены по умолчанию. Управление — переменными окружения:
| Переменная | Назначение | По умолчанию |
|---|---|---|
ANGARABASE_OTEL_ENABLED | включить экспорт спанов (1/true/yes/on) | off |
ANGARABASE_OTEL_SAMPLE_RATE_PPM | доля сэмплируемых запросов в ppm (0 — выкл, 1000000 — 100%) | 1000000 |
ANGARABASE_OTEL_EXPORTER | приёмник: stderr или file | stderr |
ANGARABASE_OTEL_ENDPOINT | путь к JSONL-файлу (только при EXPORTER=file) | — |
# 5% запросов в локальный JSONL-файл
export ANGARABASE_OTEL_ENABLED=1
export ANGARABASE_OTEL_SAMPLE_RATE_PPM=50000
export ANGARABASE_OTEL_EXPORTER=file
export ANGARABASE_OTEL_ENDPOINT=/var/log/angarabase/query-traces.jsonl
./angarabase-server --config-path /etc/angarabase/angarabase.conf
При EXPORTER=stderr строки спанов попадают в обычный лог сервера (на уровне
info).
Что в спане
Каждая трасса запроса несёт идентификаторы, по которым её можно связать с
sys.*-диагностикой:
- логическая БД и пользователь;
- класс запроса (
QueryClass); queryidиplanid(если доступны) — те же идентификаторы, что вangara_stat_statementsиEXPLAIN.
Разбор JSONL
# медленные запросы (>1s) из файла трасс
jq 'select(.duration_ms > 1000)' /var/log/angarabase/query-traces.jsonl
# распределение по queryid
jq -r '.queryid' /var/log/angarabase/query-traces.jsonl | sort | uniq -c | sort -rn | head
Для агрегатных метрик (latency-перцентили, частота медленных запросов) используйте Prometheus-эндпоинт — см. Мониторинг, а для точечного анализа плана — Диагностику.
Безопасность
⚠️ Спаны и логи могут содержать текст SQL с чувствительными данными.
- Ограничьте доступ к файлу трасс:
chmod 640, владелец — сервисный пользователь. - Настройте ротацию (см. logrotate в Логировании).
- Не включайте 100%-сэмплинг с текстом SQL на проде без необходимости — это и объём, и риск утечки.
Если трасс нет
ANGARABASE_OTEL_ENABLEDне установлен в1/true— спаны не пишутся.ANGARABASE_OTEL_SAMPLE_RATE_PPM=0— сэмплинг выключен.EXPORTER=file, ноANGARABASE_OTEL_ENDPOINTне задан или путь недоступен на запись — строка уходит в stderr-лог вместо файла.- Слишком строгий
RUST_LOGдля stderr-экспортёра — поднимите уровень (см. Логирование).
См. также
- Логирование —
RUST_LOG, формат строк, ротация, агрегация. - Мониторинг — метрики Prometheus.
- Диагностика —
EXPLAIN,angara_stat_*, медленный лог.