cat API의 기본 엔드 포인트는 /_cat이다. 매개 변수가 없이 호출하면 cat API에 사용할 수 있는 모든 엔드 포인트를 표시한다.
curl -XGET 'localhost:9200/_cat'
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates
각각의 cap api 요약을 한다면 다음과 같다.
- 클러스터에서 현재 실행 중인 작업
- 세그먼트 통계
- 세그먼트 통계(특정 인덱스로 제한)
- 샤드 할당 - 관련 정보
- 필드 데이터 캐시 크기
- 개별 필드의 필드 데이터 캐시 크기
- 복구 정보
- 복구 정보(특정 인덱스로 제한)
- 클러스터에 등록된 스냅샷 저장소 정보
- 사용자 정의 노드의 속성 정보
- 색인 통계
- 색인 통계(특정 색인으로 제한)
- 특정 저장소에 속한 모든 스냅샷에 대한 정보
- 각 노드에 설치된 플러그인
- 특정 별명의 인덱스 앨리어스와 인덱스
- 마스터 정보(선출된 마스터 표시 포함)
- 마스터 노드 정보
- 클러스터 상태
- 실행 대기 중인 작업
- 클러스터당 노드별 쓰레드 풀 정보
- 클러스터당 노드별 단일 또는 다중 스레드 풀에 대한 스레드 풀 정보
- 전체 클러스터 또는 개별 인덱스의 다큐먼트 개수
- 모든 샤드 관련 정보(특정 인덱스로 제한)
클러스터 상태 정보를 보려면 다음을 호출한다.
$ curl -XGET 'localhost:9200/_cat/health'
1496739863 18:04:23 elasticsearch yellow 1 1 60 60 0 0 41 0 - 59.4%
컬럼 내용을 보이게 하려면 v를 추가한다.
$ curl -XGET 'localhost:9200/_cat/health?v'
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1496740013 18:06:53 elasticsearch yellow 1 1 60 60 0 0 41 0 - 59.4%
help 커맨드를 사용하면 헤더 내용을 알 수 있다.
$ curl -XGET 'localhost:9200/_cat/health?help'
epoch | t,time | seconds since 1970-01-01 00:00:00
timestamp | ts,hms,hhmmss | time in HH:MM:SS
cluster | cl | cluster name
status | st | health status
node.total | nt,nodeTotal | total number of nodes
node.data | nd,nodeData | number of nodes that can store data
shards | t,sh,shards.total,shardsTotal | total number of shards
pri | p,shards.primary,shardsPrimary | number of primary shards
relo | r,shards.relocating,shardsRelocating | number of relocating nodes
init | i,shards.initializing,shardsInitializing | number of initializing nodes
unassign | u,shards.unassigned,shardsUnassigned | number of unassigned shards
pending_tasks | pt,pendingTasks | number of pending tasks
max_task_wait_time | mtwt,maxTaskWaitTime | wait time of longest task pending
active_shards_percent | asp,activeShardsPercent | active number of shards in percent
특정 헤더만 보고 싶다면 다음을 실행한다.
$ curl -XGET 'localhost:9200/_cat/health?h=cluster,status'
elasticsearch yellow
용량을 알아서 보여주지만, bytes=b로 하면 바이트로, bytes=mb는 메가 바이트로 표현할 수 있다.
$ curl -XGET 'localhost:9200/_cat/indices'
yellow open books SO4qsDCoSIK2y0Hb3OcBpQ 5 1 2 0 7.4kb 7.4kb
$ curl -XGET 'localhost:9200/_cat/indices?bytes=b'
yellow open books SO4qsDCoSIK2y0Hb3OcBpQ 5 1 2 0 7646 7646
/_cat/master REST 엔드 포인트를 호출하면 노드에 대한 정보와 현재 노드 중 하나를 마스터로 선출할 수 있다.
$ curl -XGET 'localhost:9200/_cat/master?v'
id host ip node
5OEGj_avT8un0nOak28qQg 127.0.0.1 127.0.0.1 5OEGj_a
응답에서 알 수 있듯이 현재 어떤 노드가 마스터로 선출되었는지에 대한 정보를 얻었다. 노드의 식별자, IP 주소, 이름을 볼 수 있다.
node 정보를 확인할 수 있다.
참고로 노드 이름, 노드의 역할(노드가 마스터(m), 데이터(a), ingest(i) 또는 클라이언트(-) 노드인지 여부), 노드의 부하(load_1m, load_5m ,load_15m), 가동 시간(uptime)을 선택하려면 다음과 같이 진행할 수 있다.
(참고: https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-nodes.html)
$ curl -XGET 'localhost:9200/_cat/nodes?v&h=name,node.role,load,uptime'