1. Осведомленная о зависимостях готовность (встроено)
Сервер предоставляет два конечных точки проверки с намеренно разными функциями:| Конечная точка | Проверка | Что проверяется | Аутентификация |
|---|---|---|---|
GET /health | liveness | процесс запущен (всегда {"status":"ok"}) | нет |
GET /ready | readiness | может фактически обслуживать: Postgres + ClickHouse доступны | нет |
/ready возвращает 200 с "status":"ready" и всеми проверками "ok" когда обе жесткие зависимости доступны, и 503 с "status":"not_ready" когда хотя бы одна недоступна. Оба ответа содержат небольшое тело:
"ok" когда кеш сконфигурирован и "not_configured" иначе; он никогда не будет "down".
В комплектных манифестах Kubernetes проверка readiness указывает на /ready, а liveness остается на /health. Эффект: сервер, который запущен, но не может достичь базы данных, удаляется из Service и отображается как NotReady — состояние, на которое может среагировать мониторинг кластера (см. ниже), при этом liveness остается недорогой, так что кратковременный сбой зависимости никогда не вызовет перезагрузку пода. Проверка использует щедрый порог отказа, поэтому мгновенный сбой не вызовет колебания реплик из ротации.
2. Оповещение об отказах подов с Robusta (опционально)
Robusta — монитор, нативный для Kubernetes, который отслеживает сервер API и отправляет сообщения об отказах подов (CrashLoopBackOff, OOMKilled, ImagePullBackOff, Pending/NotReady, Failed, вытеснения) в Slack. Поскольку он наблюдает за плоскостью управления, а не запрашивает AgentEye, он генерирует оповещения даже когда AgentEye вообще не может обслуживать.
Robusta поставляется как опциональный компонент в комплект выпуска. Включите его с помощью стандартного Helm-чарта Robusta и небольшого файла значений, показанного ниже:
-
Добавьте репозиторий чарта и получите токен бота Slack (
xoxb-…) для канала:Поскольку конфигурация ниже держит все внутри кластера (disableCloudRouting: true), токен поступает от самохостируемого приложения Slack: создайте приложение наhttps://api.slack.com/apps, добавьте область ботаchat:write, установите его в свой workspace, скопируйте Bot User OAuth Token (xoxb-…) и пригласите бота на канал (/invite @your-app). -
Создайте
values.yamlс меткой для каждого развертывания (clusterName) и вашим каналом Slack, ограниченным пространством именagenteye: -
Установите, закрепив
--versionна известную хорошую версию Robusta-чарта (releases) так, чтобы вы никогда не устанавливали непроверенный чарт:
Что он отчитывает
- Состояние пода Kubernetes (какой под AgentEye отказал и почему) и тег образа каждого пода, то есть версия запущенного компонента.
- Никакие данные события AgentEye и никакие данные клиентов никогда не покидают кластер.
- Комплектные значения ограничивают оповещения пространством имен
agenteye, поэтому несвязанные рабочие нагрузки в том же кластере не отчитываются.
Одно место для каждого развертывания
Направьте Robusta каждого развертывания на один общий канал Slack, каждый с собственнымclusterName. Каждое оповещение помечено этой меткой, поэтому один канал показывает здоровье вашего целого флота, и вы можете определить, какое развертывание затронуто с первого взгляда.
Полные сбои кластера
Чисто внутренний наблюдатель кластера не может отчитаться о сбое всего кластера или сети (он выходит из строя вместе с кластером). Если вам это нужно, включите опциональный Robusta UI sink: установитеdisableCloudRouting: false и добавьте robusta_sink (с токеном из robusta gen-config) в sinksConfig. Это добавляет агрегированную многокластерную панель управления и отмечает любой кластер, который перестал проверяться.
Устранение неполадок
Смотрите раздел Health Monitoring в enterprise-docs/troubleshooting.md для «оповещения не поступают» и «сервер продолжает переключатьсяNotReady».
