構(gòu)建ELK+Filebeat+kafka+zookeeper大數(shù)據(jù)日志分析平臺

個(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容