一、簡述
ES監控的最主要作用是用于監控ES的服務是否正常運作,以及在出現問題時為提供解決問題提供依據。目前ES監控主要針對三個級别分别是:叢集級别、節點級别和索引級别。
叢集級别的監控主要是針對整個ES叢集來說,包括叢集的健康狀況、叢集的狀态等。
節點級别的監控主要是針對每個ES執行個體的監控,其中包括每個執行個體的查詢索引名額和實體資源使用名額。
索引級别的監控主要是針對每個索引來說,主要包括每個索引的性能名額,由于是針對每個索引的監控,是以一般含有多個索引的ES叢集其索引級别的監控資料是非常多的。
針對這三類名額,首先叢集級别的名額其性能名額較少,但是其每個名額都非常重要,可以檢視叢集級别名額擷取ES叢集的運作狀态。其次,節點級别的名額更多的用于問題的排查,當發現叢集出現問題時更可能多的時候會直接定位到具體的ES執行個體,通過檢視單台執行個體的資源使用情況或者其他名額進行問題排查。最後,索引級别的監控的應用場景主要是為應用提供監控,例如某個應用使用到的索引其查詢速度變慢就可以通過索引級别的監控判斷是否是由于索引建立時一些不合理設定引起的。
二、叢集的監控
叢集的監控包括二個方面:叢集的健康狀況和叢集的運作狀況
1、叢集的健康狀态,通過api擷取:GET _cluster/health?pretty
2、叢集的狀況資訊
叢集狀态資訊主要包含整個叢集的一些統計資訊,例如文檔數、分片數、資源使用情況等。叢集狀态資訊可以由以下api擷取:GET _cluster/stats?pretty
三、節點監控
節點監控主要針對各個節點,有很多名額對于保證ES叢集的穩定運作非常重要。下面對節點監控名額進行介紹。節點名額可以通過以下api擷取:GET /_nodes/stats?pretty
備注:需要計算的名額分為兩類,分别為請求速率名額和請求處理延遲名額。
1、index_per_min:每分鐘索引請求數量。計算公式如下:
<code>索引請求率=(index_total兩次采集內插補點)/(系統時間內插補點(ms))×60000 (公式1)</code>
2、indexAverge_per_min:索引請求處理延遲。計算公式如下:
<code>索引延遲=(index_time_in_millis兩次采集內插補點)/(index_total兩次采集內插補點) (公式2)</code>
四、索引監控
索引監控名額注意針對單個索引,不過也可以通過"_all"對叢集種所有索引進行監控,節點名額可以通過以下api擷取:GET /_stats?pretty
備注
在節點監控和索引監控時可以擷取到一些操作資料,例如index、search、get等。對于這些名額參數有一些需要注意的地方:
search.query
query_total:查詢總數,指的每個分片上的查詢次數,一般如果有五個分片的話進行一次查詢query_total = 5。注意在統計名額的時候應該統計的是total分片的,不應該隻統計主分片的值,因為查詢請求不一定全部分發到主分片。
get
total:get請求數,一般get都需要指定文檔id。同樣get也應該統計total分片的值,如果隻統計主分片會造成資料變少,因為有時候的get請求不是從主分片取的資料。
indexing
index_total和index_time_in_millis名額是根據索引的文檔數來記錄,同樣需要統計total分片的資料,total分片包括副本的索引請求,一般1個副本的話index_total會乘以2。
search.fetch
一個查詢分為兩個階段,一是query另一個是fetch,fetch的情況與get相似,fetch.total指fetch請求數,fetch有可能從主分片拉取資料,也有可能從副本拉取資料。如果隻統計主分片的資料會丢失資料。