feat: automate production maintenance
This commit is contained in:
@@ -58,6 +58,7 @@
|
||||
|
||||
- [x] Добавить health/readiness-проверки PostgreSQL, MinIO, API и импорта; отразить их в Compose (`/health` без зависимостей, `/ready` с компонентами и режимом обязательного импорта).
|
||||
- [x] Добавить host-side production monitor контейнеров, `/ready`, диска, свежести/целостности backup и срока TLS; подготовлены systemd timer и runbook, реальный канал уведомлений подключается на сервере.
|
||||
- [x] Автоматизировать ежедневную цепочку backup → dry-run → retention с блокировкой параллельного запуска; ограничить Docker JSON-логи пятью файлами по 10 МБ на сервис.
|
||||
- [x] Добавить структурированные JSON-логи без пользовательских секретов и персональных технических данных (whitelist полей, redaction, request ID; Uvicorn access-log отключён).
|
||||
- [x] Добавить Gitea Actions CI: backend tests, Astro check/build, E2E и применение всех миграций на чистой PostgreSQL; сохранять логи Compose и Playwright-артефакты при падении (`.gitea/workflows/ci.yml`).
|
||||
- [x] Добавить отдельный тест полного bootstrap: пустые production volumes → миграции `0010` → seed без демо-уловов → readiness → браузерная отправка и проверка moderation API (`deploy/test-production-bootstrap.sh`, 6 сентября 2026).
|
||||
|
||||
@@ -28,13 +28,15 @@ echo $?
|
||||
```bash
|
||||
sudo cp deploy/systemd/rf4spotter-monitor.service /etc/systemd/system/
|
||||
sudo cp deploy/systemd/rf4spotter-monitor.timer /etc/systemd/system/
|
||||
sudo cp deploy/systemd/rf4spotter-maintenance.service /etc/systemd/system/
|
||||
sudo cp deploy/systemd/rf4spotter-maintenance.timer /etc/systemd/system/
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now rf4spotter-monitor.timer
|
||||
systemctl list-timers rf4spotter-monitor.timer
|
||||
sudo systemctl enable --now rf4spotter-monitor.timer rf4spotter-maintenance.timer
|
||||
systemctl list-timers 'rf4spotter-*'
|
||||
journalctl -u rf4spotter-monitor.service -n 20 --no-pager
|
||||
```
|
||||
|
||||
Сам timer записывает результат в journal. Для реального оповещения подключите failed unit к существующему серверному мониторингу либо настройте внешний HTTPS-monitor на `/ready`; уведомления должны приходить минимум по состояниям readiness, disk, backup и TLS. Не передавайте `.env.production` или вывод `docker compose config` внешнему сервису.
|
||||
Monitor timer записывает результат в journal. Maintenance timer ежедневно сначала создаёт backup, затем выполняет retention и не допускает параллельных запусков. Для реального оповещения подключите failed unit к существующему серверному мониторингу либо настройте внешний HTTPS-monitor на `/ready`; уведомления должны приходить минимум по состояниям readiness, disk, backup и TLS. Не передавайте `.env.production` или вывод `docker compose config` внешнему сервису.
|
||||
|
||||
## Реакция
|
||||
|
||||
|
||||
Reference in New Issue
Block a user