其實玩了多年日志系統(tǒng)從傳統(tǒng)ELK 2.x開始玩一路玩到5.x,6.x「已經(jīng)搞定容器化」,聽說最近7.x了「能不能節(jié)奏慢點年紀(jì)大了,學(xué)不動了」
今天說說個人感受「談不上是什么架構(gòu),因為隨便Google下一排排的」。
Collector
FileBeat:輕巧占用資源少,但是功能有點弱?!赶肫鹆艘恍〇|西,都是淚」
Fluentd:個人理解在Logstash與FileBeat中間,可以簡單處理一些日志,插件豐富「要再研究下」
自己弄:架構(gòu)圖里面只是mysql調(diào)用了自己實現(xiàn)的解析工具,但是其實當(dāng)日志大到一定的量的還是必須自己來的,類似日志抽樣、降級、控制頻率等功能,是要真真切切的花費大量時間精力下去的一個sidecar并非動動嘴巴就能搞定的。「都是淚」
Queue
Kafka:王者地位「量小的時候也可以不用這個直接朝后面輸出,有很多中間方案大家自己腦補(bǔ)」,不同的日志分不同的topic,嚴(yán)格區(qū)分日志所屬類型,為后續(xù)消費打下基礎(chǔ),比如A業(yè)務(wù)進(jìn)入A Topic并在日志中打上所屬語言類型的Tag。
Consumer
Logstash:其實這個東西也可以作為收集端來使用,就是比較耗費資源有點重,還會莫名其妙掛了「應(yīng)該是我不會玩」
GrayLog:本人最喜歡的一個組件,集解析、報警、簡單分析、Dashboard、日志TTL的綜合體,有這個東西吧其實Kibana就沒啥用了,畢竟誰沒事天天去分析日志。
Storage
ElasticSearch:全文索引Engine,其實并沒有官方說的那么牛,當(dāng)?shù)揭欢ǖ牟l(fā)寫入、大量查詢之后其實根本不是加機(jī)器能解決的,怎么分shard,是按照天保存還是按照條數(shù)保存「我比較喜歡按照條數(shù)保存,這樣可以保證每個index都差不多大小,對于reblance是有好處的,重復(fù)利用多盤」如何保存是需要不斷調(diào)整的?!肝覀冞@邊不討論MongoDB去存日志,看著都不靠譜」
規(guī)范
其實日志系統(tǒng)最關(guān)鍵的是怎么打、什么格式打、但是這個東西需要消耗大量的時間去定義與各個部門Pk,遇到過大量不講理的輸出,直接線上Debug,600k的并發(fā)寫入,日志又大又臭誰能扛得住「阿里云的SLS是真的很?!?/p>
卷起袖子加油干,少動嘴,多動手,日志很好玩。在容器化的大環(huán)境下也越發(fā)的重要。
