ELK介紹
ELK其實並不是一款軟件,而是一整套解決方案,是三個軟件產品的首字母縮寫,Elasticsearch,Logstash 和 Kibana。這三款軟件都是開源軟件,通常是配合使用,而且又先后歸於 Elastic.co 公司名下,故被簡稱為ELK協議棧
它是一個建立在全文搜索引擎 Apache Lucene基礎上的搜索引擎,使用Java語言編寫
ELK起源
日常工作中會面臨很多問題,處理問題時候。怎么解決問題?
通過工作經驗,迅速判斷問題出在哪。
通過日志
系統日志:/var/log 目錄下的問題的文件
程序日志: 代碼日志(項目代碼輸出的日志)
服務應用日志
nginx、HAproxy、lvs
tomcat、php-fpm
redis、mysql、mongo
RabbitMq、kafka
Glusterfs、HDFS、NFS等等
通過日志排除,發現問題根源解決問題
如果1台或者幾台服務器,我們可以通過 linux命令,tail、cat,通過grep、awk等過濾去查詢定位日志查問題
但是如果幾十台、甚至幾百台。通過這種方式肯定不現實。
怎么辦?
一些聰明人就提出了建立一套集中式的方法,把不同來源的數據集中整合到一個地方。
一個完整的集中式日志系統,是離不開以下幾個主要特點的。
收集-能夠采集多種來源的日志數據
傳輸-能夠穩定的把日志數據傳輸到中央系統
存儲-如何存儲日志數據
分析-可以支持 UI 分析
警告-能夠提供錯誤報告,監控機制
Elasticsearch的功能:
1.搜索
2.全文檢索
3.分析數據
4.處理海量數據PB,對海量數據進行近實時的處理(ES可以自動將海量數據分散到多台服務器上去存儲和檢索)
5.高可用高性能分布式搜索引擎數據庫
Elasticsearch的應用場景:
1.網頁搜索
2.新聞搜索
3.商品標簽
4.日志收集分析展示
Logstash
Logstash 是一個具有實時渠道能力的數據收集引擎。使用 JRuby 語言編寫。其作者是世界著名的運維工程師喬丹西塞 (JordanSissel)
主要特點
幾乎可以訪問任何數據
可以和多種外部應用結合
支持彈性擴展
它由三個主要部分組成,見圖 4:
Shipper-發送日志數據
Broker-收集數據,缺省內置 Redis
Indexer-數據寫入
Kibana
Kibana是世界上最流行的開源日志分析平台ELK Stack 中的“K” ,它為用戶提供了一個工具,用於在存儲在 Elasticsearch 集群中的日志數據之上探索、可視化和構建儀表板。
Kibana是一款基於 Apache開源協議,使用 JavaScript語言編寫,為 Elasticsearch提供分析和可視化的 Web 平台。它可以在Elasticsearch的索引中查找,交互數據,並生成各種維度的表圖.
Kibana 的核心功能是數據查詢和分析。使用各種方法,用戶可以在 Elasticsearch 索引的數據中搜索其數據中的特定事件或字符串,以進行根本原因分析和診斷。基於這些查詢,用戶可以使用 Kibana 的可視化功能,該功能允許用戶以各種不同的方式可視化數據,使用圖表、表格、地理地圖和其他類型的可視化。