如果安裝ELK只是為了玩玩,可以單機(jī)搭建沒問題,但是真實(shí)業(yè)務(wù)運(yùn)行時(shí),必須考慮實(shí)用和效率問題。
ES client節(jié)點(diǎn): 作為ES節(jié)點(diǎn)的任務(wù)協(xié)調(diào)節(jié)點(diǎn),所有來自kibana的請求,全部到client節(jié)點(diǎn),它會(huì)智能的負(fù)載均衡到其他的ES data節(jié)點(diǎn)(Mapper階段),每個(gè)Data節(jié)點(diǎn)執(zhí)行請求后,將結(jié)果返回給Client節(jié)點(diǎn),Client節(jié)點(diǎn)聚合(Reduce階段)后將結(jié)果返回給Kibana。
腦裂: 假設(shè)集群包含兩個(gè)可參與master選舉的節(jié)點(diǎn),當(dāng)著兩個(gè)節(jié)點(diǎn)之間的網(wǎng)絡(luò)通信斷開時(shí),每個(gè)節(jié)點(diǎn)都認(rèn)為只有自己是可競選的節(jié)點(diǎn),當(dāng)minimum_master_nodes也設(shè)置為1時(shí),每個(gè)節(jié)點(diǎn)都選舉自己成為master(認(rèn)為另外一個(gè)節(jié)點(diǎn)是死的),這樣就會(huì)導(dǎo)致出現(xiàn)了兩個(gè)cluster,也稱腦裂。
準(zhǔn)備工作
安裝ELK之前,需要明確下面幾點(diǎn):
- 組網(wǎng)方式。集群有幾個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)上搭建哪些服務(wù)。
- 數(shù)據(jù)源。
- 兼容性。
組網(wǎng)方式
- kibana安裝在ES client節(jié)點(diǎn)(不要安裝在master或者Data節(jié)點(diǎn)上),因?yàn)閏lient節(jié)點(diǎn)有reduce階段,所以該節(jié)點(diǎn)盡量內(nèi)存和CPU充足些。
- 默認(rèn)情況下,ES節(jié)點(diǎn)既是master節(jié)點(diǎn)也是data節(jié)點(diǎn)。但是集群規(guī)模增大時(shí),需考慮將master節(jié)點(diǎn)和data節(jié)點(diǎn)分離
- minimum_master_nodes需要設(shè)置為(master_eligible_nodes / 2)+1 用來防止腦裂情況,兼顧高可用,master_eligible_nodes 最小值為3的奇數(shù),minimum_master_nodes最小值為2。
- logstash一般安裝至少兩個(gè)節(jié)點(diǎn),用來保證高可用。
數(shù)據(jù)源
數(shù)據(jù)從哪里獲取,這個(gè)能決定你選擇哪個(gè)版本的ELK。比如:若你的kafka集群是0.9.x的版本,你安裝了最新6.x的ELK,那么不好意思,該版本的logstash是無法從kafka獲取到數(shù)據(jù)的。
兼容性
Elasticsearch, Logstash, Kibana不同的版本之間,兼容性需考慮清楚。建議ELK選擇同一個(gè)版本安裝。
下面以安裝ELK6.2.4版本為例(Linux環(huán)境)
軟件下載:https://www.elastic.co/cn/products 根據(jù)平臺(tái)版本下載對應(yīng)的安裝包
環(huán)境要求: java版本是8或以上
組網(wǎng)方式
image.png
Elasticsearch
- 解壓:tar -zxvf elasticsearch-6.2.4.tar.gz
- 修改配置:
--1. jvm.options文件,主要修改下-Xms和-Xmx,建議都設(shè)置為內(nèi)存的50%左右
--2. elasticsearch.yml,主要修改
cluster.name: wm-es
node.name: bi1
path.data: /srv/nbs/0/elasticsearch/data
path.logs: /srv/nbs/0/elasticsearch/logs
network.host: esIp
http.port: 9200
discovery.zen.ping.unicast.hosts: ["es1_ip", "es2_ip", "es3_ip"]
discovery.zen.minimum_master_nodes: 2
bootstrap.system_call_filter: false
- 啟動(dòng)ES ./bin/elasticsearch -d
- 查看集群狀態(tài) GET /_cat/health?pretty GET /_cat/nodes?pretty
如果啟動(dòng)ES過程中報(bào)錯(cuò):vm.max_map_count 65530 is too low等問題,請root權(quán)限修改vm.max_map_count并重啟即可。
搭建ES-client節(jié)點(diǎn),需要在elasticsearch.yml中增加如下配置:
node.master: false
node.data: false
node.ingest: false
search.remote.connect: false
Logstash
- 解壓:tar -zxvf logstash-2.4.0.tar.gz
- 修改配置,新建kafka-pipeline.conf
input {
kafka {
bootstrap_servers => "10.194.xxx.yyy:9094,10.194.xxx.yyy:9094,10.194.xxx.yyy:9094"
auto_offset_reset => "latest"
group_id => "fenzhan"
id => "8.0.6"
client_id => "logstash-1"
check_crcs => "false"
topics => ["fenzhan.exception.online"]
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}"}
}
geoip {
source => "clientip"
}
}
output {
elasticsearch {
hosts => ["10.172.xxx.yyy:9200","10.172.xxx.yyy:9200","10.172.xxx.yyy:9200"]
index => "logstash-%{+YYYY.MM.dd}"
template_overwrite => true
}
}
- 檢查Logstash的配置
./bin/logstash -f kafka-pipeline.conf --config.test_and_exit - 檢查通過后,重載配置并啟動(dòng):
./bin/logstash -f kafka-pipeline.conf --config.reload.automatic - 查看進(jìn)程是否啟動(dòng) jps/ ps -ef |grep logstash
Kibana
- 解壓:tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz
- 修改kibana.yml配置
server.port: 5601
server.host: "10.171.xxx.yyy" //這個(gè)是外部瀏覽器訪問的地址
elasticsearch.url: "http://esIp:9200" //這個(gè)是集群內(nèi)部通信的
- 啟動(dòng)Kibana
./bin/kibana會(huì)提示是否啟動(dòng)成功,URL是啥
所有節(jié)點(diǎn)安裝完成,并啟動(dòng)成功之后,進(jìn)入Kibana的頁面,點(diǎn)擊Dev Tools進(jìn)入Console,就可以通過REST API 來查詢ES的數(shù)據(jù)。

安裝過程中,有任何問題,請留言?。?!
參考資料:
