目的
Elasticsearch の稼働状況を確認するためのAPIが多数提供されている中で、簡易チェックによく使われる _cat API を使ってリスポンスを確認していきます。
ここでは 計17個 のエンドポイントを試します。
方法
Dockerで構築したElasticsearch および Kinaba を使います。
APIは Kinaba のConsoleから実行します。
バージョンは 7.8.1 です。
実践
health エンドポイント
クラスタの状態をチェックするのに使う。
よく使いそう。
v を付けることで、カラムヘッダも含めて表示できます。
GET _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
1612869853 11:24:13 es-docker-cluster green 3 3 14 7 0 0 0 0 - 100.0%
status について
green: インデックスのすべてのプライマリシャード、レプリカシャードが配置されている状態
yellow: プライマリシャードはすべて配置されているが、配置できていないレプリカシャードがある状態
red: 配置できていないプライマリシャードがある状態
※red の状態の場合、クラスタは部分的に機能するが、利用可能なシャードに対してのみ検索が可能な状態(基本的に使いものにならない)
indices エンドポイント
各インデックスの状態をチェックするのに使う。
よく使いそう。
&bytes=kb のように指定することで、出力する単位を指定できます。
GET _cat/indices?v&bytes=kb
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .apm-custom-link 93A-2XM_RICumCTXwnApxg 1 1 0 0 0 0
green open .kibana_task_manager_1 C8-C_saeQuOTjJW3KGGhoA 1 1 5 4 103 48
green open my_index 44PEsk44QrOjcKRcCh6F3Q 1 1 0 0 0 0
aliases エンドポイント
各インデックスエイリアスの状態をチェックするのに使う。
あまり使わない?
GET _cat/aliases?v
alias index filter routing.index routing.search is_write_index
.kibana_task_manager .kibana_task_manager_1 - - - -
.kibana .kibana_1 - - - -
ilm-history-2 ilm-history-2-000001 - - - true
.kibana-event-log-7.8.1 .kibana-event-log-7.8.1-000001 - - - true
allocation エンドポイント
シャードの割り当て状況をチェックする。
よく使いそう。
GET _cat/allocation?v
shards disk.indices disk.used disk.avail disk.total disk.percent host ip node
4 106.7kb 24.4gb 37.3gb 61.7gb 39 172.30.10.3 172.30.10.3 es03
5 141.3kb 24.4gb 37.3gb 61.7gb 39 172.30.10.1 172.30.10.1 es01
5 92.8kb 24.4gb 37.3gb 61.7gb 39 172.30.10.2 172.30.10.2 es02
count エンドポイント
クラスタ内のドキュメント数をチェックする。インデックス別でチェック可能。
よく使いそう。
GET _cat/count?v
epoch timestamp count
1612873952 12:32:32 37
または、インデックス指定の場合
GET _cat/count/my_index?v
fielddata エンドポイント
fielddata 用に使用されているヒープメモリ量をチェックする。
メモリ不足の調査に使用する?
GET _cat/fielddata?v
id host ip node field size
eUJQohRmTzK_SyFavIGaVQ 172.30.10.1 172.30.10.1 es01 type 0b
master エンドポイント
現マスターノードの情報を取得する。
どのノードがマスターであるかをチェック。
GET _cat/master?v
id host ip node
eUJQohRmTzK_SyFavIGaVQ 172.30.10.1 172.30.10.1 es01
nodes エンドポイント
ノードの状態を取得する。このコマンドからもどれがマスターノードであるかわかる。
よく使いそう。
GET _cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.30.10.2 35 86 4 0.60 0.31 0.18 dilmrt - es02
172.30.10.3 67 93 4 0.60 0.31 0.18 dilmrt - es03
172.30.10.1 23 92 4 0.60 0.31 0.18 dilmrt * es01
nodeattrs エンドポイント
ノード属性を取得する。
あまり使わない?属性がより多様になっていくのかもしれないが。
GET _cat/nodeattrs?v
node host ip attr value
es02 172.30.10.2 172.30.10.2 ml.machine_memory 1073741824
es02 172.30.10.2 172.30.10.2 ml.max_open_jobs 20
es02 172.30.10.2 172.30.10.2 xpack.installed true
es02 172.30.10.2 172.30.10.2 transform.node true
es03 172.30.10.3 172.30.10.3 ml.machine_memory 1073741824
es03 172.30.10.3 172.30.10.3 ml.max_open_jobs 20
es03 172.30.10.3 172.30.10.3 xpack.installed true
es03 172.30.10.3 172.30.10.3 transform.node true
es01 172.30.10.1 172.30.10.1 ml.machine_memory 1073741824
es01 172.30.10.1 172.30.10.1 xpack.installed true
es01 172.30.10.1 172.30.10.1 transform.node true
es01 172.30.10.1 172.30.10.1 ml.max_open_jobs 20
pending_tasks エンドポイント
未処理のタスク情報を取得する。
何らかのパフォーマンス問題を抱えている時に調査で使用できそう。
GET _cat/pending_tasks?v
insertOrder timeInQueue priority source
xxx xxx xxx xxx
recovery エンドポイント
シャードリカバリの状況を取得する。
シャードに問題があった際はよく使う。
GET _cat/recovery?v
index shard time type stage source_host source_node target_host target_node repository snapshot files files_recovered files_percent files_total bytes bytes_recovered bytes_percent bytes_total translog_ops translog_ops_recovered translog_ops_percent
.apm-custom-link 0 506ms existing_store done n/a n/a 172.30.10.1 es01 n/a n/a 0 0 100.0% 1 0 0 100.0% 208 0 0 100.0%
.apm-custom-link 0 881ms peer done 172.30.10.1 es01 172.30.10.2 es02 n/a n/a 0 0 0.0% 0 0 0 0.0% 0 0 0 100.0%
.kibana_task_manager_1 0 1s existing_store done n/a n/a 172.30.10.1 es01 n/a n/a 0 0 100.0% 25 0 0 100.0% 26961 0 0 100.0%
.kibana_task_manager_1 0 1.8s peer done 172.30.10.1 es01 172.30.10.3 es03 n/a n/a 0 0 0.0% 0 0 0 0.0% 0 0 0 100.0%
repositries エンドポイント
スナップショットリポジトリの配置先を取得する。
スナップショットを使う際は重宝する。
GET _cat/repositories?v
id type
xxx xxx
thread_pool エンドポイント
スレッドプールの状態を取得する。
パフォーマンスに問題がある際に、どこがボトルネックになっているのか調査に使えるかもしれない。
GET _cat/thread_pool?v
node_name name active queue rejected
es02 analyze 0 0 0
es02 ccr 0 0 0
es02 fetch_shard_started 0 0 0
es02 fetch_shard_store 0 0 0
es02 flush 0 0 0
es02 force_merge 0 0 0
es02 generic 0 0 0
es02 get 0 0 0
es02 listener 0 0 0
es02 management 1 0 0
shards エンドポイント
シャードの状態を取得する。
よく使いそう。
GET _cat/shards?v
index shard prirep state docs store ip node
.kibana_1 0 r STARTED 35 80.5kb 172.30.10.1 es01
.kibana_1 0 p STARTED 35 80.6kb 172.30.10.2 es02
.apm-custom-link 0 p STARTED 0 208b 172.30.10.1 es01
.apm-custom-link 0 r STARTED 0 208b 172.30.10.2 es02
.apm-agent-configuration 0 p STARTED 0 208b 172.30.10.2 es02
.apm-agent-configuration 0 r STARTED 0 208b 172.30.10.3 es03
my_index 0 p STARTED 0 208b 172.30.10.1 es01
my_index 0 r STARTED 0 208b 172.30.10.2 es02
.kibana_task_manager_1 0 p STARTED 5 48.5kb 172.30.10.1 es01
.kibana_task_manager_1 0 r STARTED 5 54.8kb 172.30.10.3 es03
segments エンドポイント
Lucene セグメントレベルでの情報を取得する。
理解するために、Lucene の知識が欲しい。
GET _cat/segments?v
index shard prirep ip segment generation docs.count docs.deleted size size.memory committed searchable version compound
.kibana_task_manager_1 0 p 172.30.10.1 _19 45 1 4 12.8kb 3708 true true 8.5.1 false
.kibana_task_manager_1 0 p 172.30.10.1 _1a 46 0 1 10.5kb 0 true false 8.5.1 true
.kibana_task_manager_1 0 p 172.30.10.1 _1b 47 0 3 10.5kb 0 true false 8.5.1 true
.kibana_task_manager_1 0 p 172.30.10.1 _1c 48 1 0 6.2kb 2500 true true 8.5.1 true
.kibana_task_manager_1 0 p 172.30.10.1 _1d 49 3 0 7.6kb 3020 true true 8.5.1 true
snapshots エンドポイント
スナップショットの状態を取得する。
一覧として取得するのに便利。
GET _cat/snapshots?v
templates エンドポイント
テンプレートの状態を取得する。
一覧として取得するのに便利。
GET _cat/templates?v
name index_patterns order version composed_of
.ml-config [.ml-config] 0 7080199
.transform-notifications-000002 [.transform-notifications-*] 0 7080199
ilm-history [ilm-history-2*] 2147483647 2
.ml-notifications-000001 [.ml-notifications-000001] 0 7080199
.kibana-event-log-7.8.1-template [.kibana-event-log-7.8.1-*] 0
さすがElasticsearch全ての操作をAPIで提供するという哲学もあって、たくさんのAPIが提供されていて、とても便利(そう)に使えるAPIも多い。
すべてを理解するのは大変だが、何か調べる必要がある際に一つの手段として取り出せるようにしておきたい。