[Elasticsearch Monitor]Elasticsearchを監視する方法(二)
8267 ワード
前回の記事では、Elasticsearchをどのように監視するかについて、主にEsサーバに対してどのような指標を監視すべきかについて説明しました.本稿では,es apiにおける各統計指標の意味を紹介することを目的とする.
Elasticsearch’s RESTful API + JSON
デフォルトでは、Elasticsearchは9200ポートでrestful httpサービスを提供し、クラスタ、ノード、インデックス状況のJSON結果を返します.主に5つのHTTP REST APIがElasticsearchを監視するために使用できる: Cluster Health API Cluster Stats API Node Stats API Index Stats API Pending Tasks API
次の表では、検索性能、インデックス性能、メモリ性能、ネットワーク性能に対応するESAPIについてまとめています.いくつかのパフォーマンスデータは、ノード次元およびインデックス次元で検索パフォーマンスが提供されるなど、複数の次元から記述されています.
Metric category
Availability
Search performance metrics
Node Stats API, Index Stats API
Indexing performance metrics
Node Stats API, Index Stats API
Memory and garbage collection
Node Stats API, Cluster Stats API
Network metrics
Node Stats API
Cluster health and node availability
Cluster Health API
Resource saturation and errors
Node Stats API, Index Stats API, Cluster Stats API, Pending Tasks API
(一)Cluster Health API
Cluster Health APIは、クラスタの健康状態を記述するJSONオブジェクトデータを提供する.
APIインタフェース:
戻り結果JSON:
(二)Cluster Stats API
Cluster Stats APIは、クラスタ次元の情報を提供します.基本的にはNode Stats APIのデータの総和です.各ノードの詳細はありませんが、クラスタ全体の現在の動作状態をすばやく把握できます.
APIインタフェース:
Indicesとnodesの内部属性の意味はNode Stats APIで紹介されます
(三)Node Stats API
Node Stats APIは、クラスタの各サーバの状態を監視するために非常に有用なAPIです.それは私たちが監視したい主な指標を統計して、私たちが前に列挙した大部分の指標を含む.
APIインタフェース:クエリ性能指標、プレフィックスindices.search.*の指標 インデックス性能指標、接頭辞indices.indexing.* ,indices.refresh.* ,indices.flush.* の指標 Cache性能指標、プレフィックスindices.query_cache.* ,indices.fielddata.* ,indices.request_cache.* を選択します.Fielddataはメモリ消費の大きなユーザーになる可能性がありますので、特に注意が必要です. os指標 process指標、専用とes jvmプロセスの資源消費指標 JVM性能指標、プレフィックスjvm.*の指標、メモリ使用及びGC指標 スレッドプール性能指標、接頭辞thread_pool.*の指標 ファイルシステム指標 クラスタ通信指標
Elasticsearch’s RESTful API + JSON
デフォルトでは、Elasticsearchは9200ポートでrestful httpサービスを提供し、クラスタ、ノード、インデックス状況のJSON結果を返します.主に5つのHTTP REST APIがElasticsearchを監視するために使用できる:
次の表では、検索性能、インデックス性能、メモリ性能、ネットワーク性能に対応するESAPIについてまとめています.いくつかのパフォーマンスデータは、ノード次元およびインデックス次元で検索パフォーマンスが提供されるなど、複数の次元から記述されています.
Metric category
Availability
Search performance metrics
Node Stats API, Index Stats API
Indexing performance metrics
Node Stats API, Index Stats API
Memory and garbage collection
Node Stats API, Cluster Stats API
Network metrics
Node Stats API
Cluster health and node availability
Cluster Health API
Resource saturation and errors
Node Stats API, Index Stats API, Cluster Stats API, Pending Tasks API
(一)Cluster Health API
Cluster Health APIは、クラスタの健康状態を記述するJSONオブジェクトデータを提供する.
APIインタフェース:
GET _cluster/health
戻り結果JSON:
{
"cluster_name": "elasticsearch",
"status": "yellow",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 11,
"active_shards": 11,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 10,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 52.38095238095239
}
status
合計3つの状態:green
すべてのプライマリスライスおよびバックアップスライスが割り当てられ、クラスタが100%健全であることを示す.yellow
すべてのプライマリスライスが割り当てられているが、少なくとも1つのバックアップスライスが割り当てられていないことを示す.データは失われず、検索結果は完全です.ただし、高可用性は失われ、データが失われるリスクがあり、黄色で警告されます.red
少なくとも1つのマスタースライスが未割当てであり、このマスタースライスのすべてのスライスが失われていることを示す.データが失われ、検索結果が不完全で、このスライスインデックスデータに異常が発生します.number_of_nodes
とnumber_of_data_nodes
は、名前からノード数とデータノード数であることがわかります.active_primary_shards
クラスタ内のすべてのindexのマスタースライス数の合計.active_shards
クラスタ内のすべてのindexのスライス数の合計、バックアップスライスを含む.relocating_shards
、移動中のスライス数.通常は0であり,クラスタrebalanceの場合に変化する.(二)Cluster Stats API
Cluster Stats APIは、クラスタ次元の情報を提供します.基本的にはNode Stats APIのデータの総和です.各ノードの詳細はありませんが、クラスタ全体の現在の動作状態をすばやく把握できます.
APIインタフェース:
GET _cluster/stats
{
"_nodes": {
"total": 1,
"successful": 1,
"failed": 0
},
"cluster_name": "elasticsearch",
"timestamp": 1500175210218,
"status": "yellow",
"indices": {
"count": 11,
"shards": {...},
"docs": {...},
"store": {...},
"fielddata": {...},
"query_cache": {...},
"completion": {...},
"segments": {...}
},
"nodes": {
"count": {...},
"versions": [...],
"os": {...},
"process": {...},
"jvm": {...},
"fs": {...},
"plugins": [...],
"network_types": {...}
}
}
Indicesとnodesの内部属性の意味はNode Stats APIで紹介されます
(三)Node Stats API
Node Stats APIは、クラスタの各サーバの状態を監視するために非常に有用なAPIです.それは私たちが監視したい主な指標を統計して、私たちが前に列挙した大部分の指標を含む.
APIインタフェース:
GET _nodes/stats ( node _nodes/node1,node2/stats)
{
"_nodes": {
"total": 1,
"successful": 1,
"failed": 0
},
"cluster_name": "elasticsearch",
"nodes": {
"SdRLvOO7RKSiaBW_hmwvZg": {
"name": "node1",
"indices": {...},
"os": {...},
"process": {...},
"jvm": {...},
"thread_pool": {...},
"fs": {...},
"transport": {...},
"http": {...}
}
...
}
}
indices.search.query_total
問合せ総量indices.search.query_time_in_millis
合計照会時間indices.search.query_current
処理中の問合せ量indices.search.fetch_total
クエリの第2段階fetch総量indices.search.fetch_time_in_millis
fetch所要時間indices.search.fetch_current
処理中のfetch数indices.indexing.index_total
インデックス総量indices.indexing.index_time_in_millis
インデックス消費時間indices.indexing.index_current
処理中のインデックス量indices.refresh.total
リフレッシュメモリ総量indices.refresh.total_time_in_millis
メモリ更新にかかる時間indices.flush.total
同期ディスク総量indices.flush.total_time_in_millis
同期ディスク消費時間indices.query_cache.memory_size_in_bytes
クエリー・キャッシュ・サイズindices.query_cache.evictions
クエリー・キャッシュの消去サイズindices.fielddata.memory_size_in_bytes
fielddataキャッシュサイズindices.fielddata.evictions
fielddataキャッシュ消去サイズindices.request_cache.memory_size_in_bytes
全リクエストキャッシュサイズindices.request_cache.evictions
全リクエストキャッシュ消去サイズos.cpu.percent
システムCPU使用率os.cpu.load_average.1m
システムCPU 1分平均loados.cpu.load_average.5m
システムCPU 5分平均loados.cpu.load_average.15m
システムCPU 15分平均loados.mem.free_percent
システムメモリ使用率os.mem.used_percent
システムメモリ使用率os.mem.total_in_bytes
システムメモリ総サイズos.mem.free_in_bytes
システムメモリ使用可能サイズos.mem.used_in_bytes
システムメモリ使用サイズos.swap.total_in_bytes
システムswap総サイズos.swap.free_in_bytes
システムswap利用可能サイズos.swap.used_in_bytes
システムswap使用済サイズprocess.cpu.percent
プロセスCPU使用率process.cpu.total_in_millis
プロセスCPU使用時間process.mem.total_virtual_in_bytes
プロセス使用可能な仮想メモリサイズprocess.open_file_descriptors
プロセスオープンファイルハンドル数process.max_file_descriptors
プロセス利用可能ハンドル数jvm.gc.collectors.young.collection_count
young gcサイズjvm.gc.collectors.young.collection_time_in_millis
young gc所要時間jvm.gc.collectors.old.collection_count
old gcサイズjvm.gc.collectors.old.collection_time_in_millis
old gc消費時間jvm.mem.heap_used_percent
メモリ使用率jvm.mem.heap_used_in_bytes
メモリ使用量jvm.mem.heap_committed_in_bytes
メモリ使用量thread_pool.bulk.queue
thread_pool.index.queue
thread_pool.search.queue
thread_pool.merge.queue
・各キュー長thread_pool.bulk.rejected
thread_pool.index.rejected
thread_pool.search.rejected
thread_pool.merge.rejected
各キューオーバーフロー量(未実行、放棄)fs.total.total_in_bytes
データディレクトリ合計サイズfs.total.free_in_bytes
データディレクトリ残量fs.total.vailable_in_bytes
データディレクトリ利用可能サイズtransport.rx_count
クラスタ通信で受信したパケット総数transport.rx_size_in_bytes
クラスタ通信で受信したデータの合計サイズtransport.tx_count
クラスタ通信で送信されるパケット総数transport.tx_size_in_bytes
クラスタ通信で送信されるデータの合計サイズtransport.server_open
クラスタ通信のための接続数