天天看點

基于ELK實時日志分析的最佳實踐什麼是日志ELK實踐

在2018雲栖大會深圳峰會大資料分析與可視化專場上,由阿裡巴巴搜尋引擎事業部開放搜尋團隊的吳迪帶來了“基于ELK實時日志分析的最佳實踐”的主題分享。介紹了傳統的日志分析、ELK的概念和ELK實時日志分析的實踐。

數十款阿裡雲産品限時折扣中,

趕快點選這裡 ,領券開始雲上實踐吧! 直播視訊回顧 以下為精彩視訊内容整理:

什麼是日志

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

傳統的日志分析

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

1、日志的集中收集與存儲:當有上千個節點的時候,日志是分布在許多機器上,如果要擷取這些日志的檔案,不可能一台一台的去檢視,是以這就是很明顯的一個問題。

2、 日志搜尋:這種搜尋是基于檔案的,并且這種效率也會比較低,并不能表達出邏輯上的關系,并不能對系統的全局作出判定。

3、 分析聚合及可視化:由于日志分布在不同的機器上是以檢視起來很困難。

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

5、 可伸縮性:當系統越來越大的時候,會産生大量的日志。

ELK

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

Elasticsearch是一套搜尋的架構,它的核心是Lucene,它把Lucene這個算法做了封裝,提供了很友善使用的接口,以及有非常強大的擴充的能力。用Elasticsearch就可以很快速的做到全文檢索的一個服務。

Logstash也是Elasticsearch公司的一個産品,是用來做資料源的收集,最初它是為了做日志但後來它不光做日志的收集隻要是資料都可以用它來收集,它就是一個收集器。

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

這是ELK的一個介紹。因為ELK在開源的搜尋領域是非常的火熱,隻要提到搜尋都會想到Elasticsearch,提到資料的搜集就會想到Logstash,是以現在這套元件都成了标配了。

阿裡雲Elasticsearch生态

基于ELK實時日志分析的最佳實踐什麼是日志ELK實踐

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

資料安全

基于ELK實時日志分析的最佳實踐什麼是日志ELK實踐

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

Logstash架構

基于ELK實時日志分析的最佳實踐什麼是日志ELK實踐

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

通過Kibana搜尋日志

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

通過ES API定制搜尋條件

通過API去搜尋日志庫,通過Kibana可以直接寫查詢的條件,這個是非常的友善的。

阿裡雲Elasticsearch性能

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

基于ELK實時日志分析的最佳實踐什麼是日志ELK實踐

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

業務架構

基于ELK實時日志分析的最佳實踐什麼是日志ELK實踐

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

實踐

基于機器學習的日志分析

基于ELK實時日志分析的最佳實踐什麼是日志ELK實踐

機器學習可以對日志進行分析,這個虛線分析出這段時間内的一個趨勢,然後分析所有日志的時候就會發現資料不太對的時候就可以通過Reporting來回報給我們,并且還可以預測出趨勢。

ELK監控告警

ELK監控報警是對ELK技術棧的一個報警,是對索引、節點的一個監控。我們緻力于把搜尋事業部一些很強大的功能通過阿裡雲這個平台向外輸出,其實這個特性就是我們技術沉澱的一個輸出,它會自動的分析整個ES的健康狀況。然後把ELK的架構做一個自動的優化。

本文由雲栖志願小組陳歡整理編輯

繼續閱讀