個(gè)人環(huán)境
(1)Centos 7.0
(2)ELK-5.2.0-linux-x64
(3)filebeat-6.2.3-linux-x86
(4) jdk-8u141-linux-x64
(5)kafka_2.11-2.2.1
注:ELK一定要用同一個(gè)版本,不同版本之間會有各種各樣的坑。其他軟件可以使用不同版本。在這里,我分享了ELK的版本,其他的大家用自己的也行。這里給你們分享一個(gè)時(shí)空穿梭器:https://download.csdn.net/download/D_Janrry/12409286
拓?fù)鋱D
架構(gòu)解讀: (整個(gè)架構(gòu)從左到右,總共分為5層)
第一層、數(shù)據(jù)采集層
最左邊的是業(yè)務(wù)服務(wù)器集群,上面安裝了filebeat做日志采集,同時(shí)把采集的日志分別發(fā)送給兩個(gè)logstash服務(wù)。
第二層、數(shù)據(jù)處理層,數(shù)據(jù)緩存層
logstash服務(wù)把接受到的日志經(jīng)過格式處理,轉(zhuǎn)存到本地的kafka + zookeeper集群中。
第三層、數(shù)據(jù)轉(zhuǎn)發(fā)層
這個(gè)單獨(dú)的Logstash節(jié)點(diǎn)會實(shí)時(shí)去kafka+zookeeper集群拉數(shù)據(jù),轉(zhuǎn)發(fā)至ES集群上。
第四層、數(shù)據(jù)持久化存儲
ES集群會把收到的數(shù)據(jù),寫磁盤,建索引庫。
第五層、數(shù)據(jù)檢索,數(shù)據(jù)展示
ES Master + Kibana 主要協(xié)調(diào)ES集群,處理數(shù)據(jù)檢索請求,數(shù)據(jù)展示。
環(huán)境初始化
1.節(jié)點(diǎn)規(guī)劃
因?yàn)樘摂M機(jī)有限,我就只能在一臺機(jī)器上部署所有軟件了。當(dāng)然,兩臺、三臺、四臺、五臺都可以。
2.配置主機(jī)名
hostnamectl set-hostname bigdata1
su -l
....
3 .處理防火墻
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
4.同步時(shí)鐘源
yum install ntpdate ntp -y
ntpdate cn.pool.ntp.org
hwclock --systohc
5.安裝常用軟件
yum install net-tools bash-completion wget vim? -y
6.JDK安裝
安裝過于簡單,咱們就跳過去了,相信大家都會
以上步驟三個(gè)節(jié)點(diǎn)都需要完成。
ELK安裝
1.ES安裝
其實(shí)本實(shí)驗(yàn)最難安裝的就是es,因?yàn)樗偶尤胍粋€(gè)head插件,Elasticsearch5.x版本以后,head插件已經(jīng)是一個(gè)獨(dú)立的Web App了,所以不需要和Elasticsearch進(jìn)行集成。所以版本老的可能安裝時(shí)候有點(diǎn)費(fèi)勁。
我有發(fā)表過一篇文章關(guān)于安裝目前最新的es-7.6.2版本以及插件的安裝,坑我已經(jīng)填平了。時(shí)空穿梭器:https://blog.csdn.net/D_Janrry/article/details/105461236
但是,我介意大家不要安裝最新的,最新的確實(shí)很牛*,但是坑太多,最后和logstash兼容的時(shí)候,顯示獲取不到es的鏡像,無法兼容。
6.6.2版本也是無法兼容。
6.6.1版本可以兼容,ELK可以實(shí)現(xiàn)。但是,最后進(jìn)行傳送日志的時(shí)候,它的logstash不支持打開多個(gè).conf文件。
看到這里,各位能想象到我一次次崩潰的心情嗎?反正很煩很煩,坑賊多。所以,就放棄了。如果要做,就用5.2.0版本吧。對照著7.6.2就可以安裝好,祝各位好運(yùn)。
2.Logstash安裝
Logstash事件處理有三個(gè)階段: inputs -→filters→outputs。是一個(gè)接收, 處理,轉(zhuǎn)發(fā)日志的工具。
支持系統(tǒng)日志,webserver日志,錯(cuò)誤日志,應(yīng)用日志,總之包括所有可以拋出來的日志類型。
解壓安裝就好了,其實(shí)可以不做修改。這里我是修改了。接著往下看
[root@bigdata1 logstash]# pwd
/data/program/software/logstash
[root@bigdata1 logstash]# mkdir conf.d? //配置文件的目錄
[root@bigdata1 config]# pwd
/data/program/software/logstash/config
[root@bigdata1 config]# vim logstash.yml
3.Kibana安裝
安裝,省略,因?yàn)榘惭b大家都會對吧,過于簡單重復(fù),咱們就不細(xì)講了
安裝好后,修改配置文件
[root@bigdata1 config]# pwd
/data/program/software/kibana/config
[root@bigdata1 config]# vim kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.239.7:9200"
kibana.index: ".kibana"
使用瀏覽器打開 http://192.168.239.7:5601
證明安裝成功了。
Filebeat安裝
filebeat.prospectors:? ? ? //文件探測器
- type: log? ? ? ? //探測類型,日志文件
enabled: false? ? ? //這里一定要改成false,不然日志發(fā)送不出去
paths:? ? ? ? ? ? //路徑
- /var/log/*.log? ? //注意,通配符*的存在使得相同目錄結(jié)構(gòu)的工程日志都會被收集到
如圖1所示:
這里默認(rèn)對接的是es,需修改為logstash。// 意思就是日志收集到后,交給了logstash。
注意:以上服務(wù)全部安裝在bigdata1上,但是,es、kafka+zookeeper集群是要安裝在三個(gè)節(jié)點(diǎn)上的。
kafka+zookeeper安裝
1.zookeeper配置
我們知道kafak集群依賴zookeeper。其實(shí)在kafka程序包中已經(jīng)包含了zookeeper。鑒于不同版本之間的問題,建議使用kafka的內(nèi)嵌的zookeeper.
為什么呢?因?yàn)槲矣植瓤恿?,但是這個(gè)是對于電腦而言的,我的電腦另外安裝zookeeper,最后在消費(fèi)者那里接收不到生產(chǎn)者的消息。所以我就用了kafka的內(nèi)嵌的zookeeper.
其配置如下:
[root@bigdata2 config]# pwd
/data/program/software/kafka/config
[root@bigdata2 config]# vim zookeeper.properties
三個(gè)節(jié)點(diǎn)相同的操作。
注:如果你是外部安裝了zookeeper出現(xiàn)我上述說的問題才來在用kafka內(nèi)嵌的zookeeper,一定要把之前的zookeeper關(guān)閉。
2.kafka配置
[root@bigdata2 config]# pwd
/data/program/software/kafka/config
[root@bigdata2 config]# vim server.properties
broker.id=1
listeners=PLAINTEXT://bigdata1:9092
log.dirs=/var/kafka
zookeeper.connect=bigdata1:2181,bigdata2:2181,bigdata3:2181
將配置文件利用scp技術(shù)傳送給另外兩個(gè)節(jié)點(diǎn),只需要修改broker.id的值為2、3,因?yàn)閎igdata2和bigdata3上的kafka應(yīng)用是直接復(fù)制過來的,所以需要將logs目錄下的內(nèi)容清空。
[root@bigdata2 kafka]# pwd
/data/program/software/kafka
[root@bigdata2 kafka]# ls
bin? config? libs? LICENSE? logs? NOTICE? site-docs
[root@bigdata2 kafka]# cd logs
[root@bigdata2 logs]# rm -rf ./*
到此,服務(wù)部署就全部完成了。接下來,實(shí)現(xiàn)各個(gè)服務(wù)之間的協(xié)同工作。
日志收集分析
如果前面的流程圖大家還一頭霧水,那我簡單的再說一下,工作流程:
filebeat的配置文件中寫了你要分析哪個(gè)目錄下的日志,那么filebeat工作開始后,就會去對應(yīng)目錄收集日志。收集到以后,交給logstash,這就是前面設(shè)置它的流向的原因。如圖1所示
logstash的conf.d下配置一個(gè)用于接收filebeat日志消息的文件,并將日志發(fā)送到kafka+zookeeper集群(也就是消息隊(duì)列),如圖2所示。kafka+zookeeper集群接收到以后,再配置一個(gè)從kafka+zookeeper集群轉(zhuǎn)發(fā)到es集群的文件,如圖3所示。
es集群接收到以后,再發(fā)送到kibana。最終在web界面提現(xiàn)出來,如圖4、圖5所示。
1.部署logstash+kafka+zookeeper
[root@bigdata1 conf.d]# vim filebeat_to_logstash.conf
input {
beat {
port => 5044
}
}
output{
kafka{
bootstrap_servers => "192.168.239.8:9092,192.168.239.9:9092"
topic_id => "ecplogs"
}
}
如圖所示:
[root@bigdata1 conf.d]# vim logstash_to_elasticsearch.conf
input {
kafka{
bootstrap_servers => "192.168.239.8:9092,192.168.239.9:9092"
topic_id => "ecplogs"
}
}
output {
elasticsearch {
hosts => ["192.168.239.8:9200","192.168.239.9:9200"]
index => "ecp-log-%{+YYYY.MM.dd}"
}
}
如圖所示:
2.各環(huán)節(jié)服務(wù)啟動與數(shù)據(jù)追蹤
啟動所有對應(yīng)軟件,值得提醒的是:filebeat啟動時(shí),需要安裝一個(gè)軟件:
(1)啟動zookeeper+kafka
略。。。
(2)啟動logstash接收日志
略。。。就是filebeat_to_logstash.conf文件
(3)在kafka終端上進(jìn)行日志消費(fèi)測試
[root@bigdata1 bin]# /data/program/software/kafka/bin/kafka-console-consumer.sh? --bootstrap-server 192.168.239.8:9092 --topic ecplogs --from-beginning
//這里的ecologs就是logstash文件中的 topic_id 的值,一定要對應(yīng)上
日志如圖所示:
因此,在最后kibana上的日志內(nèi)容要和此處的一致。
(4)打開logstash轉(zhuǎn)發(fā)
略。。。就是 logstash_to_elasticsearch.conf 文件
(5)es上測試結(jié)果
如圖所示:
(6)將數(shù)據(jù)呈現(xiàn)在kibana上
可以看到這里的收集的日志和kafka上收集到的一致,證明日志收集成功,到此,本實(shí)戰(zhàn)項(xiàng)目結(jié)束。祝各位好運(yùn)!
作者:Janrry丶龍龍
原文鏈接:https://blog.csdn.net/D_Janrry/article/details/106061610