李欽 楊程
摘? 要:在云計算和大數(shù)據(jù)時代,針對業(yè)務服務運行狀態(tài)的實時監(jiān)控與日志數(shù)據(jù)分析具有非常重要的意義,而為了達成該目標,首先需要構建一個符合企業(yè)自身業(yè)務場景的集中式日志管理平臺的解決方案。本文采用目前流行的開源集中式日志解決方案——ELK Stack(Elasticsearch、Logstash、Kibana Stack),探討該方案中三大組件的核心功能和使用方法,在此基礎上搭建對海量日志進行實時監(jiān)控和檢索分析的日志監(jiān)控處理方案,以及研究如何優(yōu)化在性能偏低的設備節(jié)點部署該方案的方法。
關鍵詞:日志處理;ELK;filebeat
中圖分類號:TP311.1? ? ? ?文獻標識碼:A 文章編號:2096-4706(2019)15-0193-02
Construction and Optimization of Log Analysis Platform Based on ELK
LI Qin,YANG Cheng
(Guangzhou Zhiyuan Electronics Co.,Ltd.,Guangzhou? 510660,China)
Abstract:In the era of cloud computing and big data,the real-time monitoring and log data analysis of business service running state is of great significance. To achieve this goal,it is necessary to build a centralized log management platform solution in line with the enterprise’s own business scenario. Based on the currently popular open source centralized logging solutions——ELK Stack (Elasticsearch,Logstash,Kibana Stack),discusses the scheme of the three components of the core functions and using methods,based on the building of massive logs real-time monitoring and analysis of log to monitor treatment scheme,it also studies how to optimize the deployment of the scheme in low performance equipment nodes.
Keywords:log processing;ELK;filebeat
0? 引? 言
隨著云計算的到來,越來越多的企業(yè)陸續(xù)在實際生產(chǎn)過程中使用云服務。云服務具有動態(tài)擴展,按需分配等特點,對計算機的軟硬件資源進行了優(yōu)化,提高了資源的利用率。企業(yè)使用云計算技術不僅可以減少硬件基礎設施的投入,還可以根據(jù)業(yè)務需求對運算能力和存儲容量進行動態(tài)調(diào)整。
在線上運行的服務會產(chǎn)生大量的運行、訪問和安全等日志,通常這些日志包含了線上服務執(zhí)行的成功、失敗還有用戶訪問狀態(tài)等各種信息,并通過文件或標準輸出進行打印。記錄下來的日志可以為運維或開發(fā)人員對線上服務產(chǎn)生的問題進行排查定位提供依據(jù),也可以通過記錄采集的服務器狀態(tài)數(shù)據(jù)進行監(jiān)控,還可以對日志系統(tǒng)設置規(guī)則,通過郵件、短信等方式對告警錯誤等信息進行自動化告警。
大規(guī)模集群系統(tǒng)和應用服務的日志信息分布在各個設備節(jié)點與目錄之中,若通過SSH登錄到相應節(jié)點使用grep、awk與sed等文本處理工具進行日志文本查看,效率過低且難以管理,部署一個集中化的日志管理平臺就顯得勢在必行了。開源的ELK Stack日志分析處理平臺提供了一整套日記采集分析處理的解決方案,它可把服務器上所產(chǎn)生的日志信息和運行狀態(tài)采集匯總后進行查詢、監(jiān)控、分析告警和機器學習等操作處理,使用這套ELK日志分析平臺不僅能提升運維開發(fā)人員的工作效率,還能將業(yè)務服務的運行狀態(tài)及時反饋給相關人員。
1? ELK日志分析平臺結構
ELK Stack日志分析平臺是由Elasticsearch、Logstash和Kibana三款開源軟件組成的集中式日志解決方案,如圖1所示是ELK最簡單的架構,設備節(jié)點的log信息和運行狀態(tài)經(jīng)過Logstash采集,在Logstash中三個組件(input、filter和output)分別指定日志數(shù)據(jù)的輸入源、數(shù)據(jù)過濾加工操作以及數(shù)據(jù)上報目的地,通過output設置將日志數(shù)據(jù)上報至Elasticsearch,然后由Kibana對數(shù)據(jù)進行搜索查詢等展示功能。圖1清晰地展示了數(shù)據(jù)如何在ELK日志分析平臺中流動,了解ELK的三款軟件如何協(xié)調(diào)工作。
Elasticsearch:是一個基于開源Apache Lucene庫的全文搜索引擎構建,它提供了一個分布式的、支持RESTful API的搜索和數(shù)據(jù)分析引擎,具有高可伸縮性、高可靠性和實時性等特點,能對大量數(shù)據(jù)進行快速的存儲、搜索與分析處理操作。
Logstash:是一個開源的數(shù)據(jù)處理采集軟件,具有實時管道功能,能動態(tài)地將多個來自不同數(shù)據(jù)源的數(shù)據(jù)進行統(tǒng)一收集、并對數(shù)據(jù)進行過濾、分析、修飾等操作,然后將數(shù)據(jù)發(fā)送到用戶指定的存儲數(shù)據(jù)庫。Logstash由input、filter和output三個組件組成。input組件可指定不同的數(shù)據(jù)源進行數(shù)據(jù)采集,filter組件可對采集數(shù)據(jù)進一步的過濾處理以方便后續(xù)的分析與存儲操作,output組件則可指定數(shù)據(jù)最后上報的位置。
Kibana:是一個開源的日志數(shù)據(jù)分析、搜索和可視化操作平臺,專門為Elasticsearch設計開發(fā),可以對其中的日志數(shù)據(jù)進行查詢和分析,并以統(tǒng)計圖表的方式展示存放在Elasticsearch索引里的數(shù)據(jù)。Kibana提供了時序圖、區(qū)域圖和報表等常用統(tǒng)計圖表,通過Vega聲明性語法可以定制所需要的可視化統(tǒng)計圖形。Kibana通??梢陨蒆TTP狀態(tài)碼的餅圖、HTTP Request請求的響應時間柱狀圖、統(tǒng)計URL平均響應時間等圖表,做成數(shù)據(jù)大屏。
2? ELK日志采集
2.1? Logstash的性能問題
在實際部署中,Logstash通常作為ELK Stack中的日志采集器(Agent),需要在設備節(jié)點上安裝Logstash Agent,由其采集配置的日志數(shù)據(jù)上報至ELK日志分析平臺。如在部署Logstash Agent后,發(fā)現(xiàn)部分性能較低的節(jié)點內(nèi)存使用率居高不下,可以通過簡單排查發(fā)現(xiàn)是由于Logstash采集日志程序消耗了過多的內(nèi)存資源。因為Logstash是由Ruby語言開發(fā)的,并需要通過JRuby解析器運行在JVM環(huán)境下(JRuby是由Java語言編寫的Ruby解析器),導致該程序的內(nèi)存與CPU資源消耗比想象的要高,特別在一些低性能節(jié)點上會比較明顯,嚴重的可能會導致正常的服務產(chǎn)生異常,系統(tǒng)無法正常工作。如果還使用Logstash的filter插件對日志數(shù)據(jù)進行注釋和索引等操作時,Logstash可能會因為操作的復雜性導致其變成處理器、內(nèi)存和硬盤密集型工具。通常情況下,可以根據(jù)設備節(jié)點的性能調(diào)整各個Logstash的啟動參數(shù),通過-Xms和-Xmx標志為其設置JVM的初始內(nèi)存堆大小,能夠一定程度地優(yōu)化Logstash的性能,但是在設備節(jié)點數(shù)據(jù)數(shù)目眾多的情況下,這樣設置和后續(xù)修改的操作工作量是非常大的。因此在節(jié)點有性能問題約束的情況下,僅僅使用Logstash作為日志采集器并不合適,在這些節(jié)點可以根據(jù)需要直接通過其他程序?qū)⑷罩拘畔⒅苯由蠄笾罞LK日志平臺,例如rsyslog。
2.2? Beats替代Logstash作為日志采集器
Beats是多個單一功能的輕量級數(shù)據(jù)采集器工具集(Agent)的統(tǒng)稱,Beats工具集軟件基于Go語言開發(fā),占用資源比使用Ruby開發(fā)的Logstash更少,執(zhí)行效率更高,并且依賴占用資源少部署方便。Beats工具集包括了Filebeat(文件采集器)、Metricbeat(系統(tǒng)指標采集)、Packetbeat(網(wǎng)絡數(shù)據(jù)采集)和Heartbeat(服務心跳采集)等多種數(shù)據(jù)類型的采集器,每個工具集只做與之相關的數(shù)據(jù)類型采集,它們可以將數(shù)據(jù)上報到Elasticsearch做集中處理,也可以發(fā)送數(shù)據(jù)到ELK日志平臺的Logstash中進行進一步的加工,對數(shù)據(jù)格式進行轉換或者解析。這樣就可以在設備節(jié)點端采集日志時,只采集原始的日志數(shù)據(jù),把日志數(shù)據(jù)的處理加工操作交給性能更強大的ELK日志分析平臺完成,降低設備節(jié)點的內(nèi)存以及CPU和IO的性能消耗,保障業(yè)務服務的正常運行。
下面通過模擬日志數(shù)據(jù)文件對Logstash和Filebeat(日志文件采集器)進行測試對比,兩者在測試環(huán)境一樣的情況下,經(jīng)過5次每次20分鐘的測試,取結果的平均值如表1所示??梢钥吹紽ilebeat的整體資源占用比Logstash要少很多,這樣在低性能的設備節(jié)點中具有很大的優(yōu)勢,Beats采集器專注于數(shù)據(jù)的采集上報,支持TLS雙向認證加密鏈接,保證Beats只向可信的Logstash端點上報加密數(shù)據(jù),避免數(shù)據(jù)在傳輸過程中泄露,還支持背壓敏感協(xié)議,當上報的目的端Logstash繁忙,來不及處理的時候會自動降低日志采集速率,不僅避免網(wǎng)絡數(shù)據(jù)擁堵,還可以降低設備節(jié)點端的資源消耗。
3? 結? 論
在云計算和大數(shù)據(jù)時代,隨著設備節(jié)點的規(guī)模不斷擴大,應用服務的日志數(shù)據(jù)維護管理越來越重要,一個優(yōu)秀的日志分析平臺通過對日志數(shù)據(jù)的處理可很好地分析解決業(yè)務服務中的問題,也可通過配置實現(xiàn)監(jiān)視業(yè)務服務發(fā)生異常時的自動化告警,為運維開發(fā)人員能夠迅速地介入處理故障提供了保障。
ELK日志分析平臺不僅適用于解決大量業(yè)務服務器的日志快速查詢分析等問題,還可進行復雜的定制日志分析功能,尤其針對各種不同的業(yè)務服務日志,通過Logstash自定義過濾與規(guī)則提取,將日志數(shù)據(jù)上報到Elasticsearch進行存儲,之后可在Kibana個性化定制圖表展示數(shù)據(jù)大屏,方便運維開發(fā)人員對日志數(shù)據(jù)進行監(jiān)控與分析。針對部分設備節(jié)點性能有限的情況,還可使用其他日志采集器(如Filebeat)替代Logstash進行數(shù)據(jù)采集,ELK Stack日志處理平臺可通過配置各種輸入源來解決采集端的需求,使其應用場景得到極大地擴充。
參考文獻:
[1] 饒琛琳.ELK Stack權威指南 [M].第2版.北京:機械工業(yè)出版社,2017:98-175.
[2] 胡慶寶,姜曉巍,石京燕,等.基于Elasticsearch的實時集群日志采集和分析系統(tǒng)實現(xiàn) [J].科研信息化技術與應用,2016,7(3):13-18.
[3] 陳建娟,劉行行.基于Kubernetes的分布式ELK日志分析系統(tǒng) [J].電子技術與軟件工程,2016(15):211-212+214.
[4] [美]拉斐爾·酷奇,馬雷克·羅戈任斯基.深入理解Elasticsearch [M].第2版.張世武,余洪淼,商旦,譯.北京:機械工業(yè)出版社,2017:159-181.
[5] [美]拉杜·喬戈,馬修·李·欣曼,羅伊·羅素.Elasticsearch實戰(zhàn) [M].黃申,譯.北京:人民郵電出版社,2018:268-310.
[6] Elasticsearch.Logstash Reference [EB/OL].https://www.elastic.co/guide/en/logstash/7.0/index.html,2019-06-25.
[7] Elasticsearch.Filebeat Reference [EB/OL].https://www.elastic.co/guide/en/beats/filebeat/7.0/index.html,2019-06-25.
作者簡介:李欽(1986-),男,漢族,廣西南寧人,軟件工程
師,本科,研究方向:計算機軟件、服務器運維、物聯(lián)網(wǎng)系統(tǒng)設計;楊程(1992-),男,漢族,安徽桐城人,射頻工程師,畢業(yè)于福建農(nóng)林大學,工學本科,研究方向:微波射頻系統(tǒng)、物聯(lián)網(wǎng)系統(tǒng)設計。