您好,登錄后才能下訂單哦!
剛來(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)圖解如下:
其中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空間不能滿(mǎn)足現(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)的話(huà),必須依賴(lài)X-Pack,但是X-pack是付費(fèi)的產(chǎn)品,于是我們?cè)诰W(wǎng)上尋找破解補(bǔ)丁,然后對(duì)ElasticSearch 6.x 進(jìn)行破解。
架構(gòu)圖解如下:
整個(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í)是正常并且能滿(mǎn)足日志查日志的需求了,也很少出現(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ú)法滿(mǎn)足需求了。于是我們想到使用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)圖解如下:
整個(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)程以及多線(xià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)滿(mǎn)足企業(yè)的PB級(jí)的日志需求了,查歷史日志也不卡了,也能滿(mǎn)足日常的需求。
當(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)容。
如果自己寫(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)圖解如下:
整個(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)消息少量堆積的情況了
?
五: 經(jīng)驗(yàn)記錄
針對(duì)從ELK到ELFK的架構(gòu)演變,于是自己錄制了視頻在51cto上,分享給大家。點(diǎn)擊下面的超鏈接即可。
ELK/ELFK(7.3版本)企業(yè)PB級(jí)日志系統(tǒng)實(shí)戰(zhàn)
免責(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)容。