對於Elastic Stack監視的所有用戶,建議使用外部數據收集。
概括一下:
關閉Elastic Stack自帶的監控功能,然后使用metricbeat收集Elastic Stack數據傳輸到另外的Elastic Stack監控集群
背景
以前,Elastic Stack中的服務收集並傳送了自己的監視數據,該進程稱為內部收集進程(internal collection)。
通過引入外部收集,用戶可以與各種受監視的服務(例如Elasticsearch)一起運行Metricbeat,以收集有關其運行狀況和性能的監視數據並將其直接傳送到監視集群。
過去,Stack Monitoring要求先將所有監視數據發送到生產集群,然后再將其轉發到監視集群。 這種的設計不是我們所期望的,比如當我們的生產機器收到脅迫時,監視功能也有可能不能正常工作。
過去的設置要求通過生產集群路由監視數據
通過引入Metricbeat作為收集和運輸監視數據的代理,不再需要通過生產集群路由監視數據。 現在可以由獨立的輕量級監視代理程序收集監視數據,並將其直接發送到監視集群。
使用Metricbeat進行監視,可將所有數據直接路由到監視群集,而完全無需接觸生產群集
實踐操作
環境配置
使用兩個不同的集群來完成
生產集群和監控集群
把兩個集群都部署在同一個機器上,但是它們都分別位於不同的目錄中。
注意:通過解壓安裝包的辦法來進行安裝,並分別在兩個不同的目錄中進行安裝。需要按照上面的配置要求分別配置在Elasticsearch中的config/elasticsearch.yml及Kibana中的config/kibana.yml文件。另外為了能夠滿足監控的要求,必須對這兩個集群分別配置安全賬號。
分別訪問端口號是5601和5602的kibana,如果能看到兩個Kibana的界面,則表明我們的配置已經成功。
生產集群設置
端口為9200的集群是生產集群。為了能對它的數據進行監控,必須對它進行配置。打開端口為5601的Kibana,啟用監視數據收集:
PUT _cluster/settings
{
"persistent": {
"xpack.monitoring.collection.enabled": true
}
}
可以通過如下的指令來檢查修改后的結果:
GET _cluster/settings
同時禁用生產集群默認的Elasticsearch指標監控:
PUT _cluster/settings
{
"persistent": {
"xpack.monitoring.elasticsearch.collection.enabled": false
}
}
在生產集群上安裝Metricbeat
關閉默認啟動的system模塊,開啟elasticsearch-xpack模塊
./metricbeat modules disable system
./metricbeat modules enable elasticsearch-xpack
為了能夠監控生產集群(127.0.0.1:9200),必須把數據數據采集並發送到監控集群(127.0.0.1:9201),必須配置位於modules.d目錄下的elasticsearch-xpack.yml文件
- module: elasticsearch
metricsets:
- ccr
- cluster_stats
- enrich
- index
- index_recovery
- index_summary
- ml_job
- node_stats
- shard
period: 10s
hosts: ["http://localhost:9200"]
username: "elastic"
password: "123456"
xpack.enabled: true
在上面的配置中,它每隔10秒收集位於http://localhost:9200的集群的數據。在上面,采用了elastic這個超級用戶,同時你也需要根據自己的密碼進行修改。
為了能把數據傳入到http://localhost:9201,也需要對metricbeat.yml進行配置:
output.elasticsearch:
hosts: ["localhost:9201"] # 注意使用的是監控集群的端口號
username: "elastic"
password: "123456"
在上面我們把hosts配置為localhost:9201,也就是收集的數據需要傳入到這個集群里去。我們也需要根據我們自己的配置,修改上面的用戶名及密碼。
通過如下的命令來啟動metricbeat:
./metricbeat -e
監控集群
打開監控集群的Kibana界面http://localhost:5602
打開Stack Monitoring應用。在上面可以看到被監控的生產環境的端口地址為9200的集群。
總結
可以使用同樣的方法來對其它的Elastic Stack進行監控:
- Metricbeat logstash-xpack 模塊監控logstash
- Metricbeat beat-xpack 模塊監控beats
- Metricbeat kibana-xpack 模塊監控Kibana