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 노드 삭제

더 알아보기 (Learn more)