01. elastcsearch-monitor (es 監控)


這裏主要是學習一下es的monitor機制
首先是整個鏈路的數據都要監控的包括filebeat,logstash,kibana,es,都可以收集到es集羣中去。
借用es官方的一個圖
在這裏插入圖片描述

1.數據的蒐集目的地維度可以有兩個

  1. 監控數據放到原來的集羣,和存放業務數據的集羣是同一個集羣
  2. 監控數據放到新的集羣,監控數據單獨存放

2. 監控在一個集羣內的配置也可以有多個維度

  1. 有些配置是針對整個集羣的配置
  2. 有些配置只是針對es 或者kibana,或者logstash,或者kibana

3. 監控的實現方式也有多種

  1. 使用export
  2. 使用metricbeat

4. kibana配置監控

因爲kibana是用來顯示所有的監控數據的,他的監控數據也可以分發到任意的其他集羣。
kibana是使用node-server將數據發送到了對應的es當中,不像es,logstash可以使用exporter,metricbeat多種收集方式,

4.1 監控相關的通用配置

xpack.monitoring.enabled: true  打開監控的features,如果設置爲false,負責監控的進程的進程就不會啓動,
包括產生kibana的監控數據,包括去es中拉取對應的其他的比如es,logstash,filebeat等的監控數據。

下面3個配置的是kibana監控數據將發到那個es集羣
xpack.monitoring.elasticsearch.hosts
xpack.monitoring.elasticsearch.username
xpack.monitoring.elasticsearch.password

4.2 kibana的monitor-data相關

1. xpack.monitoring.kibana.collection.enabled: true 這個是設置收集kibana monitor data數據到es當中
2. xpack.monitoring.kibana.collection.interval: 監控數據收集的間隔ms

4.3 極簡集羣搭建

es的配置爲

cluster.name: dev-log
node.name: ES01
bootstrap.system_call_filter: false
network.host: 10.76.0.98
http.port: 12200
transport.port: 12300
discovery.seed_hosts: ["10.76.0.98:12300","10.76.3.145:12300","10.76.0.129:12300"]
cluster.initial_master_nodes: ["ES01", "ES02","ES03"]

此時的kibana配置

server.name: ch-dev
server.port: 45601
server.host: 10.76.0.129
elasticsearch.hosts: ["http://10.76.0.98:12200"]

此時可以看到沒有任何關於監控的顯式設置,監控相關都是使用的默認設置
啓動es之後,直接打開kibna,如果打開監控對應的菜單,顯示

We checked the cluster defaults settings and found
that xpack.monitoring.collection.enabled is set to false
Would you like to turn it on?

說明默認情況下數據並不能成功的收集到集羣當中去。還是需要開啓的。

4.4 開啓集羣監控功能

  通過上面的配置不能進行監控,並不是kibana的設置有問題,而是整個集羣的監控功能沒有開啓,xpack.monitoring.collection.enabled 配置就是針對整個集羣的配置,這個配置針對的是es,告訴es是否收集自己的monitor-data,是否接收由kibana,logstash,filebeat等發送過來的監控數據。這個可以直接通過api在集羣中進行動態的設置。也可以在每個es節點中進行設置。

4.4.1 通過es開啓集羣監控

如果在每個es節點中都設置

xpack.monitoring.collection.enabled: true

重啓整個集羣,kibana就不會有這個提示了,而且可以直接顯示出來監控面板
同時還有kibana的監控菜單裏面也有kibana的monitor-data

4.4.2 通過kibana開啓集羣監控

在kibana的提示下開啓監控:
這個時候是使用集羣的_cluster/setting api進行設置的
點擊完kibana的確認按鈕之後可以查詢接口查詢到cluster已經有了這樣的設置。

GET _cluster/settings  只能顯示動態配置的東西

{
  "persistent" : {
    "xpack" : {
      "monitoring" : {
        "collection" : {
          "enabled" : "true"
        }
      }
    }
  },
  "transient" : { }
}

4.5 kibana monitor-data的設置

如果將

xpack.monitoring.kibana.collection.enabled: false

添加到kibana的配置當中,那麼kibana的數據就從監控面板中消失了,但是es的數據還是有的

如果再添加一個設置

xpack.monitoring.enabled: false

kibana服務還可以訪問,但是監控的菜單直接消失了,就是所有的監控相關的功能都不再提供了,不會去es中拉取相關的數據了。
所以xpack.monitoring.enabled 控制的是kibana中提供監控展示等服務模塊是否還工作。

4.6 簡單回顧

在進一步學習之前,通過對kibana的監控配置簡單做一個回顧
集羣做了很多的默認配置,使監控變得更加簡單,但是默認情況下是無法進行監控的,需要通過

xpack.monitoring.collection.enabled: true

來開啓集羣的設置,然後kibana通過開啓

xpack.monitoring.enabled: true  打開監控的features,如果設置爲false,負責監控的進程的進程就不會啓動,包括產生kibana的監控數據,包括去es中拉取對應的其他的比如es,logstash,filebeat等的監控數據。

xpack.monitoring.elasticsearch.hosts  默認使用kibana連接的集羣,可以單獨配置
xpack.monitoring.elasticsearch.username  在集羣開啓security配置的時候才需要這個
xpack.monitoring.elasticsearch.password  同上
xpack.monitoring.kibana.collection.enabled: true 這個是設置收集kibana monitor-data數據到es當中,
xpack.monitoring.kibana.collection.interval: 10000  (10s)

5. logstash monitor-data設置

logstash相對於es和kibana需要設置的東西更少,因爲在整個監控鏈路中,es不僅作爲被監控對象,同時作爲監控數據的存儲庫,kibana不僅作爲被監控對象,而且是監控數據的展示終端,需要有專門的進程去對監控數據做聚合等查詢,而logstash則僅僅是作爲被監控對象存在。

5.1 監控相關的配置

  1. 首先要要保證集羣的監控功能開啓了,即
xpack.monitoring.collection.enabled: true

在es節點或者_cluster/setting當中進行設置了

  1. logstash自身的配置
    在config/logstash.yml中配置
xpack.monitoring.enabled: true # 默認配置
xpack.monitoring.elasticsearch.hosts: ["http://es-prod-node-1:9200", "http://es-prod-node-2:9200"]
xpack.monitoring.elasticsearch.username: "logstash_system"
xpack.monitoring.elasticsearch.password: "changeme"
xpack.monitoring.collection.interval: 10000

可以看到,直接通過xpack.monitoring.enabled控制了是否收集logstash的數據。
不像kibana中單獨使用了xpack.monitoring.kibana.collection.enabled來進行kibana數據是否蒐集的配置,同樣在es中也有一個類似的這樣的配置

5.2 logstash使用metrict作爲監控

在5.1中logstash使用的監控默認的是internal的collection收集方式
可以使用metricbeat來進行收集,應爲使用metricbeat是單獨部署的方式,後面再看

6. elasticsearch 的配置

es身兼的角色比較多,所以相關的配置也更多。

6.1 相關配置概覽

首先,集羣級別的配置

xpack.monitoring.collection.enabled: true

可以通過cluster-setting api進行設置,也可以通過在es的配置文件中進行設置

接下來是es的三個相關設置

xpack.monitoring.enabled: true 開啓當前node的monitor設置
xpack.monitoring.elasticsearch.collection.enabled: true 這個設置了是否收集es相關的data
xpack.monitoring.collection.interval: 10000

xpack.monitoring.collection.enabled: true的作用自不必多說,下面主要說一下其他兩個的作用

6.2 xpack.monitoring.enabled

當我在es的節點上設置

xpack.monitoring.enabled: false

出現了下面兩種情況

6.2.1 當前節點爲非master節點

只要這個節點不是master節點話,kibana上的監控都比較正常,有kibana的數據,也有es的數據,但是對應的那個設置爲false的es節點的數據沒有了。
這個也很自然,這個配置理論上至少可以達到禁止當前節點的monitor的效果。

6.2.2 當前節點爲master節點

如果master節點設置了

xpack.monitoring.enabled: false

打開kibana的監控菜單,會看到這樣的信息

You need to make some adjustments
To run monitoring please perform the following steps

We checked the nodeId: ADi2c-NmTnWhTmb2dDlCeA settings and found that xpack.monitoring.enabled is set to false set, which disables monitoring. Removing the xpack.monitoring.enabled: false setting from your configuration will put the default into effect and enable Monitoring.

在這裏插入圖片描述
也就是說這個應該是以master的爲主,在es集羣內生效,可能會導致kibana拿不到數據。

6.3 xpack.monitoring.elasticsearch.collection.enabled

這個配置的含義是比較直觀的,經過測試,確實是這樣,他的作用類似

xpack.monitoring.kibana.collection.enabled: true 這個是設置收集kibana monitor-data數據到es當中,

就是設置了當前node的數據是否收集到es當中
在實際測試中當master節點設置了false的話,kibana的顯示也是不正常的,監控菜單打不開,
在這裏插入圖片描述

但是這個時候kibana的數據實際上是能夠進入es的,因爲在調整爲true後發現es對應節點在過去的一段時間裏面是沒有數據的,但是kibana的數據是有的,所以是展示有一些問題,但是功能上和描述相差不大。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章