bot: раздел «Статус» — контейнеры, health, запуск проверок #14

Closed
opened 2026-10-12 19:34:23 +03:00 by Eleboba · 2 comments
Owner

Описание

Требования S-1…S-5 из SPEC §4.2, ARCHITECTURE §2.6.

Желаемый результат

  • Сервис docker-proxy (только GET) в Compose; список контейнеров tgit.managed=true с 🟢/🟡/🔴/⚪.
  • Карточка: состояние, health, аптайм, рестарты, CPU/RAM от лимита, ревизия, время деплоя.
  • «🩺 Запустить проверки» → отчёт по каждому контейнеру: running, docker health, рестарты за 5 мин, CPU, RAM, ошибки в логе за 5 мин, HTTP-проба (если health_url).
  • «🔄 Обновить»; P2 «♻️ Перезапустить» для админа (через runner).
  • Фоновый сбор container_snapshots раз в 15 с (нужен проверкам и алертам).

Подзадачи

  • Compose: docker-proxy, сокет только в нём, read-only
  • app/runtime/docker.py — клиент Docker API
  • app/runtime/checks.py — независимые проверки + отчёт
  • app/runtime/snapshots.py
  • app/bot/routers/status.py
  • Тесты на фейковом Docker API

Анализ

Затрагиваемые файлы

Файл Что меняется
app/runtime/ новый пакет
app/bot/routers/status.py новый
docker-compose.yml docker-proxy
config/checks.yaml новый

Ограничения и риски

Proxy не разрешает POST. Проверки — с таймаутами, одна упавшая проверка не роняет отчёт.

Как проверить

Запустить hello и examples/unhealthy → в отчёте hello всё ✅, у unhealthy ❌ docker health.


Лог выполнения

2026-10-13

  • Задача переписана под SPEC v2 (QR-доступ, меню из 4 разделов, командная модель — ADR-011…013).
## Описание Требования S-1…S-5 из [SPEC](https://gitea.24studbank.ru/HSE/tgit/src/branch/dev/docs/SPEC.md) §4.2, [ARCHITECTURE](https://gitea.24studbank.ru/HSE/tgit/src/branch/dev/docs/ARCHITECTURE.md) §2.6. ## Желаемый результат - Сервис `docker-proxy` (только GET) в Compose; список контейнеров `tgit.managed=true` с 🟢/🟡/🔴/⚪. - Карточка: состояние, health, аптайм, рестарты, CPU/RAM от лимита, ревизия, время деплоя. - «🩺 Запустить проверки» → отчёт по каждому контейнеру: running, docker health, рестарты за 5 мин, CPU, RAM, ошибки в логе за 5 мин, HTTP-проба (если `health_url`). - «🔄 Обновить»; P2 «♻️ Перезапустить» для админа (через runner). - Фоновый сбор `container_snapshots` раз в 15 с (нужен проверкам и алертам). ## Подзадачи - [ ] Compose: `docker-proxy`, сокет только в нём, read-only - [ ] `app/runtime/docker.py` — клиент Docker API - [ ] `app/runtime/checks.py` — независимые проверки + отчёт - [ ] `app/runtime/snapshots.py` - [ ] `app/bot/routers/status.py` - [ ] Тесты на фейковом Docker API ## Анализ ### Затрагиваемые файлы | Файл | Что меняется | |------|--------------| | `app/runtime/` | новый пакет | | `app/bot/routers/status.py` | новый | | `docker-compose.yml` | docker-proxy | | `config/checks.yaml` | новый | ### Ограничения и риски Proxy не разрешает POST. Проверки — с таймаутами, одна упавшая проверка не роняет отчёт. ## Как проверить Запустить `hello` и `examples/unhealthy` → в отчёте `hello` всё ✅, у `unhealthy` ❌ docker health. --- ## Лог выполнения ### 2026-10-13 - Задача переписана под SPEC v2 (QR-доступ, меню из 4 разделов, командная модель — ADR-011…013).
Eleboba added this to the M2 · CD и мониторинг milestone 2026-10-12 19:34:23 +03:00
Eleboba added the botfeaturesize/1 labels 2026-10-12 19:34:23 +03:00
Eleboba self-assigned this 2026-10-12 19:34:23 +03:00
Eleboba added a new dependency 2026-10-12 19:43:19 +03:00
Eleboba changed title from bot: мониторинг приложений, /status, /stop, /restart to bot: раздел «Статус» — контейнеры, health, запуск проверок 2026-10-13 22:53:42 +03:00
Author
Owner

2026-10-17

  • PR #44: docker-socket-proxy, клиент Docker, проверки, снапшоты, экран «Статус». CI зелёный, смоук против настоящего Docker пройден (POST → 403).
  • S-5 «Перезапустить» не сделан: ждёт runner (#13).
### 2026-10-17 - PR #44: docker-socket-proxy, клиент Docker, проверки, снапшоты, экран «Статус». CI зелёный, смоук против настоящего Docker пройден (POST → 403). - S-5 «Перезапустить» не сделан: ждёт runner (#13).
Author
Owner

Смержено в dev через PR #44 — закрываю.

Смержено в `dev` через PR #44 — закрываю.
Sign in to join this conversation.