溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎樣把ELK日志系統(tǒng)改進(jìn)成ELFK

發(fā)布時(shí)間:2020-06-03 18:16:53 來(lái)源:億速云 閱讀:536 作者:Leah 欄目:系統(tǒng)運(yùn)維

這篇文章給大家分享的是把ELK日志系統(tǒng)改進(jìn)成ELFK的方法,相信大部分人都還沒(méi)學(xué)會(huì)這個(gè)技能,為了讓大家學(xué)會(huì),給大家總結(jié)了以下內(nèi)容,話不多說(shuō),一起往下看吧。

一: ELK日志系統(tǒng)初期

剛來(lái)公司的時(shí)候,我們公司的日志收集系統(tǒng)ELK經(jīng)常會(huì)出現(xiàn)查詢(xún)不了最新的日志的情況,后面去查發(fā)現(xiàn) ES的節(jié)點(diǎn)經(jīng)常也是yellow或者red的情況。有時(shí)候會(huì)收到開(kāi)發(fā)的投訴。這一套ELK系統(tǒng)也是另外一個(gè)同事搭建的,

架構(gòu)圖解如下:

怎樣把ELK日志系統(tǒng)改進(jìn)成ELFK

其中ElasticSearch 是三臺(tái)服務(wù)器構(gòu)成的集群,


其中ElasticSearch的版本為 6.2.x 的版本,Logstash跑在每個(gè)服務(wù)器上,各種日志通過(guò)Logstash搜集,Grok,Geoip等插件進(jìn)行處理然后統(tǒng)一送到ElasticSearch的集群。

Kibana做圖形化的展示。


我們之前的elk架構(gòu)比較簡(jiǎn)單,也存在一些問(wèn)題:

1、Logstash依賴(lài)Java虛擬機(jī)占用系統(tǒng)的內(nèi)存和CPU都比較大,

2、Logstash在數(shù)據(jù)量較大的時(shí)候容易導(dǎo)致其他業(yè)務(wù)應(yīng)用程序崩潰,影響業(yè)務(wù)正常使用

3、隨著時(shí)間的積累,es空間不能滿足現(xiàn)狀

4、Kibana沒(méi)有安全管控機(jī)制,沒(méi)有權(quán)限審核,安全性較差。

5、ElasticSearch 主節(jié)點(diǎn)也是數(shù)據(jù)節(jié)點(diǎn),導(dǎo)致有時(shí)候查詢(xún)較慢


二: ELK日志系統(tǒng)改進(jìn)之引入Filebeat

ElasticSearch的版本,我們還是選擇原來(lái)的 6.2.x的版本,然后重新搭建了一套ELK的日志系統(tǒng)。

ElasticSearch 6.x 的版本如果要做用于鑒權(quán)的話,必須依賴(lài)X-Pack,但是X-pack是付費(fèi)的產(chǎn)品,于是我們?cè)诰W(wǎng)上尋找破解補(bǔ)丁,然后對(duì)ElasticSearch 6.x 進(jìn)行破解。


架構(gòu)圖解如下:

怎樣把ELK日志系統(tǒng)改進(jìn)成ELFK

整個(gè)架構(gòu)的具體的改進(jìn)方法如下:

1、客戶(hù)端選用更輕量化的Filebeat,F(xiàn)ilebeat 采用 Golang 語(yǔ)言進(jìn)行編寫(xiě)的,優(yōu)點(diǎn)是暫用系統(tǒng)資源小,收集效率高。

2、Filebeat 數(shù)據(jù)收集之后統(tǒng)一送到多個(gè) Logstatsh進(jìn)行統(tǒng)一的過(guò)濾,然后將過(guò)濾后的數(shù)據(jù)寫(xiě)入ElasticSearch集群。

3、將原有的3個(gè)es節(jié)點(diǎn)增加至6個(gè)節(jié)點(diǎn),其中3個(gè)ES節(jié)點(diǎn)是master節(jié)點(diǎn),其余的節(jié)點(diǎn)是數(shù)據(jù)節(jié)點(diǎn),如果磁盤(pán)不夠用可以橫向擴(kuò)展數(shù)據(jù)節(jié)點(diǎn)。

4、引入x-pack,實(shí)現(xiàn) Index 級(jí)別的權(quán)限管控,確保數(shù)據(jù)安全。

5、ElasticSearch集群的硬盤(pán)采用 SSD的硬盤(pán)


到此,我們的日志系統(tǒng)算暫時(shí)是正常并且能滿足日志查日志的需求了,也很少出現(xiàn)卡頓的現(xiàn)象了,并且服務(wù)器的資源使用率直接下降了一半。

但是要查幾個(gè)月之前的數(shù)據(jù)還是會(huì)慢,于是我們?cè)谏厦娴幕A(chǔ)上又做了下面幾個(gè)優(yōu)化:


6、ElasticSearch 做冷熱數(shù)據(jù)分離

7、60天之前的索引數(shù)據(jù)進(jìn)行關(guān)閉,有需要用的時(shí)候手工打開(kāi)

8、ElasticSearch的版本采用ElasticSearch 7.x的版本,用戶(hù)鑒權(quán)采用其免費(fèi)的 basic 認(rèn)證實(shí)現(xiàn)(因?yàn)?.x的新版本在性能上優(yōu)化,查詢(xún)和寫(xiě)入速度會(huì)更快)


 三: ELK日志系統(tǒng)改進(jìn)之ELFK

因?yàn)槲覀兊闹饕獦I(yè)務(wù)的開(kāi)發(fā)語(yǔ)言是PHP,PHP產(chǎn)生的 日志并不多,但是PHP畢竟是解釋性的語(yǔ)言,運(yùn)行效率并不高,但是我們公司業(yè)務(wù)并發(fā)卻非常高。并發(fā)至少有10萬(wàn)以上。有些業(yè)務(wù)是Java,比如位置上報(bào)的業(yè)務(wù),微服務(wù)也是公司自己開(kāi)發(fā)的,可能是框架也不完善,不像Spring Boot那樣成熟,打出的日志特別多,一個(gè)Java的微服務(wù)每天就要產(chǎn)生就幾個(gè)T的數(shù)據(jù)。有些微服務(wù)的日志還是info級(jí)別的。


隨著時(shí)間的積累,日志量有幾百T以及有PB級(jí)別的日志量了。

同時(shí)大數(shù)據(jù)部門(mén)也是查ElasticSearch集群的接口,導(dǎo)致ElasticSearch的壓力特別大。這樣導(dǎo)致有時(shí)候查詢(xún)歷史日志會(huì)很慢。

目前采用的 Filbeat + Logstash+ ElasticSearch+ Kibana的架構(gòu)已經(jīng)無(wú)法滿足需求了。于是我們想到使用MQ進(jìn)行緩沖,消息隊(duì)列進(jìn)行緩沖那應(yīng)該選哪個(gè)產(chǎn)品了,消息中間件考慮的幾個(gè)軟件又 Redis,Rabitmq,ActiveMq,Kafka等,對(duì)于這幾個(gè)的考慮我們毫不猶豫的選擇了Kafka,因?yàn)镵afak的吞吐量比其他都高,Kafka性能遠(yuǎn)超過(guò)ActiveMQ、RabbitMQ等。


架構(gòu)圖解如下:

怎樣把ELK日志系統(tǒng)改進(jìn)成ELFK

整個(gè)架構(gòu)的具體的改進(jìn)方法如下:

1、Filebeat數(shù)據(jù)收集之后存放于kafka,然后用 Logstash來(lái)逐條消費(fèi),寫(xiě)入es,確保數(shù)據(jù)的完整性。

2、Logstash 跑多個(gè)節(jié)點(diǎn)多個(gè)進(jìn)程以及多線程進(jìn)行消費(fèi)。

3、Kafka 多Topic 多分區(qū)存儲(chǔ),從而保證吞吐量。

4、大數(shù)據(jù)部門(mén)從開(kāi)始的直接查ElasticSearch集群的接口,改成直接消費(fèi)Kafka的數(shù)據(jù),這樣ElasticSearch的壓力降低了不少。

到此,就目前的架構(gòu)已經(jīng)滿足企業(yè)的PB級(jí)的日志需求了,查歷史日志也不卡了,也能滿足日常的需求。


當(dāng)我們通過(guò) Kafka—Manager 去監(jiān)控和 管理 Kafka 的狀態(tài)信息的時(shí)候,發(fā)現(xiàn)在業(yè)務(wù)高峰期的時(shí)候,Kafka的topic有很少量的堆積,

但是并不影響開(kāi)發(fā)和運(yùn)維查日志。于是愛(ài)折騰的我,決定自己手工寫(xiě)程序代替 Logstash消費(fèi),于是有了下面的內(nèi)容。


四:  Filbeat+Go+ElasticSearch+Kibana 日志收集系統(tǒng)架構(gòu)

如果自己寫(xiě)程序代替 Logstash消費(fèi),自己熟悉的語(yǔ)言是Python 和 Golang,于是決定用這兩者中的其中一個(gè)進(jìn)行編寫(xiě),考慮到Python是解釋性語(yǔ)言,有全局鎖的限制。而 Golang 是編譯型語(yǔ)言,而且天生支持協(xié)程。支持并發(fā)。所以采用 Golang進(jìn)行kafka消費(fèi)


架構(gòu)圖解如下:

怎樣把ELK日志系統(tǒng)改進(jìn)成ELFK



整個(gè)架構(gòu)的具體的操作方法如下:

1、不同的日志類(lèi)型建立不同的 topic

2、Filebat打不同的tag采集數(shù)據(jù)到不同的 topic

3、Golang 開(kāi)啟協(xié)程消費(fèi)不同的 topic發(fā)送到ElasticSearch集群

到此我們?cè)偈褂?Kafak-Manager去查看Kafka的狀態(tài)信息之后,即便再高峰期也不會(huì)出現(xiàn)消息少量堆積的情況了

關(guān)于把ELK日志系統(tǒng)改進(jìn)成ELFK的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI