本發(fā)明涉及一種日志實(shí)時(shí)展現(xiàn)和查詢的方法與系統(tǒng),尤其涉及一種大數(shù)據(jù)處理領(lǐng)域的日志實(shí)時(shí)展現(xiàn)和查詢的方法與系統(tǒng)。
背景技術(shù):
在大數(shù)據(jù)時(shí)代背景下,如何對(duì)實(shí)時(shí)日志數(shù)據(jù)進(jìn)行快速分類和高效精準(zhǔn)的查找漸漸成為影響實(shí)施日志管理生產(chǎn)力的重要因素。若能在管理海量實(shí)時(shí)日志數(shù)據(jù)的同時(shí),按照客戶的需求對(duì)數(shù)據(jù)進(jìn)行細(xì)化分類進(jìn)而精準(zhǔn)推送,不僅可以減少用戶等待時(shí)間,提高生產(chǎn)效率,同時(shí)還可以有效保證用戶數(shù)據(jù)的安全性。
實(shí)時(shí)日志ELK包括日志采集和日志實(shí)時(shí)展示與查詢。傳統(tǒng)的ELK采用Logstash完成日志采集并寫入Elasticsearch中,然后再從Elasticsearch中獲取數(shù)據(jù)并通過Kibana展現(xiàn),而Kibana偏重于日志分析和統(tǒng)計(jì),在日志實(shí)時(shí)展現(xiàn)與過濾查詢等功能上一直是短板,不能很好滿足實(shí)時(shí)日志所需的時(shí)效性的需求。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)目前ELK系統(tǒng)中存在的缺陷,本發(fā)明提出了一種新的低延時(shí)、可過濾與查找的實(shí)時(shí)日志展現(xiàn)與查詢系統(tǒng)。該系統(tǒng)基于Logstash+ Kafka+ Tornado的構(gòu)架模式,通過傳統(tǒng)的Logstash采集到日志信息,并將該信息通過插件的方式寫入Kafka,利用Tornado服務(wù)器采用多線程模式讀取日志信息,根據(jù)用戶設(shè)定的過濾規(guī)則對(duì)原數(shù)據(jù)進(jìn)行過濾歸并,然后采用高效的WebSocket將歸整的數(shù)據(jù)精準(zhǔn)推送到顯示前端Livetail,該系統(tǒng)通過一個(gè)或者多個(gè)客戶端采用backbone.js、CCS和HTML等方式將日志信息顯示給用戶。由于該方式中日志信息不在經(jīng)過Elasticsearch而是直接進(jìn)入Kafka,有效降低了信息時(shí)延;同時(shí)利用Tornado的異步非阻塞性,在保證高并發(fā)的同時(shí)可以獲得良好性能;通過服務(wù)器端對(duì)信息進(jìn)行過濾,從源頭上保證了日志信息的安全性;前臺(tái)服務(wù)器通過保存一段時(shí)間的日志數(shù)據(jù),展現(xiàn)實(shí)時(shí)日志消息的同時(shí)還能提供根據(jù)日志過濾功能,用戶可選擇展現(xiàn)不同主機(jī)、應(yīng)用名、日志類型的日志,除此,提供以正則表達(dá)式搜索日志、同時(shí)查看多種日志來源等功能,給用戶提供了很大的查詢靈活度,提供了豐富的操作選擇,極大的提高了用戶體驗(yàn)。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
日志信息采集步驟,通過LOG采集服務(wù)器Logstash對(duì)特定的日志信息進(jìn)行收集。
優(yōu)選的,所述的日志采集步驟是指通過日志采集服務(wù)器Logstash對(duì)ssh_log、apache_access_log、nginx_access_log、mysql_log和other_log等log信息進(jìn)行實(shí)時(shí)收集。
日志信息存儲(chǔ)步驟,通過消息存儲(chǔ)服務(wù)器Kafka將采集到的日志信息歸整形成記錄數(shù)據(jù)供讀取之用。
優(yōu)選的,所述的日志信息存儲(chǔ)步驟是指所述日志采集服務(wù)器Logstash將采集到的日志信息通過插件的方式寫進(jìn)消息存儲(chǔ)管理服務(wù)器Kafka。
日志信息讀取步驟,通過消息管理服務(wù)器Tornado從消息存儲(chǔ)服務(wù)器Kafka中讀出特定實(shí)時(shí)日志信息。
優(yōu)選的,所述的日志信息讀取步驟指的是消息管理服務(wù)器Tornado采用多線程并發(fā)讀取的方式從存儲(chǔ)管理服務(wù)器Kafka讀取所需日志信息。
日志信息過濾步驟,消息管理服務(wù)器Tornado在讀取到日志信息后,對(duì)信息按照特定要求進(jìn)行過濾處理得到目標(biāo)信息。
優(yōu)選的,所述的日志信息過濾步驟是指消息管理服務(wù)器Tornado根據(jù)用戶配置,采用日志所屬用戶或者消息長度限制等過濾條件實(shí)現(xiàn)對(duì)原信息過濾,從而提供用戶需求的日志信息,實(shí)現(xiàn)準(zhǔn)確的信息推送,同時(shí)保證了日志信息的安全性。
前端顯示步驟,消息管理服務(wù)器Tornado通過高效的WebSocket將過濾后得到的信息發(fā)送給前端服務(wù)器Livetail,有前端服務(wù)器進(jìn)行顯示。
優(yōu)選的,所述的前端顯示步驟是指前端服務(wù)器Livetail通過一臺(tái)或者多臺(tái)客戶端將從消息管理服務(wù)器Tornado接收到的日志信息展示給用戶。
優(yōu)選的,所述的客戶端除具備顯示功能外,還提供多窗口管理、過濾與查找、性能管理、可視化操作界面顯示、記錄顯示停止與恢復(fù)、性能管理和Backbone.js等服務(wù)與功能,采用Backbone.js、CCS和HTML等方式展現(xiàn)日志信息。
本發(fā)明還公開了一種日志實(shí)時(shí)展現(xiàn)和查詢的系統(tǒng),該系統(tǒng)包括以下子系統(tǒng):
日志采集系統(tǒng),用于采集日志信息;
日志信息存儲(chǔ)系統(tǒng),用于處理采集到的日志信息,形成記錄并進(jìn)行存儲(chǔ)管理;
日志管理系統(tǒng),用于按照設(shè)定規(guī)則對(duì)輸出日志信息進(jìn)行過濾操作,并提供日志信息高效實(shí)時(shí)推送;
前端系統(tǒng),用于對(duì)讀取到的日志信息進(jìn)行顯示,并提供過濾查找功能及其可視化操作界面。
優(yōu)選的,所述的日志管理服系統(tǒng)Tornado采用socket通道模式進(jìn)行多線程日志信息讀取,并同時(shí)對(duì)一個(gè)或者多個(gè)前端服務(wù)器提供日志數(shù)據(jù)輸送服務(wù)。
優(yōu)選的,所述的前端系統(tǒng)是指包含一個(gè)或者多個(gè)客戶端的前端顯示客戶端群,每個(gè)客戶端為用戶提供多窗口顯示、日志信息過濾與查找、可視化操作界面顯示、性能管理、日志顯示停止與恢復(fù)和backbone.js等功能與服務(wù)。
采用上述技術(shù)方案,本發(fā)明具有以下優(yōu)點(diǎn):
本發(fā)明所述的日志實(shí)時(shí)展現(xiàn)與查詢的方法與系統(tǒng),基于Logstash+ Kafka+ Tornado的構(gòu)架模式,通過傳統(tǒng)的Logstash采集到日志信息,并將該信息通過插件的方式寫入Kafka,利用Tornado服務(wù)器采用多線程模式讀取日志信息,根據(jù)用戶設(shè)定的過濾規(guī)則對(duì)原數(shù)據(jù)進(jìn)行過濾歸并,然后采用高效的WebSocket將歸整的數(shù)據(jù)精準(zhǔn)推送到顯示前端Livetail,該系統(tǒng)通過一個(gè)或者多個(gè)客戶端采用backbone.js、CCS和HTML等方式將日志信息顯示給用戶。由于該方式中日志信息不在經(jīng)過Elasticsearch而是直接進(jìn)入Kafka,有效降低了信息時(shí)延;同時(shí)利用Tornado的異步非阻塞性,在保證高并發(fā)的同時(shí)可以獲得良好性能;通過服務(wù)器端對(duì)信息進(jìn)行過濾,從源頭上保證了日志信息的安全性;前臺(tái)服務(wù)器通過保存一段時(shí)間的日志數(shù)據(jù),展現(xiàn)實(shí)時(shí)日志消息的同時(shí)還能提供根據(jù)日志過濾功能,用戶可選擇展現(xiàn)不同主機(jī)、應(yīng)用名、日志類型的日志,除此,提供以正則表達(dá)式搜索日志、同時(shí)查看多種日志來源等功能,給用戶提供了很大的查詢靈活度,提供了豐富的操作選擇,極大的提高了用戶體驗(yàn)。
附圖說明
圖1為本發(fā)明較佳實(shí)施方式的一種日志實(shí)時(shí)展現(xiàn)和查詢方法與系統(tǒng)的流程圖。
圖2為本發(fā)明較佳實(shí)施方式的一種日志實(shí)時(shí)展現(xiàn)和查詢方法與系統(tǒng)的子系統(tǒng)圖
圖3為本發(fā)明較佳實(shí)施方式的一種日志實(shí)時(shí)展現(xiàn)和查詢方法與系統(tǒng)的方法與系統(tǒng)的流程圖。
圖4位為本發(fā)明較佳實(shí)施方式的一種日志實(shí)時(shí)展現(xiàn)和查詢方法與系統(tǒng)的方法與系統(tǒng)的前端客戶端功能模塊圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明的一個(gè)實(shí)施例,而不是全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域的一般技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明公開了一種日志實(shí)時(shí)展現(xiàn)和查詢的方法,參見圖1所示,該方法包含以下步驟:
步驟S1:通過LOG采集服務(wù)器Logstash對(duì)特定的日志信息進(jìn)行收集;
步驟S2:Tornado服務(wù)器通過多線程并發(fā)讀取模式從消息系統(tǒng)Kafka讀取日志消息記錄,并提供過濾服務(wù);
步驟S3:Tornado服務(wù)器采用高性能的Websocket長鏈接快速將日志消息發(fā)送到前臺(tái)終端Livetail;
日志信息過濾步驟,消息管理服務(wù)器Tornado在讀取到日志信息后,對(duì)信息按照特定要求進(jìn)行過濾處理得到目標(biāo)信息;
步驟S4:前臺(tái)終端Livetail通過特定方式實(shí)時(shí)顯示日志消息,并提供過濾和搜索功能。
本發(fā)明實(shí)施例中,通過Logstash服務(wù)器對(duì)日志信息進(jìn)行采集,然后通過插件的方式將所述日志信息寫入消息存儲(chǔ)服務(wù)器Kafka,采用多線程并發(fā)訪問的方式,利用消息管理服務(wù)器Tornado通過socket訪問方式讀取Kafka中的日志消息。服務(wù)器Tornado根據(jù)用戶設(shè)置的過濾規(guī)則,對(duì)消息進(jìn)行過濾限制并采用高效的WebSocket模式將日志消息推送個(gè)前端服務(wù)器Livetail進(jìn)行顯示。前端服務(wù)器Livetail對(duì)接收到的日志信息提供過濾、查找、性能管理、多窗口管理、日志顯示停止與恢復(fù)和Backbone.js的功能性服務(wù),并采用Backbone.js、CSS、HTML對(duì)日志信息進(jìn)行實(shí)時(shí)展示。
可見,在本實(shí)施例中,Logstash采集到的日志信息不再按照傳統(tǒng)思路寫入Elasticsearch,而是通過插件的方式寫入Kafka,這樣大大降低了數(shù)據(jù)的傳輸時(shí)延,同時(shí)采用并發(fā)非阻塞式的多線程訪問方式,利用Tornado從Kafka服務(wù)器中讀取日志信息,并按照用戶設(shè)置的規(guī)則對(duì)數(shù)據(jù)進(jìn)行過濾匹配,不僅從源頭上保證了日志數(shù)據(jù)的安全性,也大大提高了日志信息的針對(duì)性,提高了數(shù)據(jù)傳輸?shù)捻槙承院蛯?shí)時(shí)性;前臺(tái)服務(wù)器通過保存一段時(shí)間的日志數(shù)據(jù),展現(xiàn)實(shí)時(shí)日志消息的同時(shí)還能提供根據(jù)日志過濾功能,用戶可選擇展現(xiàn)不同主機(jī)、應(yīng)用名、日志類型的日志,除此,提供以正則表達(dá)式搜索日志、同時(shí)查看多種日志來源等功能,給用戶提供了很大的查詢靈活度,提供了豐富的操作選擇,極大的提高了用戶體驗(yàn)。
本發(fā)明實(shí)施例公開了一種日志實(shí)時(shí)展現(xiàn)和查詢具體的系統(tǒng),參見圖3、4,相對(duì)上一實(shí)施例,本實(shí)施例對(duì)技術(shù)方案作了進(jìn)一步的說明和優(yōu)化。具體的,本實(shí)施例中日志實(shí)時(shí)展現(xiàn)與查詢的系統(tǒng)包含以下模塊和技術(shù)方式。
M1:日志信息采集模塊。
具體的,通過日志采集服務(wù)器Logstash采集包括ssh_log、apache_access_log、nginx_access_log、mysql_log和other_log等log信息。
M2:日志消息存儲(chǔ)管理模塊。
具體的,該模塊為日志消息存儲(chǔ)服務(wù)器Kafka,通過插件寫入的方式將所述日志采集服務(wù)器M1采集到的日志信息寫入存儲(chǔ)設(shè)備并形成記錄信息。
E1:并發(fā)讀取通道。
具體的,該讀取通道采取的技術(shù)方案是socket模式,為日志消息管理服務(wù)器Tornado并發(fā)讀取提供服務(wù)通道支持。
M3:信息管理服務(wù)器Tornado。
具體的,該服務(wù)器采用多線程并發(fā)非阻塞是訪問的模式,通過所述E1通道快速讀取所述日志存儲(chǔ)服務(wù)器M2中的日志信息,并根據(jù)用戶設(shè)置,提供包括日志信息所屬主機(jī)信息、消息長度限制等過濾條件對(duì)日志信息進(jìn)行過濾匹配,形成用戶日志信息。
E2:快速傳送通道。
具體的,該通道為高性能的WebSocket模式,為所述信息管理服務(wù)器M3將過濾后的日志信息快速向外輸送提供高效通道支持。
M4:前端顯示系統(tǒng)Livetail。
具體的,該系統(tǒng)通過一個(gè)或者多個(gè)客戶端對(duì)從所述日志消息管理服務(wù)器M3傳送的日志信息進(jìn)行顯示,參見圖4,所述客戶端包括,多窗口管理模塊、過濾模塊、日志顯示停止與恢復(fù)模塊、可視化模塊、性能優(yōu)化模塊和Backbone.js模塊。
進(jìn)一步的,過濾模塊包括正則表達(dá)式過濾模塊,和原數(shù)據(jù)過濾模塊。
再進(jìn)一步的,所述正則表達(dá)式過濾模塊給用戶提供正則表達(dá)式過濾與查詢功能,所述原數(shù)據(jù)過濾模塊包括主機(jī)名過濾、應(yīng)用名稱過濾和日志類型過濾。
進(jìn)一步的,可視化模塊實(shí)現(xiàn)了命令模擬器的可視化界面操作,給用戶使用提供便利。
進(jìn)一步的,Backbone.js包括集合、視圖和模型。通過該模塊實(shí)現(xiàn)對(duì)日志信息的實(shí)時(shí)顯示與更新。
根據(jù)本發(fā)明的另一方面,參見圖2,所述日志實(shí)時(shí)展現(xiàn)與查詢的系統(tǒng)包括以下子系統(tǒng):
日志采集系統(tǒng)M1,用于采集日志信息;
日志信息存儲(chǔ)系統(tǒng)M2,用于處理采集到的日志信息,形成記錄并進(jìn)行存儲(chǔ)管理;
日志管理系統(tǒng)M3,用于按照設(shè)定規(guī)則對(duì)輸出日志信息進(jìn)行過濾操作,并提供日志信息高效實(shí)時(shí)推送;
前端系統(tǒng)M4,用于對(duì)讀取到的日志信息進(jìn)行顯示,并提供過濾查找功能及其可視化操作界面。
本實(shí)施例中,日志采集系統(tǒng)通過插件的方式將采集到的日志數(shù)據(jù)信息寫入信息存儲(chǔ)系統(tǒng)M2形成消息記錄,日志管理子系統(tǒng)M3采用并發(fā)訪問的方式從信息存儲(chǔ)系統(tǒng)M2中讀取日志信息并按照用戶設(shè)置規(guī)則對(duì)原數(shù)據(jù)進(jìn)行過濾,將過濾的數(shù)據(jù)通過高效的WebSocket推送給前端系統(tǒng)M4進(jìn)行顯示,前端系統(tǒng)M4根據(jù)用戶需求提供過濾、查找、日志查看終端與恢復(fù)等服務(wù),通過Backbone.js、CCS和HTML的方式進(jìn)行日志實(shí)時(shí)顯示。
綜上所述,通過傳統(tǒng)的Logstash采集到日志信息,并將該信息通過插件的方式寫入Kafka,利用Tornado服務(wù)器采用多線程模式讀取日志信息,根據(jù)用戶設(shè)定的過濾規(guī)則對(duì)原數(shù)據(jù)進(jìn)行過濾歸并,然后采用高效的WebSocket將歸整的數(shù)據(jù)精準(zhǔn)推送到顯示前端Livetail,該系統(tǒng)通過一個(gè)或者多個(gè)客戶端采用backbone.js、CCS和HTML等方式將日志信息顯示給用戶。由于該方式中日志信息不在經(jīng)過Elasticsearch而是直接進(jìn)入Kafka,有效降低了信息時(shí)延;同時(shí)利用Tornado的異步非阻塞性,在保證高并發(fā)的同時(shí)可以獲得良好性能;通過服務(wù)器端對(duì)信息進(jìn)行過濾,從源頭上保證了日志信息的安全性;前臺(tái)服務(wù)器通過保存一段時(shí)間的日志數(shù)據(jù),展現(xiàn)實(shí)時(shí)日志消息的同時(shí)還能提供根據(jù)日志過濾功能,用戶可選擇展現(xiàn)不同主機(jī)、應(yīng)用名、日志類型的日志,除此,提供以正則表達(dá)式搜索日志、同時(shí)查看多種日志來源等功能,給用戶提供了很大的查詢靈活度,提供了豐富的操作選擇,極大的提高了用戶體驗(yàn)。
以上所述僅為舉例性,而非為限制性。本領(lǐng)域的技術(shù)人員可以對(duì)發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包括這些改動(dòng)和變型在內(nèi)。