1. 程式人生 > >Elasticsearch叢集健康

Elasticsearch叢集健康

叢集健康 (cluster health):ES叢集監控資訊中的一種,用status表示,status可為green,yellow,red。當status為green時,說明所有的主分片和副本分片都可用;當status為green時,說明所有的主分片都可用,但不是所有的副本分片都可用;當status為red時,說明不是所有的主分片都可用,在這種情況下,可用的主分片依然可提供搜尋請求服務。

查詢叢集健康可使用_cat  API或者_cluster API。

1、使用_cat API查詢叢集健康狀況,如下:

GET /_cat/health?v

響應內容如下:

epoch      timestamp cluster    status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 
1537015892 20:51:32  my-esLearn yellow          1         1     10  10    0    0       10             0                  -                 50.0% 

從響應內容中可知,叢集名為"my-esLearn",叢集健康狀況(status)為yellow。

將所有節點都啟動之後,再次查詢叢集健康狀況,叢集健康狀況(status)為green,結果如下:

epoch      timestamp cluster    status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 
1537016682 21:04:42  my-esLearn green           3         3     29  13    1    0        0             0                  -                100.0% 

本例中一共三個節點,由node.total可知,一共三個節點,也可使用_cat API查詢每個節點更詳細的資訊,如下:

GET /_cat/nodes?v

節點資訊如下:

host      ip        heap.percent ram.percent  load node.role master name   
127.0.0.1 127.0.0.1            3          70 -1.00 d         m      node-3 
127.0.0.1 127.0.0.1            7          70 -1.00 d         *      node-1 
127.0.0.1 127.0.0.1            5          70 -1.00 d         m      node-2 

由以上結果可知,節點名稱分別為:node-1、node-2、node-3

2、使用_cluster API查詢叢集健康狀況,如下:

GET /_cluster/health

查詢結果如下:

{
  "cluster_name": "my-esLearn",
  "status": "green",
  "timed_out": false,
  "number_of_nodes": 3,
  "number_of_data_nodes": 3,
  "active_primary_shards": 13,
  "active_shards": 29,
  "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
}