Elasticsearch 叢集健康狀態監控介面
阿新 • • 發佈:2019-02-01
說到 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頁)。
個人微信公眾號: