Диагностика¶
Раздел собирает типичные отказы платформы Taimen в формате «симптом → причина → решение». Статьи сгруппированы по подсистемам; начинайте с общего порядка диагностики ниже, затем переходите к таблице своей подсистемы.
Общий порядок¶
flowchart TD
A[Симптом] --> B{make smoke зелёный?}
B -- нет --> C[docker compose ps: какой сервис не healthy]
C --> D[docker compose logs сервиса: первая ошибка]
D --> S[Установка и запуск]
B -- да --> E{Ответ API с кодом ошибки?}
E -- 401/403 --> F[Аутентификация и доступ]
E -- 503 --> G{Какой сервис?}
G -- IAM/JWKS/policy --> F
G -- память/контекст --> M[Память и контекст]
E -- нет, «ничего не происходит» --> R[Исполнение и runner]
E -- проблема в веб-консоли --> P[Панель и Keycloak]
Базовые команды — из корня клона суперпроекта:
make smoke # health всех запущенных сервисов
docker compose --profile "*" ps # статусы, healthcheck, рестарты
docker compose logs --since 15m <сервис> # логи
curl -s http://127.0.0.1:18000/health/ready # готовность Control Plane
curl -s http://127.0.0.1:18000/metrics | grep context_adapter
Как читать ошибки¶
Сервисы возвращают ошибки в разных форматах; код ошибки — главный ключ для поиска в таблицах раздела.
| Сервис | Формат тела ошибки | Где код |
|---|---|---|
| Control Plane | {"error": {"code", "message", "details", "requestId"}} |
error.code; requestId — ключ для поиска в логах |
| IAM | {"detail": "<code>"} |
detail (например, idempotency_key_required) |
| Memory Service | {"detail": "<текст>"} |
Человекочитаемый текст на русском |
| platform-api | {"error_code", "error_category", "message", "request_id", …} |
error_code (например, MISSING_TENANT_CLAIM, gateway.identity_rejected) |
Клиент control-plane (CLI, MCP, runner) |
Сообщение исключения | Код в начале: iam_credential_ambiguous, iam_environment_mode_required и т. п. |
Намеренно неинформативные ответы
Некоторые отказы специально не раскрывают причину, чтобы API не служил
оракулом для перебора. IAM отвечает одинаковым 401 invalid_token на
отозванный, истёкший, несуществующий PAT и PAT отключённого principal;
Control Plane отвечает 401 invalid_credentials и на битую подпись, и на
отсутствующий binding. Точная причина — только в audit IAM и логах
сервиса.
Статьи раздела¶
| Статья | Когда открывать |
|---|---|
| Установка и запуск | Не поднимается compose, контейнер unhealthy, ошибки сборки, миграций, прав на файлы, Caddy |
| Аутентификация и доступ | 401/403 от IAM и Control Plane, ошибки выпуска и обмена PAT, bindings, scopes |
| Исполнение и runner | Исполнитель не берёт задачи, падает, не публикует ветки, OOM, ошибки credential на runner-хосте |
| Память и контекст | Доставка в память встала, контекст деградирован, 401/403/503 от памяти, медленный поиск |
| Панель и Keycloak | Вход в веб-консоль, MISSING_TENANT_CLAIM, ошибки шлюза, 429, hydration error |
Что собрать перед обращением за помощью¶
- Коммит суперпроекта (
git rev-parse HEAD) иgit submodule status. - Вывод
docker compose --profile "*" ps. - Логи затронутого сервиса за период инцидента (без секретов: проверьте, что в выдержке нет токенов и паролей).
- Точный ответ API: статус, тело ошибки,
requestId/request_id. - Для исполнителя —
failure_reasonrun и фрагмент лога демона.