1. 程式人生 > >Elasticsearch 叢集健康狀態監控介面

Elasticsearch 叢集健康狀態監控介面

        說到 Elasticsearch 叢集監控,首先我們肯定是需要一個從總體意義上的概要。不管是多大規模的叢集,告訴我正常還是不正常?沒錯,叢集健康狀態介面就是用來回答這個問題的,而且這個介面的資訊已經出於意料的豐富了。

命令示例

# curl -XGET 127.0.0.1:9200/_cluster/health?pretty
{
  "cluster_name" : "jiankunking-log",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes"
: 3, "active_primary_shards" : 2722, "active_shards" : 5444, "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.0 }

狀態資訊

        輸出裡最重要的就是 status 這行。很多開源的 ES 監控指令碼,其實就是拿這行資料做報警判斷。status 有三個可能的值:

  • green 綠燈,所有分片都正確執行,叢集非常健康。
  • yellow 黃燈,所有主分片都正確執行,但是有副本分片缺失。這種情況意味著
    ES 當前還是正常執行的,但是有一定風險。注意,在 Kibana4 的 server 端啟
    監控方案啟動邏輯中,即使是黃燈狀態,Kibana 4 也會拒絕啟動,死迴圈等待叢集狀態變成綠燈後才能繼續執行。
  • red 紅燈,有主分片缺失。這部分資料完全不可用。而考慮到 ES 在寫入端是
    簡單的取餘演算法,輪到這個分片上的資料也會持續寫入報錯。

其他資料解釋

  • number_of_nodes 叢集內的總節點數。
  • number_of_data_nodes 叢集內的總資料節點數。
  • active_primary_shards 叢集內所有索引的主分片總數。
  • active_shards 叢集內所有索引的分片總數。
  • relocating_shards 正在遷移中的分片數。
  • initializing_shards 正在初始化的分片數。
  • unassigned_shards 未分配到具體節點上的分片數。
  • delayed_unassigned_shards 延時待分配到具體節點上的分片數。

顯然,後面 4 項在正常情況下,一般都應該是 0。

level 請求引數

       介面請求的時候,可以附加一個 level 引數,指定輸出資訊以 indices 還是 shards級別顯示。當然,一般來說,indices 級別就夠了。

# curl -XGET http://127.0.0.1:9200/_cluster/health?level=indices
{
    "cluster_name": "jiankunking-log",
    "status": "green",
    "timed_out": false,
    "number_of_nodes": 3,
    "number_of_data_nodes": 3,
    "active_primary_shards": 2722,
    "active_shards": 5444,
    "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.0,
    "indices": {
        "metrics-daily-2018-03-19": {
            "status": "green",
            "number_of_shards": 6,
            "number_of_replicas": 1,
            "active_primary_shards": 6,
            "active_shards": 12,
            "relocating_shards": 0,
            "initializing_shards": 0,
            "unassigned_shards": 0
        },
        "metrics-daily-2018-03-14": {
            "status": "green",
            "number_of_shards": 6,
            "number_of_replicas": 1,
            "active_primary_shards": 6,
            "active_shards": 12,
            "relocating_shards": 0,
            "initializing_shards": 0,
            "unassigned_shards": 0
        },
        //......省略其他index.......
    }
}

       不過,一般來說,叢集健康介面,還是隻用來簡單監控一下叢集狀態是否正常。一旦收到異常報警,具體確定 unassign shard 的情況,更推薦使用 kopf 工具在頁面檢視。

更加詳細的獲取叢集、index資訊的介面,可以下載elk-stack-guide-cn.pdf來檢視(400到432頁)。

個人微信公眾號:
這裡寫圖片描述