Для проверок живости Galleon предоставляет два эндпоинта без аутентификации:

ЭндпоинтНазначениеОтветы
GET /healthzПроцесс жив и отвечает200
GET /readyzДоступна база данных200; 503 при недоступной базе

healthz подходит для liveness-проб, readyz — для readiness-проб и проверки готовности после развёртывания.

Ограничение доступа

Доступ к health-эндпоинтам ограничен списком адресов server.monitoring_allowlist; по умолчанию — только loopback, поэтому локальные проверки работают без настройки, а запросы из сети отклоняются.

Правила:

  • проверяется адрес TCP-соединения; заголовки X-Forwarded-* не учитываются — запрос через обратный прокси оценивается по адресу самого прокси;
  • отказ неотличим от несуществующего пути (404); причина видна только в логе (deny_reason=monitoring_ip_denied);
  • явно заданный пустой список запрещает доступ всем, включая локальные проверки;
  • значение 0.0.0.0/0 открывает эндпоинты всем.
server:
  monitoring_allowlist: ["127.0.0.0/8", "::1/128", "10.0.0.0/8"]

Если проверки приходят не с loopback, в списке нужны их адреса: для внешнего мониторинга через обратный прокси — адрес самого прокси. Точный адрес источника виден в access-логе отклонённого запроса — поле client_ip в записи с deny_reason=monitoring_ip_denied.

Наблюдение за инстансом

Наблюдение строится на логах и средствах PostgreSQL:

  • Лог сервера — три поля, отсутствующие на здоровом трафике, дают готовые мониторы: sqlstate (ошибки базы), deny_reason (отказы доступа), served_stale (деградация внешних реестров). Подробнее — в разделе Логирование.
  • Состояние соединений с внешними реестрами — колонка «Источник» на странице «Настройки» → «Репозитории» (Репозитории).
  • PostgreSQL — стандартные средства: активность по именам приложений galleon и galleon-oci-meta (соединения, обслуживающие образы контейнеров, идут без метки), размер базы, медленные запросы.
  • Диск — заполнение каталога хранилища.