當前位置:
首頁 > 最新 > 大型互聯網架構-elk最佳實踐,實時日誌分析系統

大型互聯網架構-elk最佳實踐,實時日誌分析系統

目前業界基於 Hadoop 技術棧的底層計算平台越發穩定成熟,計算能力不再成為主要瓶頸。 多樣化的數據、複雜的業務分析需求、系統穩定性、數據可靠性, 這些軟性要求, 逐漸成為日誌分析系統面對的主要問題。2018 年線上線下融合已成大勢,蘇寧易購提出並踐行雙線融合模式,提出了智慧零售的大戰略,其本質是數據驅動,為消費者提供更好的服務, 蘇寧日誌分析系統作為數據分析的第一環節,為數據運營打下了堅實基礎。

數據分析流程與架構介紹業務背景

蘇寧線上、線下運營人員,對數據分析需求多樣化、時效性要求越來越高。目前實時日誌分析系統每天處理數十億條流量日誌,不僅需要保證:低延遲、數據不丟失等要求,還要面對複雜的分析計算邏輯,這些都給系統建設提出了高標準、高要求。如下圖所示:

數據來源豐富:線上線下流量數據、銷售數據、客服數據等

業務需求多樣: 支撐營銷、採購、財務、供應鏈商戶等數據需求

流程與架構

蘇寧實時日誌分析系統底層數據處理分為三個環節:採集、清洗、指標計算,如圖 1 所示。

採集模塊:收集各數據源日誌,通過 Flume 實時發送 Kafka。

清洗模塊:實時接收日誌數據,進行數據處理、轉換,清洗任務基於 Storm 實現,目前每天處理十億級別流量數據,經過清洗任務處理後的結構化數據將再次發送到 Kafka 隊列

指標計算:從 Kafka 實時接收結構化流量數據,實時計算相關指標, 指標計算任務主要分兩種:Storm 任務、Spark Streaming 任務,兩種方式都有各自的應用場景, 其中 Spark Streaming 適合準實時場景,其優點是:吞吐量高、支持標準 SQL、開發簡單、支持窗函數計算Storm、Spark 得益於蘇寧數據云平台提供的支撐,目前蘇寧數據云平台集成了:Hive、Spark、Storm、Druid、ES、Hbase、Kafka 等大數據開發組件,支撐了集團大數據計算、存儲需求。

指標計算後數據主要存儲到 HBase、Druid 等存儲引擎,業務系統讀取實時計算好的指標數據,為運營人員提供數據分析服務。

什麼是日誌

首先來說一下日誌,日誌是屬於程序的一部分,在編寫程序的時候也就寫好了日誌。日誌的作用是為了排查問題,尤其是突發的問題,一般線上出了問題首先翻日誌。日誌還可以給我們提供報警監控的功能,通過監控日誌的變化,通過日誌中可以看出系統出現的問題甚至做出預測。

傳統的日誌分析

通常用Linux中小工具去搜索關鍵字能得到我們需要用到的信息。這種傳統的日誌分析的效率是非常低的,尤其是當業務越來越多系統越來越龐大的時候,這時在搜集日誌就會變得非常的困難。下面是針對傳統日誌分析過程中遇到的幾點問題:

日誌的集中收集與存儲:當有上千個節點的時候,日誌是分布在許多機器上,如果要獲取這些日誌的文件,不可能一台一台的去查看,所以這就是很明顯的一個問題。

日誌搜索:這種搜索是基於文件的,並且這種效率也會比較低,並不能表達出邏輯上的關係,並不能對系統的全局作出判定。

分析聚合及可視化:由於日誌分布在不同的機器上所以查看起來很困難。

安全、角色管理:當系統變大後就會有上百個人來查看日誌,不同角色不同級別的人看到的是不同的日誌而不是所有的人都能看到所有的日誌,所以傳統的日誌可能就會有安全上的問題。

可伸縮性:當系統越來越大的時候,會產生大量的日誌。

ELK

現在在開源的生態裡面,解決日誌收集、搜索、日誌聚合和日誌分析的一個技術站就是ELK。可能大家已經接觸過ELK,但在這裡再給大家介紹一下,ELK是Elasticsearch+Logstash+Kibana的縮寫。

Elasticsearch是一套搜索的框架,它的內核是Lucene,它把Lucene這個演算法做了封裝,提供了很方便使用的介面,以及有非常強大的擴展的能力。用Elasticsearch就可以很快速的做到全文檢索的一個服務。

Logstash也是Elasticsearch公司的一個產品,是用來做數據源的收集,最初它是為了做日誌但後來它不光做日誌的收集只要是數據都可以用它來收集,它就是一個收集器。

Kibana可以把它理解為一個UI,但它不是一個簡單的UI,通過Kibana可以看到ES上的所有數據,在這上面可以做各種的展示可以做各種圖形化的界面。

這是ELK的一個介紹。因為ELK在開源的搜索領域是非常的火熱,只要提到搜索都會想到Elasticsearch,提到數據的搜集就會想到Logstash,所以現在這套組件都成了標配了。

阿里雲Elasticsearch生態

這是一個阿里雲的Elasticsearch生態,所有的這些組件都是基於阿里雲的。可以看到這個Beats和Logstash是平行的,它倆的作用基本類似。和阿里雲合作最重要的一點就是X-Pack,X-Pack提供了很多強大的功能,比如說Security就能解決前邊的一些問題,不同級別的人可以看到不同的欄位。數據本身也可以得到一個保護,安全也基本上可以放心。再介紹一下Alerting,如果用戶在世界的多個地方登錄了可以通過Alerting這個功能報警出來,可以做一個預警,因為這種行為可能是被黑客入侵。Monitoring是為了監控整個Elasticsearch技術站的組件。Graph可以分析出在Elasticsearch上所有的數據之間的關係,來幫我們更好的組織數據。Reporting是可以通過對數據的一些計算,能夠分析出數據的變化,然後通過Reporting的機制告訴我們這些數據的變化。MachineLearning是在把數據導入Elasticsearch以後通過MachineLearning以後能夠通過統計學上的一些計算能夠分析出Graph一段時間的數據,甚至可以預測出未來變化的走向。所有的這一切都是建立在阿里雲上面的。

數據安全

右邊這個大的虛線框是VPC網路,用戶的數據和Elasticsearch的數據站都是在VPC裡面,接觸阿里雲的ECS、VPC可能都知道它對於用戶來說就是一個封閉的網路,外面進不去裡面出不來,除非用戶授權。右側是用戶的應用服務,用戶的搜索都是在用戶的VPC裡面。中間是公網服務,通過有密碼的保護,黑白名單的限制來保護服務暴露在公網上的安全性。Logstash可以把語音伺服器、雲資料庫和雲存儲的數據都是可以導入到VPC裡面的ES服務,用戶這邊可以使用到ES的數據。這樣一來就可以保護用戶的數據不被泄露。

Logstash架構

Logstash這個架構非常簡單,Input就是我能對接各種數據源,比如資料庫、OSS等都可以對接。Filter做一些數據的處理,處理完了以後輸出,輸出可以輸出到ES也可以輸出到別的系統。所以Date Source通過Logstash輸出到Date Destination。

通過Kibana搜索日誌

把日誌導入到ES這個技術站裡面之後,其實就是通過ES解決了日誌聚合的問題,可以散布在各個機器上的日誌收集到一塊,通過ES聚合在一起,通過Kibana就可以很方便的去搜索日誌。

通過ES API定製搜索條件

通過API去搜索日誌庫,通過Kibana可以直接寫查詢的條件,這個是非常的方便的。

阿里雲Elasticsearch性能

剛剛說了Elasticsearch的特性,我們在回來說一下Elasticsearch在阿里雲上的一些性能。

我們做了一個Elasticsearch的壓測主要是5.5.3版本的,分別在2核4G、4核16G、16核64G的上做了一個壓測。使用的是官方的壓測工具,沒有改任何的參數,都是默認的參數。可以看到這條綠色的線是官方的geonames3.3GB,單doc311B,在16和64G的時候可以達到每秒14萬doc。後來做了更進一步的壓測就是說多線程的時候它的性能會更好。這個比市面上的同類軟體是要高很多的。

業務架構

當需要搭建ELK的時候業務架構是什麼樣的。先看一下Beats,Beats是可以和業務部署在一起。Beats可以直接到Elasticsearch也可以直接到Logstash,Beats和Logstash的整合應用是現在比較流行的。整體的架構來看Logstash和Elasticsearch一般會分開部署,因為Logstash屬於CPU密集型的組件,Elasticsearch屬於I/O密集型的組件,所以在部署的時候會把兩者分開。

實踐

基於機器學習的日誌分析

機器學習可以對日誌進行分析,這個虛線分析出這段時間內的一個趨勢,然後分析所有日誌的時候就會發現數據不太對的時候就可以通過Reporting來反饋給我們,並且還可以預測出趨勢。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 笑眼彎彎 的精彩文章:

TAG:笑眼彎彎 |