1. 의존성 인식 준비성 검사 (기본 내장)
서버는 명확히 다른 역할을 가진 두 가지 프로브 엔드포인트를 제공합니다:| 엔드포인트 | 프로브 | 확인 항목 | 인증 |
|---|---|---|---|
GET /health | 활성(liveness) | 프로세스 정상 동작 여부 (항상 {"status":"ok"} 반환) | 없음 |
GET /ready | 준비(readiness) | 실제 서비스 가능 여부: Postgres + ClickHouse 연결 가능 여부 | 없음 |
/ready는 두 핵심 의존성이 모두 연결 가능한 경우 "status":"ready"와 모든 항목 "ok"와 함께 200을 반환하고, 하나라도 연결 불가능한 경우 "status":"not_ready"와 함께 503을 반환합니다. 두 응답 모두 간략한 본문을 포함합니다:
"ok", 설정되지 않은 경우 "not_configured"를 표시하며, "down" 상태는 절대 표시되지 않습니다.
번들로 제공되는 Kubernetes 매니페스트에서 준비(readiness) 프로브는 /ready를, 활성(liveness) 프로브는 /health를 가리킵니다. 그 결과: 실행 중이지만 데이터베이스에 연결할 수 없는 서버는 Service에서 제외되어 NotReady 상태로 표시되며, 아래에서 설명하는 클러스터 모니터링을 통해 알림을 받을 수 있습니다. 활성 프로브는 비용이 낮게 유지되므로, 일시적인 의존성 장애가 파드 재시작을 유발하지 않습니다. 프로브는 넉넉한 실패 임계값을 사용하므로, 순간적인 장애로 인해 레플리카가 로테이션에서 빠지는 현상이 발생하지 않습니다.
2. Robusta를 이용한 파드 장애 알림 (선택 사항)
Robusta는 Kubernetes 네이티브 모니터로, API 서버를 감시하고 파드 장애(CrashLoopBackOff, OOMKilled, ImagePullBackOff, Pending/NotReady, Failed, 퇴거)를 Slack으로 전달합니다. AgentEye에 직접 묻는 방식이 아닌 컨트롤 플레인을 관찰하기 때문에, AgentEye가 전혀 응답하지 못하는 상황에서도 알림이 발생합니다.
Robusta는 릴리스 번들에 선택적 애드온으로 포함되어 있습니다. 아래에 안내된 표준 Robusta Helm 차트와 소규모 values 파일을 사용하여 활성화하세요:
-
차트 저장소를 추가하고 해당 채널에 사용할 Slack 봇 토큰 (
xoxb-…)을 준비합니다:아래 설정은 모든 것을 클러스터 내부로 유지하므로 (disableCloudRouting: true), 토큰은 자체 호스팅 Slack 앱에서 가져옵니다.https://api.slack.com/apps에서 앱을 생성하고,chat:write봇 스코프를 추가한 후, 워크스페이스에 설치하고 Bot User OAuth Token (xoxb-…)을 복사한 다음, 채널에 봇을 초대합니다 (/invite @your-app). -
배포별 레이블 (
clusterName)과 Slack 채널을 포함한values.yaml을 생성하고,agenteye네임스페이스로 범위를 지정합니다: -
검증된 Robusta 차트 릴리스에
--version을 고정하여 설치합니다 (릴리스 목록). 테스트되지 않은 차트가 설치되는 것을 방지할 수 있습니다:
보고 항목
- Kubernetes 파드 상태 (어떤 AgentEye 파드가 실패하고 있으며 원인이 무엇인지)와 각 파드의 이미지 태그, 즉 실행 중인 컴포넌트의 버전.
- AgentEye 이벤트 데이터 및 고객 데이터는 클러스터 외부로 절대 유출되지 않습니다.
- 번들로 제공되는 values는 알림 범위를
agenteye네임스페이스로 제한하므로, 동일 클러스터의 관련 없는 워크로드는 보고되지 않습니다.
모든 배포를 한 곳에서
모든 배포의 Robusta가 하나의 공유 Slack 채널을 가리키도록 설정하되, 각 배포마다 고유한clusterName을 지정합니다. 모든 알림에 해당 레이블이 태그되므로, 단일 채널에서 전체 플릿의 상태를 확인할 수 있으며, 어떤 배포에 문제가 발생했는지 한눈에 파악할 수 있습니다.
클러스터 전체 장애
클러스터 내부에서만 동작하는 감시자는 클러스터 전체 또는 네트워크 장애를 보고할 수 없습니다 (클러스터와 함께 다운됩니다). 이 경우가 필요하다면, 선택적 Robusta UI 싱크를 활성화하세요:disableCloudRouting: false로 설정하고 robusta gen-config에서 발급받은 토큰과 함께 robusta_sink를 sinksConfig에 추가합니다. 이를 통해 다중 클러스터 통합 대시보드가 제공되며, 체크인이 중단된 클러스터를 플래그로 표시합니다.
문제 해결
“알림이 수신되지 않음” 및 “서버가 계속NotReady로 flapping됨” 문제는
enterprise-docs/troubleshooting.md의 상태 모니터링 섹션을 참조하세요.
