ELK由Elasticsearch、Logstash憋槐、Kibana三部分組成:
- Elasticsearch 是一個(gè)開源分布式搜索引擎秦陋,特點(diǎn)是分布式驳概、零配置顺又、自動(dòng)發(fā)現(xiàn)等孵、索引自動(dòng)分片俯萌、索引副本機(jī)制弱恒、RESTful風(fēng)格接口棋恼、多數(shù)據(jù)源爪飘、自動(dòng)搜索負(fù)載等师崎。
- Logstash 是一個(gè)完全開源工具犁罩,可對日志進(jìn)行收集肴熏、分析顷窒,并將其存儲(chǔ)供日后使用鸦做。
- Kibana 是一個(gè)開源和免費(fèi)的工具泼诱,可為Logstash和Elasticsearch提供日志分析友好的web界面治筒,可幫助您匯總耸袜、分析堤框、搜索重要數(shù)據(jù)日志蜈抓。
ELK工作流程
在需手機(jī)日志的所有服務(wù)器部署Logstash沟使,作為Logstash agent(Logstash shipper)用于監(jiān)控并過濾收集日志格带,將過濾后的內(nèi)容發(fā)送到Redis叽唱,然后Logstash indexer將日志收集在一起交給全文搜索服務(wù)Elasticsearch棺亭,可用Elasticsearch進(jìn)行自定義搜索通過Kibana來結(jié)合自定義搜索進(jìn)行頁面展示镶摘。
tu開源實(shí)時(shí)日志分析ELK(ElasticSearch, Logstash, Kibana),方便收集日志涝缝,進(jìn)行集中化管理方便進(jìn)行日志的統(tǒng)計(jì)和檢索拒逮。日志主要包括系統(tǒng)日志滩援、應(yīng)用程序日志和安全日志租悄。通常日志被分散存儲(chǔ)不同的設(shè)備上恩袱,若你管理多臺(tái)服務(wù)器外傅,可使用集中化的日志管理萎胰,例如開源syslog將所有服務(wù)器上的日志收集匯總技竟。
集中化管理日志后,日志統(tǒng)計(jì)和檢索又稱為一件比較麻煩的事情联逻,一般使用grep锨推、awk换可、wc等命令實(shí)現(xiàn)檢索和統(tǒng)計(jì)沾鳄,但對于要求更高的查詢确憨、排序译荞、統(tǒng)計(jì)等要求和龐大的機(jī)器數(shù)量磁椒,依然使用這樣的方法難免力不從心。開源實(shí)時(shí)日志分析ELK平臺(tái)能完美的解決上述問題医增。
圖解:Logstash收集AppServer產(chǎn)生的Log,并存放到Elasticsearch集群中,而Kibana則從ES集群中查詢數(shù)據(jù)生成圖表跪帝,再返回給瀏覽器伞剑。
Logstash
Logstash其實(shí)就是一個(gè)收集器而已缤谎,需為其指定Input和Output衡便。
The Elastic Stack不是一個(gè)軟件而是Elasticsearch洋访、Logstash呆抑、Kibana開源軟件的集合厌殉,對外是作為一個(gè)日志管理系統(tǒng)的開源方案〕薰荆可從任何來源楼眷、任何格式進(jìn)行日志搜索罐柳,分析獲取數(shù)據(jù),并實(shí)時(shí)進(jìn)行展示肮蛹。像盾牌(安全)、監(jiān)護(hù)者(警報(bào))创南、Marvel(監(jiān)測)一樣為你的 產(chǎn)品提供更多的可能扰藕。
- Elasticsearch 搜索,提供分布式全文搜索引擎
- Logstash 日志搜集未桥、管理冬耿、存儲(chǔ)
- Kibana 日志過濾web顯示
- Filebeat 監(jiān)控日志文件、轉(zhuǎn)發(fā)
集中式日志系統(tǒng)ELK協(xié)議棧
一個(gè)集中式日志系統(tǒng)特點(diǎn)
- 收集 能夠采集多種來源的日志數(shù)據(jù)
- 傳遞 能夠穩(wěn)定的把日志數(shù)據(jù)傳輸?shù)街醒胂到y(tǒng)
- 存儲(chǔ) 如何存儲(chǔ)日志數(shù)據(jù)
- 分析 可支持UI分析
- 警告 能提供錯(cuò)誤報(bào)告監(jiān)控機(jī)制
解決方案
簡單的 Rsyslog绊起、Syslog-ng
商業(yè)的Splunk
開源的 Facebook的Scribe蜂绎, Apache 的 Chukwa、Linkedin的Kafak、Cloudera的Fluented爹脾、ELK...
ELK協(xié)議棧
ELK其實(shí)并不是一款軟件而是一整套解決方案泌霍。
Elasticsearch 是一個(gè)實(shí)時(shí)的分布式搜索和分析引擎,用于全文搜索述召,構(gòu)化搜索和分析朱转。它是一個(gè)建立在全文搜索引擎Apache Lucene基礎(chǔ)上的搜索引擎,使用Java編寫积暖。
多個(gè)獨(dú)立的Agent(Shipper)運(yùn)行在不同的服務(wù)器終端藤为,用來收集不同來源的數(shù)據(jù),一個(gè)中心Agent(Indexer)用來負(fù)責(zé)匯總數(shù)據(jù)夺刑,在中心Agent前的Broker作為緩沖區(qū)缅疟,中心Agent后面ElasticSearch用于存儲(chǔ)和搜索數(shù)據(jù),前端Kibana用于提供UI展示遍愿。
Shipper表示收集日志存淫,使用LogStash收集各種來源的日志數(shù)據(jù),可能是系統(tǒng)日志沼填、文件纫雁、redis、mq...
Broker作為遠(yuǎn)端Agent與中心Agent之間的緩沖區(qū)倾哺,使用Redis實(shí)現(xiàn)轧邪,用來提升系統(tǒng)性能與可靠性刽脖,當(dāng)中心Agent提取數(shù)據(jù)失敗時(shí),數(shù)據(jù)保存在redis中不至于丟失忌愚。
中心Agent也是Logstash曲管,從Broker中讀取數(shù)據(jù)執(zhí)行相關(guān)的分析和處理(Filter)。
ElasticSearch用于存儲(chǔ)最終的數(shù)據(jù)(結(jié)果數(shù)據(jù))并提供搜索功能硕糊。
Kibana提供一個(gè)簡單豐富的Web界面院水,數(shù)據(jù)來自于ES,支持各種查詢統(tǒng)計(jì)和展示简十。
這種搭配也不是絕對的檬某,可不使用redis,可考慮kafka來做消息隊(duì)列螟蝙,也可讓shipper直接從你希望的日志中獲取數(shù)據(jù)恢恼,若你喜歡也可讓數(shù)據(jù)存到ES后在存一份進(jìn)入hdfs等。