ELK前端日誌分析、監控系統
前端日誌與後端日誌不同,具有很強的自定義特性,不像後端的介面日誌、伺服器日誌格式比較固定,大部分成熟的後端框架都有非常完善的日誌系統,藉助一些分析框架,就可以實現日誌的監控與分析,這也是運維工作的一部分。
什麼是ELK
ELK在伺服器運維界應該是運用的非常成熟了,很多成熟的大型專案都使用ELK來作為前端日誌監控、分析的工具。
那麼首先,我們來了解下什麼是ELK,ELK實際上是三個工具的集合:
- E:Elasticsearch
- L:Logstash
- K:Kibana
這三個工具各司其職,最終形成一整套的監控架構。
Elasticsearch
ElasticSearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放原始碼釋出,是當前流行的企業級搜尋引擎。設計用於雲端計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用方便。
我們使用Elasticsearch來完成日誌的檢索、分析工作。
Logstash
Logstash是一個用於管理日誌和事件的工具,你可以用它去收集日誌、轉換日誌、解析日誌並將他們作為資料提供給其它模組呼叫,例如搜尋、儲存等。
我們使用Logstash來完成日誌的解析、儲存工作。
Kibana
Kibana是一個優秀的前端日誌展示框架,它可以非常詳細的將日誌轉化為各種圖表,為使用者提供強大的資料視覺化支援。
我們使用Kibana來進行日誌資料的展示工作。
以上三個框架,就構成了我們這套架構的核心。如果你想進一步瞭解這套架構,可以去他的官網上進行了解:
這裡也講一個真實的故事——Elasticsearch專案的來歷。
Elasticsearch 來源於作者 Shay Banon 的第一個開源專案 Compass 庫,而這個 Java 庫最初的目的只是為了給 Shay 當時正在學廚師的妻子做一個菜譜的搜尋引擎。2010 年,Elasticsearch 正式釋出。至今已經成為 GitHub 上最流行的 Java 專案,不過 Shay 承諾給妻子的菜譜搜尋依然沒有面世。
不得不說,還真是物件導向程式設計……
ELK架構圖解
下面這張圖很好的解釋了什麼是ELK:
當然,這也是最簡單的ELK架構,在後端運維架構中,可能遠不止如此,比如,還需要加入Kafka活這Redis等等,這裡我們不做過多的討論,我們只討論最基礎的架構。
ELK環境搭建
有同事問我,配置一套ELK環境需要多長時間,我說,大概需要20分鐘,另外,其中大概有15分鐘是在下載!
由於現在整個ELK專案基本上都已經被elastic這個公司收購了,所以,在它的官方網站上可以很容易的找到配置Guide。
按照這個配置指南,基本上很快就可以完成ELK的搭建,我們唯一需要做的,就是找到一份Log,然後配置下,讓他展示出來就完了。
下載好tar包後,請儘量使用tar指令解壓,不然就會像我的同事TT那樣因為解壓後的許可權折騰上很長時間。
配置Logstash
我們首先需要在Logstash的檔案根目錄下建立一個配置檔案,我這裡舉一個例子:
input {
file {
path => "/Users/xuyisheng/Downloads/temp/log.txt"
ignore_older => 0
sincedb_path => "/dev/null"
}
}
output {
elasticsearch{}
stdout{}
}複製程式碼
這個配置相信不用我多說,大家也能看懂,當然,這是一個非常基本的配置,只是從固定的檔案中去讀取Log資訊並寫入到elasticsearch,並不做任何處理工作。
寫好配置檔案後,只需要通過如下所示的指令啟動Logstash即可:
➜ logstash-5.0.1 bin/logstash -f logstash.conf複製程式碼
啟動之後,Logstash就會從檔案中讀取資訊了。
配置Elasticsearch和Kibana
為什麼Logstash我要單獨講,而Elasticsearch和Kibana我可以放一起講呢?因為——這兩個的配置實在是太簡單了,簡單到你根本不用配置任何東西……
只需要兩個指令就完成了,啟動Elasticsearch:
➜ elasticsearch-5.0.0 bin/elasticsearch複製程式碼
啟動Kibana:
➜ kibana-5.0.0-darwin-x86_64 bin/kibana複製程式碼
OK,等程式啟動完成,只需要開啟localhost:5601就可以看見Kibana的介面了。
給大家看幾張截圖,簡單的體會下它的強大就好(由於我這裡專案是公司的,所以就從網上找了一些,是一樣的)
這個是Kibana3的介面。
這個是Kibana5的介面,大家可以根據自己的需要選擇不同的Kibana版本,反正配置都是一句話。
ELK的優勢
ELK在運維上的優勢我們就不具體的說了,什麼分散式啊、什麼訊息佇列、訊息快取啊,太多了,但我們其實並不用太關心。
強大的搜尋
這是elasticsearch的最強大的功能,他可以以分散式搜尋的方式快速檢索,而且支援DSL的語法來進行搜尋,簡單的說,就是通過類似配置的語言,快速篩選資料。
強大的展示
這是Kibana的最強大的功能,他可以展示非常詳細的圖表資訊,而且可以定製展示內容,將資料視覺化發揮的淋漓盡致。
所以,藉助ELK的這兩大優勢,我們可以讓前端日誌的分析與監控展現出強大的優勢。
ELK使用場景
據我所知,現在已經有非常多的公司在使用這套架構了,例如Sina、餓了麼、攜程,這些公司都是這方面的先驅。同時,這套東西雖然是後端的,但是『他山之石,可以攻玉』,我們將這套架構借用到前端,可以使用前端日誌的分析工作,同樣是非常方便的。這裡我舉一些常用的使用場景。
業務資料分析
通過客戶端的資料採集系統,可以將一些業務流程的關鍵步驟、資訊採集到後端,進行業務流程的分析。
錯誤日誌分析
類似Bugly,將錯誤日誌上報後,可以在後端進行錯誤彙總、分類展示,進行錯誤日誌的分析。
資料預警
利用ELK,可以很方便的對監控欄位建立起預警機制,在錯誤大規模爆發前進行預警。
ELK的基本介紹就到這裡,其實還有很多東西沒有講,例如使用Logstash對日誌內容的處理、已經elasticsearch的搜尋語法等等,如果大家有興趣,可以在下面留言,如果感興趣的人比較多,我會在後面的文章中進行進一步的分析。
一年一度的CSDN部落格之星評選又開始了,歡迎大家給我投票:
blog.csdn.net/vote/candid…
有了各位的支援,我才有動力能夠繼續寫出更多更好的文章,非常感謝大家的支援。