5.1 KiB
5.1 KiB
Incident runbook RF4 Spotter
Сначала зафиксировать время, revision из /api/v1/admin/diagnostics, симптомы и последние изменения. Не удалять volumes и не запускать миграции повторно вслепую. Если есть риск порчи или утечки, включить maintenance mode по deploy/README.md.
Заполнение диска
- Проверить host disk, размеры PostgreSQL/MinIO и возраст backup через
deploy/monitor.sh. - Остановить scheduler, чтобы не росли импорт и логи; публичное чтение оставлять только если база стабильна.
- Освободить место вне volumes: старые build-artifacts и журналы согласно системной retention. Не удалять файлы MinIO или PostgreSQL вручную.
- Выполнить штатный retention dry-run, затем apply только после проверки отчёта. После восстановления места проверить
/readyи создать свежий backup.
PostgreSQL недоступен
- Проверить контейнер, healthcheck, свободное место и последние логи без вывода секретов.
- Не выполнять автоматический reset/recreate. При повреждении развернуть отдельный чистый контур и использовать
deploy/restore.shс последним проверенным backup. - После запуска сверить Alembic head,
/ready, счётчики diagnostics и контрольные данные.
MinIO недоступен
- Проверить health, диск и доступ app-пользователя только к целевому bucket.
- Отключить загрузку новых скриншотов или включить maintenance; текстовые заявки не считать потерянными.
- После восстановления проверить stat bucket, отрицательную проверку глобального list и чтение одного тестового объекта подписанной ссылкой.
Зависший импорт
- Проверить import run, advisory lock, время старта и процесс scheduler. Не запускать второй импорт того же источника.
- Если процесса уже нет, сохранить диагностику и пометить run failed штатным административным способом; не менять опубликованные записи.
- Следующий запуск делать только после site-wide cooldown. При повторных ошибках оставить backoff и проверить DOM-контракт на fixture.
Ошибка миграции
- Остановить rollout; не запускать API новой версии поверх неизвестной схемы.
- Сохранить логи migrate и backup. Определить, транзакционна ли упавшая ревизия и какой
alembic currentфактически записан. - Предпочесть исправленную forward migration. Rollback приложения допустим, только если старая версия совместима с текущей схемой; восстановление БД — по документированной release-процедуре.
Компрометация секрета
- Немедленно включить maintenance и отозвать затронутый секрет: admin token, Basic Auth, rate-limit HMAC, app S3 или root MinIO.
- Создать новый уникальный секрет, обновить
.env.productionвне Git и перезапустить только зависимые сервисы. Для MinIO сначала выпустить нового app-пользователя, проверить policy, затем удалить старого. - Проверить moderation history, auth attempts, object operations и deploy-доступ за предполагаемый период без публикации персональных данных.
- Если мог раскрыться
RATE_LIMIT_SECRET, учитывать, что сменятся HMAC-идентификаторы клиентов. Зафиксировать инцидент и время ротации.
Закрытие инцидента
/health и /ready успешны, monitor не выдаёт предупреждений, последняя миграция и backup проверены, причина и принятые меры записаны. После критического инцидента обязателен отдельный restore drill и короткое обновление этого runbook.