Files
microdao-daarion/docs/runbook/audit-retention.md
2026-03-02 09:47:39 -08:00

1.9 KiB
Raw Permalink Blame History

Runbook: Audit Retention (Sofiia Console)

Ціль: контролювати ріст SQLite (sofiia.db) через регулярний prune старих audit_events.

Default policy

  • SOFIIA_AUDIT_RETENTION_DAYS=90 (safe default)
  • Працює для audit_events.ts < now - retention_days.

Dry-run (рекомендовано перед виконанням)

python3 ops/prune_audit_db.py --dry-run

Override шляху/періоду:

python3 ops/prune_audit_db.py --data-dir "/app/data" --retention-days 90 --dry-run

Виконання prune

python3 ops/prune_audit_db.py --batch-size 5000

З VACUUM після видалення:

python3 ops/prune_audit_db.py --batch-size 5000 --vacuum

CLI параметри

  • --data-dir — шлях до SOFIIA_DATA_DIR (якщо не заданий, бере env або /app/data).
  • --retention-days — override retention (SOFIIA_AUDIT_RETENTION_DAYS або 90).
  • --batch-size — розмір батчу видалення (default 5000).
  • --dry-run — лише звіт, без видалення.
  • --vacuum — VACUUM після видалення.
  • --yes — reserved no-op (для майбутнього interactive safeguard).

Exit codes

  • 0 — OK
  • 1 — error (DB path/schema/permissions/SQL)

Перевірка розміру DB

du -h "${SOFIIA_DATA_DIR:-/app/data}/sofiia.db"

Приклад cron (щонеділі вночі, 03:30 UTC)

30 3 * * 0 cd /opt/microdao-daarion && SOFIIA_DATA_DIR=/app/data SOFIIA_AUDIT_RETENTION_DAYS=90 /usr/bin/python3 ops/prune_audit_db.py --batch-size 5000 >> /var/log/sofiia-audit-prune.log 2>&1

Порядок безпечного запуску

  1. --dry-run
  2. перевірка candidates/min/max ts
  3. реальний prune
  4. опційно --vacuum у low-traffic вікні