ES 集群關鍵狀態指標
阿新 • • 發佈:2018-08-26
pri 文檔 限制 pool 查看 ast initial cto data ES監控狀態指標分三個級別:
1:集群級別:集群級別的監控主要是針對整個ES集群來說,包括集群的健康狀況、集群的狀態等。
2:節點級別:節點級別的監控主要是針對每個ES實例的監控,其中包括每個實例的查詢索引指標和物理資源使用指標。
3:索引級別:索引級別的監控主要是針對每個索引來說,主要包括每個索引的性能指標。
1集群級別:
查看方法:
api獲取:http://ip:9200/_cluster/health?pretty 或者 Kibana的開發工具Dev Tools中執行 :
查看集群健康狀態
GET _cluster/health
{ "cluster_name": "jp-pte-es-hot", "status": "green", "timed_out": false, "number_of_nodes": 46, "number_of_data_nodes": 30, "active_primary_shards": 4857, "active_shards": 12674, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 0, "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": 100 } 指標說明: status:集群狀態,分為green、yellow和red。 number_of_nodes/number_of_data_nodes:集群的節點數和數據節點數。 active_primary_shards:集群中所有活躍的主分片數。 active_shards:集群中所有活躍的分片數。 relocating_shards:當前節點遷往其他節點的分片數量,通常為0,當有節點加入或者退出時該值會增加。 initializing_shards:正在初始化的分片。 unassigned_shards:未分配的分片數,通常為0,當有某個節點的副本分片丟失該值就會增加。 number_of_pending_tasks:是指主節點創建索引並分配shards等任務,如果該指標數值一直未減小代表集群存在不穩定因素 active_shards_percent_as_number:集群分片健康度,活躍分片數占總分片數比例。 number_of_pending_tasks:pending task只能由主節點來進行處理,這些任務包括創建索引並將shards分配給節點。
查看集群狀態信息
#集群狀態信息 ,整個集群的一些統計信息,例如文檔數、分片數、資源使用情況等信息,從這個接口基本能夠獲取到集群所有關鍵指標項:
GET _cluster/stats?pretty
輸出數據量較大,省略 關鍵指標說明: indices.count:索引總數。 indices.shards.total:分片總數。 indices.shards.primaries:主分片數量。 docs.count:文檔總數。 store.size_in_bytes:數據總存儲容量。 segments.count:段總數。 nodes.count.total:總節點數。 nodes.count.data:數據節點數。 nodes. process. cpu.percent:節點CPU使用率。 fs.total_in_bytes:文件系統使用總容量。 fs.free_in_bytes:文件系統剩余總容量。
2:節點級別
節點監控
GET _nodes/stats/thread_pool?pretty
node線程組狀態
GET _nodes/stats/thread_pool?pretty
輸出信息較多部分省略。。。。。 。。。。。。。。。。。。。。。 "indices": { "docs": { "count": 8111612, # 顯示節點上有多少文檔 "deleted": 16604 # 有多少已刪除的文檔還未從數據段中刪除 }, "store": { "size_in_bytes": 2959876263 # 顯示該節點消耗了多少物理存儲 }, "indexing": { #表示索引文檔的次數,這個是通過一個計數器累加計數的。當文檔被刪除時,它不會減少。註意這個值永遠是遞增的,發生在內部索引數據的時候,包括那些更新操作 "index_total": 17703152, "is_throttled": false, "throttle_time_in_millis": 0 # 這個值高的時候,說明磁盤流量設置太低 }, 。。。。。。。。。。。。。。。 }, "search": { "open_contexts": 0, # 主動檢索的次數, "query_total": 495447, # 查詢總數 "query_time_in_millis": 298344, # 節點啟動到此查詢消耗總時間, query_time_in_millis / query_total的比值可以作為你的查詢效率的粗略指標。比值越大,每個查詢用的時間越多,你就需要考慮調整或者優化。 "query_current": 0, #後面關於fetch的統計,是描述了查詢的第二個過程(也就是query_the_fetch裏的fetch)。fetch花的時間比query的越多,表示你的磁盤很慢,或者你要fetch的的文檔太多。或者你的查詢參數分頁條件太大,(例如size等於1萬 "fetch_total": 130194, "suggest_current": 0 }, "merges": { # 包含lucene段合並的信息,它會告訴你有多少段合並正在進行,參與的文檔數,這些正在合並的段的總大小,以及花在merge上的總時間。 如果你的集群寫入比較多,這個merge的統計信息就很重要。merge操作會消耗大量的磁盤io和cpu資源。如果你的索引寫入很多,你會看到大量的merge操作 。。。。。。。。。。。。。。。 }, "fielddata": { #顯示了fielddata使用的內存,fielddata用於聚合、排序等。這裏也有一個淘汰數,不像filter_cache,這裏的淘汰數很有用,它必須是0或者接近0,因為fielddata 不是緩存,任何淘汰的代價都是很大的,必須要避免的。如果你看到了淘汰,你必須重新評估你的內存情況,關於fielddata的限制,以及查詢,或者三者全部。 。。。。。。。。。。。。。。。 }, "segments": { 告訴你當前節點的lucene 段的個數,這可能是一個很重要的數字。大多數的索引應該在50到150個段左右,即便是幾T大小的數十億的文檔。大量的段會帶來合並的問題(例如:合並趕不上段的產生)。註意這個統計是對一個節點上所有的索引而言的 其中內存的統計,可以告訴你Lucene的段自身需要多少內存。這裏包括基礎的數據結構,包括提交列表,詞典,bloom過濾器等。段的數量多會增加承載這些數據結構的開銷,這個內存的使用就是對這個開銷的度量。 關鍵指標說明: indices.docs.count:索引文檔數。 segments.count:段總數。 jvm.heap_used_percent:內存使用百分比。 thread_pool.{bulk, index, get, search}.{active, queue, rejected}:線程池的一些信息,包括bulk、index、get和search線程池,主要指標有active(激活)線程數,線程queue(隊列)數和rejected(拒絕)線程數量。 以下一些指標是一個累加值,當節點重啟之後會清零。 indices.indexing.index_total:索引文檔數。 indices.indexing.index_time_in_millis:索引總耗時。 indices.get.total:get請求數。 indices.get.time_in_millis:get請求總耗時。 indices.search.query_total:search總請求數。 indices.search.query_time_in_millis:search請求總耗時。 indices.search.fetch_total:fetch操作總數量。 indices.search.fetch_time_in_millis:fetch請求總耗時。 jvm.gc.collectors.young.collection_count:年輕代垃圾回收次數。 jvm.gc.collectors.young.collection_time_in_millis:年輕代垃圾回收總耗時。 jvm.gc.collectors.old.collection_count:老年代垃圾回收次數。 jvm.gc.collectors.old.collection_time_in_millis:老年代垃圾回收總耗時。
參考文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html
3:索引級別
索引級別
可以查看所有index的相關信息,方法如下:
GET _stats
輸出信息較多部分省略。。。。。
indexname.primaries.docs.count:索引文檔數量。
以下一些指標是一個累加值,當節點重啟之後會清零。
indexname.primaries.indexing.index_total:索引文檔數。
indexname.primaries.indexing.index_time_in_millis:索引總耗時。
indexname.primaries.get.total:get請求數。
indexname.primaries.get.time_in_millis:get請求總耗時。
indexname.primaries.search.query_total:search總請求數。
indexname.primaries.search.query_time_in_millis:search請求總耗時。indices.search.fetch_total:fetch操作總數量。
indexname.primaries.search.fetch_time_in_millis:fetch請求總耗時。
indexname.primaries.refresh.total:refresh請求總量。
indexname.primaries.refresh.total_time_in_millis:refresh請求總耗時。
indexname.primaries.flush.total:flush請求總量。
indexname.primaries.flush.total_time_in_millis:flush請求總耗時。
參考信息:
https://blog.csdn.net/joez/article/details/52171219
https://blog.csdn.net/u010824591/article/details/78614505
ES 集群關鍵狀態指標