Keeper HTTP API와 대시보드
Keeper HTTP API와 대시보드 (Keeper HTTP API and Dashboard)
ClickHouse Keeper는 모니터링, 상태 점검, 스토리지 관리를 위한 HTTP API와 임베디드 웹 대시보드를 제공해요. 웹 브라우저나 HTTP 클라이언트로 클러스터 상태를 확인하고, 명령을 실행하며, Keeper 스토리지를 관리할 수 있습니다.
출처: 문서
본문
ClickHouse Keeper는 모니터링, 상태 점검, 스토리지 관리를 위한 HTTP API와 임베디드 웹 대시보드를 제공합니다. 이 인터페이스를 통해 운영자는 웹 브라우저나 HTTP 클라이언트로 클러스터 상태를 검사하고, 명령을 실행하며, Keeper 스토리지를 관리할 수 있어요.
구성 (Configuration)
HTTP API를 활성화하려면 keeper_server 설정에 http_control 섹션을 추가합니다:
<keeper_server>
<!-- Other keeper_server configuration -->
<http_control>
<port>9182</port>
<!-- <secure_port>9443</secure_port> -->
</http_control>
</keeper_server>
구성 옵션 (Configuration Options)
| 설정 | 기본값 | 설명 |
|---|---|---|
http_control.port |
- | 대시보드와 API용 HTTP 포트 |
http_control.secure_port |
- | HTTPS 포트(SSL 구성 필요) |
http_control.readiness.endpoint |
/ready |
readiness 프로브용 커스텀 경로 |
http_control.storage.session_timeout_ms |
30000 |
storage API 작업용 세션 타임아웃 |
엔드포인트 (Endpoints)
대시보드 (Dashboard)
- 경로:
/dashboard - 메서드: GET
- 설명: Keeper를 모니터링하고 관리하기 위한 임베디드 웹 대시보드를 제공합니다
대시보드가 제공하는 것:
- 실시간 클러스터 상태 시각화
- 노드 모니터링(역할, 지연 시간, 연결)
- 스토리지 브라우저
- 명령 실행 인터페이스
대시보드 Cluster 탭 (Cluster tab)
Cluster 탭은 Raft 멤버십을 토폴로지 그래프와 테이블로 렌더링합니다. 각 멤버는 상태 색상으로 표시됩니다:
- 초록 — 살아 있고 리더와 동기화됨
- 노랑 — 살아 있지만
stale_log_gap로그 항목 이상으로 리더보다 뒤처짐 - 빨강 — 도달 불가능(heartbeat 만료 창 안에 성공적인 Raft 응답 없음)
- 회색 — 알 수 없음(피어 상태는 리더에서만 볼 수 있으며, 팔로워는 피어를 알 수 없음으로 봄)
테이블은 또한 각 멤버의 역할(leader, follower, observer), Raft 우선순위, 마지막 로그 인덱스, 리더 기준 복제 지연, 마지막 성공적인 Raft 응답 이후 시간을 보여줍니다. 현재 노드가 리더가 아닌 경우, 탭은 완전한 피어 상태를 볼 수 있는 리더의 대시보드를 여는 딥링크를 제공합니다. 탭은 /dashboard?tab=cluster로 직접 열 수 있습니다.
readiness 프로브 (Readiness Probe)
- 경로:
/ready(구성 가능) - 메서드: GET
- 설명: 상태 점검 엔드포인트
성공 응답 (HTTP 200):
{
"status": "ok",
"details": {
"role": "leader",
"hasLeader": true
}
}
명령 API (Commands API)
- 경로:
/api/v1/commands/{command} - 메서드: GET, POST
- 설명: Four-Letter Word 명령 또는 ClickHouse Keeper Client CLI 명령을 실행합니다
쿼리 파라미터:
command- 실행할 명령cwd- 경로 기반 명령을 위한 현재 작업 디렉터리(기본값:/)
예시:
# Four-Letter Word command
curl http://localhost:9182/api/v1/commands/stat
# ZooKeeper CLI command
curl "http://localhost:9182/api/v1/commands/ls?command=ls%20'/'&cwd=/"
스토리지 API (Storage API)
- 기본 경로:
/api/v1/storage - 설명: Keeper 스토리지 작업을 위한 REST API
Storage API는 REST 규칙을 따르며 HTTP 메서드가 작업 유형을 나타냅니다:
| 작업 | 경로 | 메서드 | 상태 코드 | 설명 |
|---|---|---|---|---|
| Get | /api/v1/storage/{path} |
GET | 200 | 노드 데이터 가져오기 |
| List | /api/v1/storage/{path}?children=true |
GET | 200 | 자식 노드 나열 |
| Exists | /api/v1/storage/{path} |
HEAD | 200 | 노드 존재 여부 확인 |
| Create | /api/v1/storage/{path} |
POST | 201 | 새 노드 생성 |
| Update | /api/v1/storage/{path}?version={v} |
PUT | 200 | 노드 데이터 업데이트 |
| Delete | /api/v1/storage/{path}?version={v} |
DELETE | 204 | 노드 삭제 |