日志收集框架對(duì)比 如何有效完整地收集log日志?
如何有效完整地收集log日志?你指的是什么?你表達(dá)的不夠全面如何優(yōu)化日志系統(tǒng)?答:此題邀請(qǐng)xinghua來(lái)解答,他總結(jié)了實(shí)際項(xiàng)目中對(duì)elk系統(tǒng)的一些調(diào)優(yōu)的經(jīng)驗(yàn),與你分享百億級(jí)elk日志系統(tǒng)優(yōu)化紀(jì)實(shí)。
如何有效完整地收集log日志?
你指的是什么?
你表達(dá)的不夠全面
如何優(yōu)化日志系統(tǒng)?
答:此題邀請(qǐng)xinghua來(lái)解答,他總結(jié)了實(shí)際項(xiàng)目中對(duì)elk系統(tǒng)的一些調(diào)優(yōu)的經(jīng)驗(yàn),與你分享百億級(jí)elk日志系統(tǒng)優(yōu)化紀(jì)實(shí)。
導(dǎo)語(yǔ):elk是搭建實(shí)時(shí)日志分析系統(tǒng)的通用解決方案,通過(guò)elk可以方便地收集、搜索日志。但隨著日志量的增加,根據(jù)實(shí)際應(yīng)用場(chǎng)景的優(yōu)化調(diào)整能夠更充分的利用系統(tǒng)資源。本文主要記錄我們項(xiàng)目中對(duì)elk系統(tǒng)的一些調(diào)優(yōu)。隨著王者人生相關(guān)業(yè)務(wù)的快速發(fā)展,我們每天日志量很快超過(guò)了20億條,存儲(chǔ)超過(guò)2TB,elk日志系統(tǒng)的壓力逐漸增加,日志系統(tǒng)的調(diào)整優(yōu)化已經(jīng)迫在眉睫。
1、日志系統(tǒng)架構(gòu)
(elk日志系統(tǒng)架構(gòu))
FileBeat 是一個(gè)輕量級(jí)的日志收集處理工具(Agent)。
Elasticsearch 是個(gè)開(kāi)源分布式搜索引擎,提供搜集、分析、存儲(chǔ)數(shù)據(jù)三大功能。
Logstash 主要是用來(lái)日志的搜集、分析、過(guò)濾日志的工具,支持大量的數(shù)據(jù)獲取。
Kibana 可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數(shù)據(jù)日志。
2、優(yōu)化日志系統(tǒng)以下主要介紹 filebeat、logstash、elasticsearch 的一些優(yōu)化調(diào)整
2.1 filebeat優(yōu)化
(1) 負(fù)載均衡
問(wèn)題 :當(dāng)日志量非常大(單機(jī)超過(guò)每天超100GB)的模塊上報(bào)日志時(shí),日志落地延時(shí)大,要等一段時(shí)間才能在es里查出來(lái)。
原因:
當(dāng)filebeat.yml 配置文件里hosts配置了多個(gè)Logstash主機(jī),并且loadbalance設(shè)置為true,則輸出插件會(huì)將已發(fā)布的事件負(fù)載平衡到所有Logstash主機(jī)上。 如果設(shè)置為false,則輸出插件僅將所有事件發(fā)送到一個(gè)主機(jī)(隨機(jī)確定),如果所選主機(jī)無(wú)響應(yīng),則會(huì)切換到另一個(gè)主機(jī)。 默認(rèn)值為false。
方案:配置多個(gè)hosts,配置loadbalance為true
(修改配置前只有一個(gè)連接)
(負(fù)載均衡優(yōu)化后多個(gè)連接)
效果
單機(jī)filebeat吞吐量變大
(多連接優(yōu)化后單機(jī)出流量變大)
(es創(chuàng)建索引的速度變大)
(2)上報(bào)采集 源服務(wù)器ip
問(wèn)題:不是所有日志都會(huì)打印本機(jī)IP,比如異常錯(cuò)誤日志往往無(wú)法打印服務(wù)器IP。這部分日志收集之后無(wú)法區(qū)分來(lái)源,難以定位問(wèn)題。
原因:filebeat目前不支持上報(bào)本機(jī)ip
方案:添加字段client_ip,重啟腳本動(dòng)態(tài)修改client_ip為本機(jī)IP
filebeat.yml 部分配置
restart_示例
效果
異常日志也能定位服務(wù)器IP
2.2logstash優(yōu)化
(1)日志清洗、格式化
問(wèn)題:采集的原始日志不規(guī)范,需要過(guò)濾,格式化
方案:利用logstash進(jìn)行清理
示例
效果
以刪掉message字段為例看效果
(刪掉message前冗余一份完整原始日志)
效果
平均每條日志存儲(chǔ)空間從1.2KB 下降到 0.84KB,減少了近30%的存儲(chǔ)
(每天日志統(tǒng)計(jì))
2.3elasticsearch優(yōu)化
(1)優(yōu)化模板_template配置
問(wèn)題:隨著王者榮耀wifi特權(quán)上線,日志量激增,默認(rèn)配置下磁盤(pán)達(dá)到瓶頸。
原因:默認(rèn)配置滿足不了項(xiàng)目需要
number_of_shards 是數(shù)據(jù)分片數(shù),默認(rèn)為5
當(dāng)es集群節(jié)點(diǎn)超過(guò)分片數(shù)時(shí),不能充分利用所有節(jié)點(diǎn)
number_of_replicas 是數(shù)據(jù)備份數(shù),默認(rèn)是1
方案:調(diào)整模板配置
number_of_shards改為72
number_of_replicas改為0
效果
每天日志的72個(gè)分片均勻分部在36個(gè)節(jié)點(diǎn)
(每個(gè)節(jié)點(diǎn)分配了2個(gè)分片)
備份從 1 改成了 0,減少了一半的寫(xiě)入
(io使用率降低)
3.總結(jié)通過(guò)以上調(diào)整,目前elk日志系統(tǒng)可以支持每天超過(guò)20億條,2.2 TB的日志,峰值創(chuàng)建索引超6萬(wàn)QPS
后續(xù)優(yōu)化:不同配置(磁盤(pán)空間)機(jī)器按權(quán)重分配,充分利用資源