個人環境
(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一定要用同一個版本,不同版本之間會有各種各樣的坑。其他軟體可以使用不同版本。在這裡,我分享了ELK的版本,其他的大家用自己的也行。這裡給你們分享一個時空穿梭器: https:// download.csdn.net/downl oad/D_Janrry/12409286
拓撲圖
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SZlNGZjRWNxQGOiJWZlNjY3gzYlZTO2IzMhJWOiZzY28CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
架構解讀: (整個架構從左到右,總共分為5層)
第一層、資料采集層
最左邊的是業務伺服器叢集,上面安裝了filebeat做日志采集,同時把采集的日志分别發送給兩個logstash服務。
第二層、資料處理層,資料緩存層
logstash服務把接受到的日志經過格式處理,轉存到本地的kafka + zookeeper叢集中。
第三層、資料轉發層
這個單獨的Logstash節點會實時去kafka+zookeeper叢集拉資料,轉發至ES叢集上。
第四層、資料持久化存儲
ES叢集會把收到的資料,寫磁盤,建索引庫。
第五層、資料檢索,資料展示
ES Master + Kibana 主要協調ES叢集,處理資料檢索請求,資料展示。
環境初始化
1.節點規劃因為虛拟機有限,我就隻能在一台機器上部署所有軟體了。當然,兩台、三台、四台、五台都可以。
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.同步時鐘源 yum install ntpdate ntp -y
ntpdate cn.pool.ntp.org
hwclock --systohc
5.安裝常用軟體 yum install net-tools bash-completion wget vim -y
6.JDK安裝 安裝過于簡單,咱們就跳過去了,相信大家都會
以上步驟三個節點都需要完成。
ELK安裝
1.ES安裝其實本實驗最難安裝的就是es,因為他要放加入一個head插件,Elasticsearch5.x版本以後,head插件已經是一個獨立的Web App了,是以不需要和Elasticsearch進行內建。是以版本老的可能安裝時候有點費勁。
我有發表過一篇文章關于安裝目前最新的es-7.6.2版本以及插件的安裝,坑我已經填平了。時空穿梭器: https:// blog.csdn.net/D_Janrry/ article/details/105461236
但是,我介意大家不要安裝最新的,最新的确實很牛*,但是坑太多,最後和logstash相容的時候,顯示擷取不到es的鏡像,無法相容。
6.6.2版本也是無法相容。
6.6.1版本可以相容,ELK可以實作。但是,最後進行傳送日志的時候,它的logstash不支援打開多個.conf檔案。
看到這裡,各位能想象到我一次次崩潰的心情嗎?反正很煩很煩,坑賊多。是以,就放棄了。如果要做,就用5.2.0版本吧。對照着7.6.2就可以安裝好,祝各位好運。
2.Logstash安裝Logstash事件處理有三個階段: inputs -→filters→outputs。是一個接收, 處理,轉發日志的工具。
支援系統日志,webserver日志,錯誤日志,應用日志,總之包括所有可以抛出來的日志類型。
解壓安裝就好了,其實可以不做修改。這裡我是修改了。接着往下看
[[email protected] logstash]# pwd
/data/program/software/logstash
[[email protected] logstash]# mkdir conf.d //配置檔案的目錄
[[email protected] config]# pwd
/data/program/software/logstash/config
[[email protected] config]# vim logstash.yml
安裝,省略,因為安裝大家都會對吧,過于簡單重複,咱們就不細講了
安裝好後,修改配置檔案
[[email protected] config]# pwd
/data/program/software/kibana/config
[[email protected] 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,不然日志發送不出去
paths: //路徑
- /var/log/*.log //注意,通配符*的存在使得相同目錄結構的工程日志都會被收集到
如圖1所示:
這裡預設對接的是es,需修改為logstash。// 意思就是日志收集到後,交給了logstash。
注意:以上服務全部安裝在bigdata1上,但是,es、kafka+zookeeper叢集是要安裝在三個節點上的。
kafka+zookeeper安裝
1.zookeeper配置我們知道kafak叢集依賴zookeeper。其實在kafka程式包中已經包含了zookeeper。鑒于不同版本之間的問題,建議使用kafka的内嵌的zookeeper.
為什麼呢?因為我又踩坑了,但是這個是對于電腦而言的,我的電腦另外安裝zookeeper,最後在消費者那裡接收不到生産者的消息。是以我就用了kafka的内嵌的zookeeper.
其配置如下:
[[email protected] config]# pwd
/data/program/software/kafka/config
[[email protected] config]# vim zookeeper.properties
三個節點相同的操作。
注:如果你是外部安裝了zookeeper出現我上述說的問題才來在用kafka内嵌的zookeeper,一定要把之前的zookeeper關閉。2.kafka配置
[[email protected] config]# pwd
/data/program/software/kafka/config
[[email protected] config]# vim server.properties
broker.id=1
listeners=PLAINTEXT://bigdata1:9092
log.dirs=/var/kafka
zookeeper.connect=bigdata1:2181,bigdata2:2181,bigdata3:2181
将配置檔案利用scp技術傳送給另外兩個節點,隻需要修改broker.id的值為2、3,因為bigdata2和bigdata3上的kafka應用是直接複制過來的,是以需要将logs目錄下的内容清空。
[[email protected] kafka]# pwd
/data/program/software/kafka
[[email protected] kafka]# ls
bin config libs LICENSE logs NOTICE site-docs
[[email protected] kafka]# cd logs
[[email protected] logs]# rm -rf ./*
到此,服務部署就全部完成了。接下來,實作各個服務之間的協同工作。
日志收集分析
如果前面的流程圖大家還一頭霧水,那我簡單的再說一下,工作流程:
- filebeat的配置檔案中寫了你要分析哪個目錄下的日志,那麼filebeat工作開始後,就會去對應目錄收集日志。收集到以後,交給logstash,這就是前面設定它的流向的原因。如圖1所示
- logstash的conf.d下配置一個用于接收filebeat日志消息的檔案,并将日志發送到kafka+zookeeper叢集(也就是消息隊列),如圖2所示。kafka+zookeeper叢集接收到以後,再配置一個從kafka+zookeeper叢集轉發到es叢集的檔案,如圖3所示。
- es叢集接收到以後,再發送到kibana。最終在web界面提現出來,如圖4、圖5所示。
[[email protected] 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"
}
}
如圖所示:
[[email protected] 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}"
}
}
如圖所示:
啟動所有對應軟體,值得提醒的是:filebeat啟動時,需要安裝一個軟體:
(1)啟動zookeeper+kafka
略。。。
(2)啟動logstash接收日志
略。。。就是filebeat_to_logstash.conf檔案
(3)在kafka終端上進行日志消費測試
[[email protected] 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 的值,一定要對應上
日志如圖所示:
是以,在最後kibana上的日志内容要和此處的一緻。
(4)打開logstash轉發
略。。。就是 logstash_to_elasticsearch.conf 檔案
(5)es上測試結果
如圖所示:
(6)将資料呈現在kibana上
可以看到這裡的收集的日志和kafka上收集到的一緻,證明日志收內建功,到此,本實戰項目結束。祝各位好運!
作者:Janrry丶龍龍
原文連結: https:// blog.csdn.net/D_Janrry/ article/details/106061610