4.7 KiB
work_item, stage, author_agent, status, created_at, model_used
| work_item | stage | author_agent | status | created_at | model_used |
|---|---|---|---|---|---|
| ORCH-063 | architecture | architect | proposed | 2026-06-09 | claude-opus-4-8 |
07 — Инфра-требования: ORCH-063 — мониторинг диска mva154 + алерт при ≥85%
Work Item: ORCH-063 · Repo: orchestrator (self-hosting) · Стадия: architecture
I-1. Топология / окружения
Топология не меняется. Watchdog работает внутри существующего контейнера orchestrator
(8500, network_mode: host) и опирается на уже существующие bind-mount'ы host-разделов:
/home/slin/repos → /repos(рабочие репозитории, git-worktree/repos/_wt/...);./data → /app/data(SQLite БД).
Именно эта host-ФС переполнилась 07.06. Замер ведётся по смонтированным путям /repos, /app/data
(shutil.disk_usage), что отражает хост-раздел, а не overlay / контейнера (NFR-3/AC-8). Новых
контейнеров/портов/томов/сетей не требуется. Тот же демон автоматически работает и в staging-инстансе
(8501) — на собственной Ф С/путях, без отдельной настройки.
I-2. Переменные окружения / секреты
Новые env (дескрипторы — в .env.example; без секретов):
| Env | Дефолт | Назначение |
|---|---|---|
ORCH_DISK_MONITOR_ENABLED |
true |
kill-switch (false → демон не стартует, нулевая регрессия). |
ORCH_DISK_MONITOR_INTERVAL_S |
300 |
период heartbeat-замера, сек. |
ORCH_DISK_MONITOR_THRESHOLD_PCT |
85 |
порог заполнения для алерта. |
ORCH_DISK_MONITOR_REALERT_S |
21600 |
cooldown повторного алерта выше порога (~6 ч). |
ORCH_DISK_MONITOR_PATHS |
/repos,/app/data |
CSV отслеживаемых host-путей. |
Telegram-доставка использует существующие секреты send_telegram (ORCH_TELEGRAM_* /
.env) — новых секретов не вводится. Дефолты пригодны для прода без обязательной правки .env
(env опциональны — все имеют значения по умолчанию в config.py).
I-3. Деплой / рестарт
- Изменение не требует специальной инфра-процедуры сверх штатного self-hosting-деплоя
(staging 8501 → прод 8500 через
Confirm Deploy, ORCH-059/036). - Self-hosting инвариант соблюдён: watchdog только читает заполнение и шлёт уведомление — не рестартит/не роняет прод-контейнер, не выполняет действий над диском (NFR-6). Безопасен для enduro-trails в общем инстансе.
- Демон стартует/останавливается автоматически в
main.lifespan(ручной запуск не нужен, AC-1/AC-8).
Реакция оператора на алерт (runbook-минимум)
При получении Telegram-алерта «Диск mva154 ≥ порога»:
- Зайти на хост (
slin@82.22.50.71), проверитьdf -h /home/slin/repos. - Освободить место (кандидаты — порядок ручной очистки): прунинг старых git-worktree
/home/slin/repos/_wt/*завершённых задач;docker image prune/docker builder prune; ротация/удаление старых логов. Авто-очистка — вне объёма ORCH-063 (отдельная задача). - Дождаться recovery-сообщения «диск ниже порога» (приходит однократно при возврате под порог).
Развёрнутый раздел про disk-watchdog (что мониторится, порог, как отключить
ORCH_DISK_MONITOR_ENABLED, реакция на алерт) добавляется вdocs/operations/INFRA.mdна стадии development (TRZ §9, AC-9).
I-4. CI/CD
Без изменений .gitea/workflows/. Новый код покрывается существующим pytest tests/ (юнит-тесты
pure-логики decide_action/measure_paths/format_* + изоляция never-raise — TRZ/AC-3/AC-6).