目前單機配置的ELK訪問 Kibana 的時候,出現非常緩慢的問題,可能是大量的寫入佔用了太多的資源,影響了數據查詢的速度,所以現在將ElasticSearch改爲集羣配置,目前單機繼續擴容的想法,這樣也可以充分利用其它機器的性能來提供日誌寫入和查詢的速度
我們 ELK 選擇的版本是 7.1.0 的版本,集羣配置主要是對 ElasticSearch 的配置做一定的修改,配置後結構如下圖:
首先開始配置 ElasticSearch 的配置信息
cluster.name: "elk-cluster"
node.name: elk-pro4
network.host: 0.0.0.0
network.publish_host: 172.19.99.39
node.master: true
node.data: true
discovery.type: zen
discovery.seed_hosts:
- 172.19.99.37:9300
- 172.19.99.38:9300
- 172.19.99.39:9300
cluster.initial_master_nodes:
- elk-pro3
- elk-pro2
- elk-pro4
這裏配置了三臺主機,每臺機器都保存數據且可以競選master,因爲版本是 7.1.0 的版本,所以之前版本都是需要配置一個 minimum_master_nodes 參數來防止某一臺脫離集羣后發生腦裂的問題,所以網上資料一般都會要求這個配置爲2,起碼有兩臺機器競選才能選出master,但是在7.0之後的版本, 官方因爲很多用戶的錯誤配置反而增加了集羣腦裂的風險所以刪除了這個參數,所以不需要再配置這個參數,可以參考 https://www.elastic.co/cn/blog/elasticsearch-7-0-0-released
三臺機器都配置好後,重啓之前配置的Docker-compose 即可啓動新的 ElasticSearch 服務
然後需要修改 Logstash 的配置參數,支持集羣配置,通過修改文件 logstash/pipeline/logstash.conf
input {
tcp {
port => 5000
codec => json
}
}
## Add your filters / logstash plugins configuration here
output {
elasticsearch {
hosts => ["172.19.19.37:9200","172.19.19.38:9200","172.19.19.39:9200"]
index => "logstash-api-%{+YYYY.MM.dd}"
}
}
日誌記錄的 index 按日來滾動,方便日後管理
Kibana 本身就只能連接一臺ElasticSearch,所以不需要做什麼配置,可以連接任意一臺,或者專門跑一個不保存數據且不會競選的 ElasticSearch 專門給 Kibana 的連接集羣也行,目前的問題可能就是 Kibana 連接的 ElasticSearch 如果掛了,就會直接無法查看日誌了