1. 程式人生 > >ES 集群關鍵狀態指標

ES 集群關鍵狀態指標

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 集群關鍵狀態指標