filebeat 收集json格式_集群日志收集架构ELK
歡迎關注頭條號:老顧聊技術
精品原創技術分享,知識的組裝工
前言
前幾篇我們介紹了項目中如何使用logback組件記錄系統的日志情況;現在我們的系統都是分布式的,集群化的,那就代表著我們的應用會分布在很多服務器上面;那應用的日志文件就會分布在各個服務器上面。
問題
突然有一天我們系統出現了問題,我們第一時間想到的是先要判斷到底哪個服務出現了問題;我們的技術人員就連接生產環境服務器,查看服務器上面的應用日志。
那么多的服務器,技術人員這個時候就會很抓狂,一個個的查看分析日志,是比較愚蠢的方法。那有什么好的方式呢?今天老顧給大家介紹常規的方案。
ELK方案
ELK 是elastic公司提供的一套完整的日志收集以及展示的解決方案,是三個產品的首字母縮寫,分別是ElasticSearch、Logstash 和 Kibana。
ElasticSearch簡稱ES,它是一個實時的分布式搜索和分析引擎,它可以用于全文搜索,結構化搜索以及分析。它是一個建立在全文搜索引擎 Apache Lucene 基礎上的搜索引擎,使用 Java 語言編寫。
Logstash是一個具有實時傳輸能力的數據收集引擎,用來進行數據收集(如:讀取文本文件)、解析,并將數據發送給ES。
Kibana為 Elasticsearch 提供了分析和可視化的 Web 平臺。它可以在 Elasticsearch 的索引中查找,交互數據,并生成各種維度表格、圖形。
這三款軟件都是開源軟件,通常配合使用,而且又先后歸于Elastic.co公司名下
ELK的用途
傳統意義上,ELK是作為替代Splunk的一個開源解決方案。Splunk 是日志分析領域的領導者。日志分析并不僅僅包括系統產生的錯誤日志,異常,也包括業務邏輯,或者任何文本類的分析。而基于日志的分析,能夠在其上產生非常多的解決方案,譬如:
1.問題排查。我們常說,運維和開發這一輩子無非就是和問題在戰斗,運維和開發能夠快速的定位問題,甚至防微杜漸,把問題殺死在搖籃里。日志分析技術顯然問題排查的基石。
2.監控和預警。 日志,監控,預警是相輔相成的?;谌罩镜谋O控,預警使得運維有自己的機械戰隊,大大節省人力以及延長運維的壽命。
3.關聯事件。多個數據源產生的日志進行聯動分析,通過某種分析算法,就能夠解決生活中各個問題。比如金融里的風險欺詐等。
4.數據分析。 這個對于數據分析師,還有算法工程師都是有所裨益的。
ElasticSearch介紹
ElasticSearch是一個實時的分布式搜索和分析引擎,采用java語言編寫,現在的最新版本已經ElasticSearch7.5.x,他的主要特點如下:
實時搜索、實時分析
分布式架構、實時文件存儲
文檔導向,所有對象都是文檔
高可用,易擴展,支持集群,分片與復制
接口友好,支持json
Logstash介紹
logstash是一款輕量級的、開源的日志收集處理框架,它可以方便的把分散的、多樣化的日志收集起來,并進行自定義的過濾分析處理,然后輸出到指定的位置(如:es)。
Logstash工作原理
如上圖,Logstash的數據處理過程主要包括:Inputs, Filters, Outputs 三部分, 另外在Inputs和Outputs中可以使用Codecs對數據格式進行處理。這四個部分均以插件形式存在,用戶通過定義pipeline配置文件,設置需要使用的input,filter,output, codec插件,以實現特定的數據采集,數據處理,數據輸出等功能 。
(1)Inputs:用于從數據源獲取數據,常見的插件如file, syslog, redis, beats等
(2)Filters:用于處理數據如格式轉換,數據派生等,常見的插件如grok, mutate, drop, clone, geoip等
(3)Outputs:用于數據輸出,常見的插件如elastcisearch,file, graphite, statsd等
(4)Codecs:Codecs不是一個單獨的流程,而是在輸入和輸出等插件中用于數據轉換的模塊,用于對數據進行編碼處理,常見的插件如json,multiline
Kibana介紹
Kibana是一個開源的分析和可視化平臺,設計用于和Elasticsearch一起工作。
可以用Kibana來搜索,查看,并存儲在Elasticsearch索引中的數據進行交互。
可以輕松地執行高級數據分析,并且以各種圖標、表格和地圖的形式可視化數據。
Kibana使得理解大量數據變得很容易。它簡單的、基于瀏覽器的界面使你能夠快速創建和共享動態儀表板,實時顯示Elasticsearch查詢的變化。
什么是Filebeat
雖然我們的logstash功能已經非常強大了,里面包含采集,過濾,轉換等功能;正因為有很多的功能,導致了它比較耗資源。其實在我們應用服務器端只需要采集日志功能就行了,沒有必要logstash其他的功能;所以Filebeat等beat組件就出現了,它們比較小巧,而且不耗資源,也完全夠用。
Filebeat是一個輕量級的托運人,用于轉發和集中日志數據。Filebeat作為代理安裝在服務器上,監視您指定的日志文件或位置,收集日志事件,并將它們轉發到Elasticsearch或 Logstash進行索引。
Filebeat的工作原理:啟動Filebeat時,它會啟動一個或多個輸入,這些輸入將查找您為日志數據指定的位置。對于Filebeat找到的每個日志,Filebeat啟動一個收集器。每個收集器為新內容讀取單個日志,并將新日志數據發送到libbeat,libbeat聚合事件并將聚合數據發送到您為Filebeat配置的輸出。
官方流程圖如下:
ELK常見架構
最簡單的ELK應用架構
上面架構是簡單粗暴的架構,這種架構對數據源服務器(即應用服務器)性能影響較大,因為Logsash是需要安裝和運行在需要收集的數據源服務器(即應用服務器)中,然后將收集到的數據實時進行過濾,過濾環節是很耗時間和資源的,過濾完成后才傳輸到ES中。下面是優化后的架構圖:
用filebeat采集日志有效降低了收集日志對業務系統的系統資源的消耗。再通過logstash服務器可以過濾,轉換日志。這樣即滿足了日志的過濾轉換,也保障了業務系統的性能。
當然上面的架構中,是支持集群的
如果日志文件量特別大,以及收集的服務器日志比較多;這樣架構中需加入消息中間件做一下緩沖
此架構適合大型集群,海量數據的業務場景,消息隊列kafka集群架構有效保障了收集數據的安全性和穩定性,而后端logstash和es均采用了集群模式搭建,從整體上提高了ELK的系統的高效性,擴展性和吞吐量。
總結
今天老顧介紹了ELK的基本介紹,帶領了我們小伙伴們進入了 Elastic Stack技術棧,也開啟了小伙伴們大數據技術的大門。上面介紹的幾個技術組件,延展下去會有很多技術點。老顧下面會一一介紹分享給大家,小伙伴們也可以自行上網學習。謝謝!!!
---End---
總結
以上是生活随笔為你收集整理的filebeat 收集json格式_集群日志收集架构ELK的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卓讯企业名录搜索软件_还在用卓讯企业名录
- 下一篇: python3邮件_python3使用S