(一)ELK技術棧入門
一、ELK介紹
1.1 ELK簡介
ELK是Elasticsearch、Logstash、Kibana三大開源框架首字母大寫簡稱(但是後期出現的filebeat(beats中的一種)可以用來替代logstash的資料收集功能,比較輕量級)。市面上也被成為Elastic Stack。
Filebeat是用於轉發和集中日誌資料的輕量級傳送工具。Filebeat監視您指定的日誌檔案或位置,收集日誌事件,並將它們轉發到Elasticsearch或 Logstash進行索引。Filebeat的工作方式如下:啟動Filebeat時,它將啟動一個或多個輸入,這些輸入將在為日誌資料指定的位置中查詢。對於Filebeat所找到的每個日誌,Filebeat都會啟動收集器。每個收集器都讀取單個日誌以獲取新內容,並將新日誌資料傳送到libbeat,libbeat將聚集事件,並將聚集的資料傳送到為Filebeat配置的輸出。
Logstash是免費且開放的伺服器端資料處理管道,能夠從多個來源採集資料,轉換資料,然後將資料傳送到您最喜歡的“儲存庫”中。Logstash能夠動態地採集、轉換和傳輸資料,不受格式或複雜度的影響。利用Grok從非結構化資料中派生出結構,從IP地址解碼出地理座標,匿名化或排除敏感欄位,並簡化整體處理過程。
Elasticsearch是Elastic Stack核心的分散式搜尋和分析引擎,是一個基於Lucene、分散式、通過Restful方式進行互動的近實時搜尋平臺框架。Elasticsearch為所有型別的資料提供近乎實時的搜尋和分析。無論您是結構化文字還是非結構化文字,數字資料或地理空間資料,Elasticsearch都能以支援快速搜尋的方式有效地對其進行儲存和索引。
Kibana是一個針對Elasticsearch的開源分析及視覺化平臺,用來搜尋、檢視互動儲存在Elasticsearch索引中的資料。使用Kibana,可以通過各種圖表進行高階資料分析及展示。並且可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 介面,可以彙總、分析和搜尋重要資料日誌。還可以讓海量資料更容易理解。它操作簡單,基於瀏覽器的使用者介面可以快速建立儀表板(dashboard)實時顯示Elasticsearch查詢動態
1.2 為什麼要使用ELK
日誌主要包括系統日誌、應用程式日誌和安全日誌。系統運維和開發人員可以通過日誌瞭解伺服器軟硬體資訊、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解伺服器的負荷,效能安全性,從而及時採取措施糾正錯誤。
往往單臺機器的日誌我們使用grep、awk等工具就能基本實現簡單分析,但是當日志被分散的儲存不同的裝置上。如果你管理數十上百臺伺服器,你還在使用依次登入每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理,例如:開源的syslog,將所有伺服器上的日誌收集彙總。集中化管理日誌後,日誌的統計和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux命令能實現檢索和統計,但是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。
一般大型系統是一個分散式部署的架構,不同的服務模組部署在不同的伺服器上,問題出現時,大部分情況需要根據問題暴露的關鍵資訊,定位到具體的伺服器和服務模組,構建一套集中式日誌系統,可以提高定位問題的效率。
1.3 完整日誌系統的基本特徵
- 收集:能夠採集多種來源的日誌資料
- 傳輸:能夠穩定的把日誌資料解析過濾並傳輸到儲存系統
- 儲存:儲存日誌資料
- 分析:支援UI分析
- 告警:能夠提供錯誤告警,監控機制
二、ELK架構分析
2.1 beats+elasticsearch+kibana模式
如上圖所示,該ELK框架由beats(日誌分析我們通常使用filebeat)+elasticsearch+kibana構成,這個框架比較簡單,入門級的框架。其中filebeat也能通過module對日誌進行簡單的解析和索引。並檢視預建的Kibana儀表板。
該框架適合簡單的日誌資料,一般可以用來玩玩,生產環境建議接入logstash
2.2 beats+logstash+elasticsearch+kibana模式
該框架是在上面的框架的基礎上引入了logstash,引入logstash帶來的好處如下:
- 通Logstash具有基於磁碟的自適應緩衝系統,該系統將吸收傳入的吞吐量,從而減輕背壓
- 從其他資料來源(例如資料庫,S3或訊息傳遞佇列)中提取
- 將資料傳送到多個目的地,例如S3,HDFS或寫入檔案
- 使用條件資料流邏輯組成更復雜的處理管道
filebeat結合logstash帶來的優勢:
- 水平可擴充套件性,高可用性和可變負載處理:filebeat和logstash可以實現節點之間的負載均衡,多個logstash可以實現logstash的高可用
- 訊息永續性與至少一次交付保證:使用Filebeat或Winlogbeat進行日誌收集時,可以保證至少一次交付。從Filebeat或Winlogbeat到Logstash以及從Logstash到Elasticsearch的兩種通訊協議都是同步的,並且支援確認。Logstash持久佇列提供跨節點故障的保護。對於Logstash中的磁碟級彈性,確保磁碟冗餘非常重要。
- 具有身份驗證和有線加密的端到端安全傳輸:從Beats到Logstash以及從 Logstash到Elasticsearch的傳輸都可以使用加密方式傳遞 。與Elasticsearch進行通訊時,有很多安全選項,包括基本身份驗證,TLS,PKI,LDAP,AD和其他自定義領域1.
當然在該框架的基礎上還可以引入其他的輸入資料的方式:比如:TCP,UDP和HTTP協議是將資料輸入Logstash的常用方法(如下圖所示):
2.3 beats+快取/訊息佇列+logstash+elasticsearch+kibana模式
在如上的基礎上我們可以在beats和logstash中間新增一些元件redis、kafka、RabbitMQ等,新增中介軟體將會有如下好處:
第一,降低對日誌所在機器的影響,這些機器上一般都部署著反向代理或應用服務,本身負載就很重了,所以儘可能的在這些機器上少做事;
第二,如果有很多臺機器需要做日誌收集,那麼讓每臺機器都向Elasticsearch持續寫入資料,必然會對Elasticsearch造成壓力,因此需要對資料進行緩衝,同時,這樣的緩衝也可以一定程度的保護資料不丟失;
第三,將日誌資料的格式化與處理放到Indexer中統一做,可以在一處修改程式碼、部署,避免需要到多臺機器上去修改配置
轉載:https://www.cnblogs.com/zsql/p/13164414.html