Перейти к содержанию

Диагностика

Раздел собирает типичные отказы платформы 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_reason run и фрагмент лога демона.

См. также