Elastic Search

Ch11. 장애 방지를 위한 실시간 모니터링 - Cat API를 이용해 콘솔에서 모니터링 하기

webmaster 2025. 10. 15. 10:40
728x90

Cat API와 Rest API 차이

_cluster API로 클러스터를 관리하기 위한 대부분의 기능을 제공하지만, 결과를 JSON 형태로 제공하기 때문에 프로그램 환경에서 파싱 해서 사용하기 편리하다. 리눅스 쉘 환경에서는 콘솔 형태로 사용하는데, 이는 JSON 포맷과 친화적이지 못하다.

엘라스틱서치는 콘솔 사용자를 위해 _cat API를 제공하며, 콘솔과 친화적인 응답을 출력할 수 있다.

curl http://localhost:9200/_cat/master?v

  • 콘솔 친화적인 응답값을 받을 수 있다.

Cat API 공통 파라미터

1) v 파라미터

curl http://localhost:9200/_cat/master?v
  • _cat API는 기본적으로 반환되는 결과에는 헤더 라인이 빠져있다.
  • v 파라미터를 추가하면, 헤더라인을 포함해서 결과를 반환해준다. 

2) help 파라미터

curl http://localhost:9200/_cat/master?help
  • 헤더 라인에 제공되는 명칭을 자세하게 설명해준다.

3) h 파라미터

curl http://localhost:9200/_cat/master?v&h=host, node
  • 콘솔에서는 횡으로 많은 정보를 노출하기 힘들기 때문에 h 파라미터로 출력할 항목을 선택할 수 있다.

4) format 파라미터

 curl http://localhost:9200/_cat/master?format=json

콘솔에서 호출하는 Cat API

1) _cat/allocation API

curl http://localhost:9200/_cat/allocation?v
  • 각 데이터 노드에 할당된 샤드의 수와 사용 중인 디스크 공간의 정보를 출력한다.
  • 가장 기본적인 클러스터의 리소스 정보를 확인할 수 있다.

2) _cat/shards API

curl http://localhost:9200/_cat/shards?v
  • 샤드의 상태 정보를 확인할 수 있다.
  • 샤드의 종류, 가지고 있는 문서 수, 사용중인 디스크 공간에 대한 정보를 제공한다.

3) _cat/master API

curl http://localhost:9200/_cat/master?v
  • 마스터 노드의 정보를 확인할 수 있다.

4) _cat/nodes API

curl http://localhost:9200/_cat/nodes?v
  • 노드에서 사용중인 fielddata 메모리 정보를 조회할 수 있다.

5) _cat/tasks API

 curl http://localhost:9200/_cat/tasks?v
  • 클러스터에서 현재 동작 중인 Task를 확인할 수 있다.

6) _cat/indices API

curl http://localhost:9200/_cat/indices?v
  • 클러스터에 존재하는 인덱스의 정보를 확인할 수 있다.(루씬이 제공하는 정보다)
  • 엘라스틱서치 기준으로 정확한 문서 수를 세기 위해서는 _cat/count API를 조회해야 한다
    • 루씬 기준 count는 가상 문서가 포함되기 때문이다.

7) _cat/segments API

curl http://localhost:9200/_cat/segments?v
  • 샤드 내부에 존재하는 세그먼트의 정보를 확인할 수 있다.

8) _cat/count API

curl http://localhost:9200/_cat/count?v
  • 색인된 문서 수를 조회할 수 있다.
  • epoch 항목은 유닉스 시간을 의미한다.

9) _cat/recovery API

 curl http://localhost:9200/_cat/recovery?v
  • 현재 진행 중이거나, 완료된 샤드의 복구 정보를 확인할 수 있다.
    • 복구 이벤트는 특정 노드에 존재하는 샤드가 다른 노드로 이동할 때마다 발생한다.
    • Snaptshot Recovery, Replication Level 변경, 노드 장애 복구, 노드 시작 시 초기화등 작업 시 발생
  • 특정 이벤트만 필터링해서 볼 수도 있다(다양한 항목 조합)

10) _cat/health API

curl http://localhost:9200/_cat/health?v
  • 클러스터 health 체크 결과를 확인할 수 있다.

11) _cat/pending_tasks API

curl http://localhost:9200/_cat/pending_tasks?v
  • 큐에 대기 중인 Task 정보를 확인할 수 있다.

12) _cat/aliases API

curl http://localhost:9200/_cat/aliases?v
  • 인덱스에 설정된 별칭(alias) 정보를 확인할 수 있다.

13) _cat/thread_pool API

curl http://localhost:9200/_cat/thread_pool?v
  • 클러스터에 존재하는 스레드 풀의 통계 정보를 확인할 수 있다.
    • 스레드풀 상태는 active, queue, rejected로 분류된다.
  • 원하는 항목만 선택적으로 기입하면 해당 항목만 볼 수 있다.

14) _cat/plugins API

curl http://localhost:9200/_cat/plugins?v
  • 노드에 설치된 플러그인 정보를 확인할 수 있다.

15) _cat/fielddata API

curl http://localhost:9200/_cat/fielddata?v
  • 클러스터에서 사용 중인 fielddata 캐시의 메모리 정보를 확인할 수 있다.
  • 클러스터 운영 중에는 OOM이 발생하지 않도록 노드 별 fielddata를 항상 모니터링해야 한다.

16) _cat/nodeattrs API

curl http://localhost:9200/_cat/nodeattrs?v
  • 노드에 설정된 Attribute 설정 정보를 조회할 수 있다.
    • 최신 노드는 실행 시 attribute 속성 설정이 가능하다.

17) _cat/repositories API

curl http://localhost:9200/_cat/repositories?v
  • 스냅숏이 저장된 저장소 정보를 확인할 수 있다.

18) _cat/snapshots API

curl http://localhost:9200/_cat/snapshots/repo1?v&s=id
  • 스냅숏 정보를 확인할 수 있다.
  • 저장소 id를 알아야 호출할 수 있기 때문에 _cat/repositories API를 호출해 id를 알아야 한다.
    • 예시는 id가 "repo1"이다.

19) _cat/templates API

curl http://localhost:9200/_cat/templates?v
  • 클러스터에 존재하는 템플릿 정보를 확인할 수 있다.

 

 

 

728x90