前端日誌與後端日誌不一樣,具備很強的自定義特性,不像後端的接口日誌、服務器日誌格式比較固定,大部分紅熟的後端框架都有很是完善的日誌系統,藉助一些分析框架,就能夠實現日誌的監控與分析,這也是運維工做的一部分。html
ELK在服務器運維界應該是運用的很是成熟了,不少成熟的大型項目都使用ELK來做爲前端日誌監控、分析的工具。前端
那麼首先,咱們來了解下什麼是ELK,ELK其實是三個工具的集合:web
這三個工具各司其職,最終造成一整套的監控架構。編程
ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並做爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便。後端
咱們使用Elasticsearch來完成日誌的檢索、分析工做。緩存
Logstash是一個用於管理日誌和事件的工具,你能夠用它去收集日誌、轉換日誌、解析日誌並將他們做爲數據提供給其它模塊調用,例如搜索、存儲等。服務器
咱們使用Logstash來完成日誌的解析、存儲工做。架構
Kibana是一個優秀的前端日誌展現框架,它能夠很是詳細的將日誌轉化爲各類圖表,爲用戶提供強大的數據可視化支持。框架
咱們使用Kibana來進行日誌數據的展現工做。運維
以上三個框架,就構成了咱們這套架構的核心。若是你想進一步瞭解這套架構,能夠去他的官網上進行了解:
這裏也講一個真實的故事——Elasticsearch項目的來歷。
Elasticsearch 來源於做者 Shay Banon 的第一個開源項目 Compass 庫,而這個 Java 庫最初的目的只是爲了給 Shay 當時正在學廚師的妻子作一個菜譜的搜索引擎。2010 年,Elasticsearch 正式發佈。至今已經成爲 GitHub 上最流行的 Java 項目,不過 Shay 承諾給妻子的菜譜搜索依然沒有面世。
不得不說,還真是面向對象編程……
下面這張圖很好的解釋了什麼是ELK:
固然,這也是最簡單的ELK架構,在後端運維架構中,可能遠不止如此,好比,還須要加入Kafka活這Redis等等,這裏咱們不作過多的討論,咱們只討論最基礎的架構。
有同事問我,配置一套ELK環境須要多長時間,我說,大概須要20分鐘,另外,其中大概有15分鐘是在下載!
因爲如今整個ELK項目基本上都已經被elastic這個公司收購了,因此,在它的官方網站上能夠很容易的找到配置Guide。
按照這個配置指南,基本上很快就能夠完成ELK的搭建,咱們惟一須要作的,就是找到一份Log,而後配置下,讓他展現出來就完了。
下載好tar包後,請儘可能使用tar指令解壓,否則就會像個人同事TT那樣由於解壓後的權限折騰上很長時間。
咱們首先須要在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就會從文件中讀取信息了。
爲何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在運維上的優點咱們就不具體的說了,什麼分佈式啊、什麼消息隊列、消息緩存啊,太多了,但咱們其實並不用太關心。
這是elasticsearch的最強大的功能,他能夠以分佈式搜索的方式快速檢索,並且支持DSL的語法來進行搜索,簡單的說,就是經過相似配置的語言,快速篩選數據。
這是Kibana的最強大的功能,他能夠展現很是詳細的圖表信息,並且能夠定製展現內容,將數據可視化發揮的淋漓盡致。
因此,藉助ELK的這兩大優點,咱們可讓前端日誌的分析與監控展示出強大的優點。
據我所知,如今已經有很是多的公司在使用這套架構了,例如Sina、餓了麼、攜程,這些公司都是這方面的先驅。同時,這套東西雖然是後端的,可是『他山之石,能夠攻玉』,咱們將這套架構借用到前端,可使用前端日誌的分析工做,一樣是很是方便的。這裏我舉一些經常使用的使用場景。
業務數據分析
經過客戶端的數據採集系統,能夠將一些業務流程的關鍵步驟、信息採集到後端,進行業務流程的分析。
錯誤日誌分析
相似Bugly,將錯誤日誌上報後,能夠在後端進行錯誤彙總、分類展現,進行錯誤日誌的分析。
數據預警
利用ELK,能夠很方便的對監控字段創建起預警機制,在錯誤大規模爆發前進行預警。
ELK的基本介紹就到這裏,其實還有不少東西沒有講,例如使用Logstash對日誌內容的處理、已經elasticsearch的搜索語法等等,若是你們有興趣,能夠在下面留言,若是感興趣的人比較多,我會在後面的文章中進行進一步的分析。
一年一度的CSDN博客之星評選又開始了,歡迎你們給我投票:
blog.csdn.net/vote/candid…有了各位的支持,我纔有動力可以繼續寫出更多更好的文章,很是感謝你們的支持。