Проверка состояния сервисов

Healthcheck показывает, может ли Gramax Enterprise Server принимать запросы и какие его функции работают с ошибками. Используйте health endpoints в Kubernetes, балансировщике или системе мониторинга, чтобы отличить полный отказ сервиса от проблемы отдельного модуля.

Настроить healthcheck

  1. Создайте общий секрет и передайте одинаковое значение в контейнеры Enterprise и портала документации:

    HEALTHCHECK_TOKEN={СЕКРЕТНЫЙ_КЛЮЧ}
  2. Чтобы Enterprise собирал состояние портала документации, передайте его внутренний адрес в контейнер Enterprise:

    DOCPORTAL_SERVICE_URL=http://docportal:3000

    Если переменная не задана, Enterprise показывает только собственное состояние.

  3. Ограничьте доступ к health endpoints на уровне внутренней сети. Подробные ответы защищены токеном, но probes доступны без авторизации для Kubernetes и балансировщиков.

Health endpoints

Endpoint

Назначение

Авторизация

HTTP-коды

/health/liveness

Проверяет, что сервис работает и может отвечать на HTTP-запросы

Не требуется

200, 503

/health/readiness

Проверяет, что критичные функции готовы принимать запросы

Не требуется

200, 503

/health

Возвращает подробное состояние модулей одного сервиса

HEALTHCHECK_TOKEN

200, 401, 503

/health/services

Возвращает состояние Enterprise и подключенных сервисов

HEALTHCHECK_TOKEN

200, 401, 503

/health/services доступен на Enterprise. Остальные endpoints есть у Enterprise и портала документации.

Имена probes

Используйте /health/liveness и /health/readiness. Пути /health/live и /health/ready не входят в контракт GES.

Проверить состояние

Проверьте liveness без токена:

curl https://{ges_url}/health/liveness

Успешный ответ:

{ "status": "healthy" }

Проверьте readiness:

curl https://{ges_url}/health/readiness

Получите подробное состояние Enterprise:

curl \ -H "Authorization: Bearer {СЕКРЕТНЫЙ_КЛЮЧ}" \ https://{ges_url}/health

Получите общий снимок GES:

curl \ -H "Authorization: Bearer {СЕКРЕТНЫЙ_КЛЮЧ}" \ https://{ges_url}/health/services

Enterprise обновляет состояние портала документации в фоне. Проверка выполняется раз в 5 минут с timeout 10 секунд. Снимок старше 15 минут считается устаревшим.

Состояние после запуска

Health endpoints не ожидают завершения фоновых проверок. Сразу после запуска некоторые модули могут вернуть код с окончанием _INITIALIZING. Повторите запрос после завершения первой проверки.

Статусы сервисов

Статус

Что означает

HTTP-ответ подробного endpoint

healthy

Все включенные модули работают

200

degraded

Есть предупреждение или отказ некритичного модуля

200

unhealthy

Не работает критичный модуль

503

unreachable

Enterprise не смог получить healthcheck подключенного сервиса

Для обязательного сервиса /health/services возвращает 503

Статус unreachable формирует только Enterprise. Он означает, что сервис не ответил, отклонил токен, вернул ответ неизвестного формата или его health endpoint недоступен. Статус unhealthy означает, что сервис ответил и сам сообщил о критичной ошибке.

Состояния модулей

Подробный ответ содержит объект checks со статусом каждого модуля:

Состояние

Что означает

enabled

Модуль включен и проверяется

disabled

Модуль намеренно выключен настройками

misconfigured

Модуль должен работать, но настроен неверно

Поле critical показывает, влияет ли отказ модуля на готовность всего сервиса. Поле code содержит стабильный код причины, а checkedAt — время последней проверки.

Пример сокращенного ответа:

{ "status": "degraded", "service": "enterprise", "checks": { "git-proxy": { "state": "enabled", "status": "degraded", "critical": true, "code": "GIT_SERVER_TOKEN_EXPIRING", "checkedAt": "2026-09-01T10:00:00.000Z" }, "postgresql": { "state": "disabled", "critical": false, "checkedAt": "2026-09-01T10:00:00.000Z" } } }

Проверяемые модули

Enterprise проверяет:

  • Enterprise API, конфигурацию и модуль управления правами доступа.

  • Лицензию и срок ее действия.

  • Git Proxy, доступность Git-сервера и срок действия GIT_SERVER_TOKEN.

  • PostgreSQL, если он включен через ENTERPRISE_DB_TYPE.

  • Metrics, если для них доступен PostgreSQL.

Портал документации проверяет:

  • Чтение контента: ошибки реального открытия каталогов и статей.

  • Auto-pull: запуск и результат последнего обновления контента.

  • Поиск: доступность настроенного поискового модуля.

Выключенный некритичный модуль не ухудшает общий статус. Например, если PostgreSQL не настроен и переменные ENTERPRISE_DB_* не переданы, postgresql и зависящий от него metrics отображаются как disabled.