ops(dev): add audit retention pruning script
Made-with: Cursor
This commit is contained in:
65
docs/runbook/audit-retention.md
Normal file
65
docs/runbook/audit-retention.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# 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 (рекомендовано перед виконанням)
|
||||
|
||||
```bash
|
||||
python3 ops/prune_audit_db.py --dry-run
|
||||
```
|
||||
|
||||
Override шляху/періоду:
|
||||
|
||||
```bash
|
||||
python3 ops/prune_audit_db.py --data-dir "/app/data" --retention-days 90 --dry-run
|
||||
```
|
||||
|
||||
## Виконання prune
|
||||
|
||||
```bash
|
||||
python3 ops/prune_audit_db.py --batch-size 5000
|
||||
```
|
||||
|
||||
З VACUUM після видалення:
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
du -h "${SOFIIA_DATA_DIR:-/app/data}/sofiia.db"
|
||||
```
|
||||
|
||||
## Приклад cron (щонеділі вночі, 03:30 UTC)
|
||||
|
||||
```cron
|
||||
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 вікні
|
||||
Reference in New Issue
Block a user