本發(fā)明涉及移動(dòng)通信領(lǐng)域,尤其涉及一種分布式自動(dòng)檢測應(yīng)用運(yùn)行異常方法及系統(tǒng)。
背景技術(shù):
隨著社會(huì)的發(fā)展和科學(xué)的進(jìn)步,我國在移動(dòng)通信領(lǐng)域的發(fā)展得到了長足的進(jìn)步,運(yùn)營商日常運(yùn)維管控規(guī)模的逐漸擴(kuò)大,日常運(yùn)維監(jiān)控的生產(chǎn)系統(tǒng)服務(wù)數(shù)量急劇增加,針對(duì)這一狀態(tài),如何檢測應(yīng)用運(yùn)行異常就顯得尤為重要,現(xiàn)有的方法通常采用人為的登錄到遠(yuǎn)程主機(jī)上檢查運(yùn)行日志是否有異常錯(cuò)誤日志,這種方法很被動(dòng),只有服務(wù)應(yīng)用出問題了,運(yùn)維人員才去查看日志內(nèi)容,額外增加運(yùn)維人員的工作量,檢測效率不高。ELK是ElasticSearch、Logstash、Kibana三個(gè)應(yīng)用的縮寫。ElasticSearch簡稱ES,是一個(gè)基于Lucene的搜索服務(wù)器,主要用來存儲(chǔ)和檢索數(shù)據(jù);Logstash是一個(gè)開源的日志管理工具,主要用來往ES中寫入數(shù)據(jù);Kibana是一個(gè)基于瀏覽器頁面的Elasticsearch前端展示工具,主要用來展示數(shù)據(jù)。
目前,日常運(yùn)維人員使用ELK平臺(tái)的日志分析工具對(duì)日志內(nèi)容進(jìn)行檢索分析,但是現(xiàn)有的方法存在如下缺點(diǎn):第一,在進(jìn)行檢索分析時(shí)每次都是返回全量日志,導(dǎo)致ES中存在大量的重復(fù)性日志,無法解決單點(diǎn)故障的問題,增加了運(yùn)維人員的工作量;第二,一旦Logstash出現(xiàn)問題,ELK就不能正常工作,因此,亟需一種新的技術(shù)手段,能夠解決單點(diǎn)故障的問題,簡化系統(tǒng)檢測過程,減輕運(yùn)維人員的工作量。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種分布式自動(dòng)檢測應(yīng)用運(yùn)行異常方法及系統(tǒng),以解決上述技術(shù)問題,提高日常運(yùn)維管控的準(zhǔn)確性、安全性和效率性。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:
一種分布式自動(dòng)檢測應(yīng)用運(yùn)行異常方法,包括:
b.根據(jù)輸入日志中的關(guān)鍵字對(duì)日志文件進(jìn)行巡檢匹配,將與關(guān)鍵字匹配的日志封裝成任務(wù)流程保存至數(shù)據(jù)庫;
c.將數(shù)據(jù)庫中的每個(gè)周期任務(wù)流程加載到分布式任務(wù)調(diào)度模塊中;
d.周期性順序執(zhí)行任務(wù)流程,并反饋執(zhí)行結(jié)果;
e.根據(jù)反饋的執(zhí)行結(jié)果,獲取異常信息,完成檢測。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn):
進(jìn)一步,步驟b之前還包括:
a.將應(yīng)用日志檢測配置參數(shù)轉(zhuǎn)化為腳本模板,并將所述腳本模板封裝為任務(wù)流程保存至數(shù)據(jù)庫,所述應(yīng)用日志檢測配置參數(shù)至少包括應(yīng)用服務(wù)日志路徑、匹配關(guān)鍵字和應(yīng)用服務(wù)所在主機(jī)的身份信息。采用上述進(jìn)一步方案的有益效果是:解決無法單點(diǎn)檢測,避免每次進(jìn)行檢測時(shí)需要對(duì)全部日志進(jìn)行掃描,以及存儲(chǔ)大量重復(fù)性日志。
進(jìn)一步,所述步驟b中在根據(jù)關(guān)鍵字對(duì)日志進(jìn)行匹配時(shí),
若匹配成功,則將日志中的匹配信息發(fā)送至工作模塊,并將日志行號(hào)存儲(chǔ)到數(shù)據(jù)庫中;
若匹配不成功,則將日志行號(hào)與上個(gè)周期記錄的行號(hào)進(jìn)行比對(duì),若相同,則向工作模塊發(fā)送通知信息。
采用上述進(jìn)一步方案的有益效果是:實(shí)現(xiàn)進(jìn)隊(duì)增量日志進(jìn)行檢測,減少運(yùn)維人員的工作量,提高工作效率。
進(jìn)一步,完成一個(gè)周期日志內(nèi)容檢測后,記錄當(dāng)前日志行數(shù),當(dāng)進(jìn)行下個(gè)周期檢測時(shí),自記錄的行數(shù)起開始進(jìn)行匹配。
采用上述進(jìn)一步方案的有益效果是:為僅對(duì)增量日志進(jìn)行掃描提供數(shù)據(jù)基礎(chǔ)。
進(jìn)一步,所述分布式任務(wù)調(diào)度模塊包括多個(gè)設(shè)置在遠(yuǎn)程主機(jī)的任務(wù)調(diào)度模塊,各個(gè)任務(wù)調(diào)度模塊均衡負(fù)載并定時(shí)觸發(fā)執(zhí)行任務(wù)流程。采用上述進(jìn)一步方案的有益效果是:加強(qiáng)系統(tǒng)的容災(zāi)能力,提高系統(tǒng)的安全性。
相應(yīng)地,本發(fā)明還提供一種分布式自動(dòng)檢測應(yīng)用運(yùn)行異常系統(tǒng),包括:
分布式任務(wù)調(diào)度模塊,用于根據(jù)輸入日志中的關(guān)鍵字巡檢日志文件;
封裝模塊,用于將與關(guān)鍵字匹配的日志封裝成任務(wù)流程;
數(shù)據(jù)庫模塊,用于存儲(chǔ)任務(wù)流程;作業(yè)調(diào)度模塊,用于將數(shù)據(jù)庫中的各個(gè)周期的任務(wù)流程加載至分布式任務(wù)調(diào)度模塊;
任務(wù)流程驅(qū)動(dòng)模塊,用于執(zhí)行任務(wù)流程,并將執(zhí)行結(jié)果反饋至分布式任務(wù)調(diào)度模塊;
工作模塊,用于根據(jù)執(zhí)行任務(wù)流程的執(zhí)行結(jié)果獲取異常信息。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn):
進(jìn)一步,所述封裝模塊將應(yīng)用日志檢測配置參數(shù)轉(zhuǎn)化為腳本模板,并將所述腳本模板封裝為任務(wù)流程保存至數(shù)據(jù)庫模塊,所述應(yīng)用日志檢測配置參數(shù)至少包括應(yīng)用服務(wù)日志路徑、匹配關(guān)鍵字和應(yīng)用服務(wù)所在主機(jī)身份信息。
進(jìn)一步,所述分布式任務(wù)調(diào)度模塊在根據(jù)關(guān)鍵字對(duì)日志文件進(jìn)行匹配時(shí),
若匹配成功,則將日志中的匹配信息發(fā)送至工作模塊,并將日志行號(hào)存儲(chǔ)到數(shù)據(jù)庫中;
若匹配不成功,則將日志行號(hào)與上個(gè)周期記錄的行號(hào)進(jìn)行比對(duì),若相同,則向工作模塊發(fā)送通知信息,若不同,則判定為無異常信息;
完成一個(gè)周期日志內(nèi)容檢測后,分布式任務(wù)調(diào)度模塊記錄當(dāng)前日志行數(shù),當(dāng)進(jìn)行下個(gè)周期檢測時(shí),自記錄的行數(shù)起開始進(jìn)行下一次匹配。
進(jìn)一步,所述分布式任務(wù)調(diào)度模塊包括多個(gè)設(shè)置在遠(yuǎn)程主機(jī)中的任務(wù)調(diào)度模塊,各個(gè)任務(wù)調(diào)度模塊均衡負(fù)載并定時(shí)周期性驅(qū)動(dòng)任務(wù)流程驅(qū)動(dòng)模塊順序執(zhí)行任務(wù)流程。
進(jìn)一步,所述工作模塊包括用于進(jìn)行異常信息處理的告警處理單元和/或用于將異常信息發(fā)送至應(yīng)用服務(wù)負(fù)責(zé)人的告警通知單元??梢允咕S護(hù)人員或負(fù)責(zé)人第一時(shí)間獲取異常信息,提高工作效率。
本發(fā)明的有益效果:本發(fā)明中的技術(shù)方案可以自動(dòng)檢測應(yīng)用服務(wù)運(yùn)行是否異常,通過分布式任務(wù)調(diào)度的方式,不會(huì)存在單點(diǎn)故障的問題,避免了每次檢測時(shí)由于需要進(jìn)行全量日志掃描,導(dǎo)致的出現(xiàn)大量重復(fù)性日志的問題,并且通過每次檢測應(yīng)用日志對(duì)增量的掃描匹配,可以在簡化檢測過程的同時(shí),使得檢測結(jié)果更加準(zhǔn)確,并且通過多個(gè)分布式任務(wù)調(diào)度模塊均衡負(fù)載,大大提高了系統(tǒng)的容災(zāi)能力,保證了系統(tǒng)的安全運(yùn)行。
附圖說明
圖1為本發(fā)明的流程示意圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
如圖1所示,本實(shí)施例中的分布式自動(dòng)檢測應(yīng)用運(yùn)行異常方法,包括:
a.將應(yīng)用日志檢測配置參數(shù)轉(zhuǎn)化為腳本模板,并將所述腳本模板封裝為任務(wù)流程保存至數(shù)據(jù)庫,所述應(yīng)用日志檢測配置參數(shù)至少包括應(yīng)用服務(wù)日志路徑、匹配關(guān)鍵字和應(yīng)用服務(wù)所在主機(jī)的身份信息;
b.根據(jù)輸入日志中的關(guān)鍵字對(duì)日志文件進(jìn)行巡檢匹配,將與關(guān)鍵字匹配的日志封裝成任務(wù)流程保存至數(shù)據(jù)庫;
c.將數(shù)據(jù)庫中的每個(gè)周期任務(wù)流程加載到分布式任務(wù)調(diào)度模塊中;
d.周期性順序執(zhí)行任務(wù)流程,并反饋執(zhí)行結(jié)果;
e.根據(jù)反饋的執(zhí)行結(jié)果,獲取異常信息,完成檢測。
在本實(shí)施例中,在系統(tǒng)前端將有關(guān)應(yīng)用日志檢測配置的參數(shù)屬性轉(zhuǎn)化為腳本模板封裝成具有“開始-環(huán)節(jié)-結(jié)束”的任務(wù)業(yè)務(wù)流程保存到數(shù)據(jù)庫中,通過分布式任務(wù)調(diào)度模塊對(duì)任務(wù)流程進(jìn)行加載和調(diào)度,分布式任務(wù)調(diào)度模塊包括多個(gè)設(shè)置在遠(yuǎn)程主機(jī)的任務(wù)調(diào)度模塊,各個(gè)任務(wù)調(diào)度模塊均衡負(fù)載并定時(shí)觸發(fā)執(zhí)行任務(wù)流程,當(dāng)其中一個(gè)或多個(gè)任務(wù)調(diào)度模塊出現(xiàn)故障時(shí),其他的任務(wù)調(diào)度模塊依然可以繼續(xù)工作,不會(huì)存在單點(diǎn)問題,同時(shí)還可以起到均衡負(fù)載的作用,任務(wù)調(diào)度模塊會(huì)根據(jù)各個(gè)任務(wù)調(diào)度模塊的工作壓力和機(jī)械性能,對(duì)任務(wù)流程進(jìn)行均衡分配,通過作業(yè)調(diào)度模塊把各個(gè)周期的任務(wù)流程加載到分布式任務(wù)調(diào)度模塊,通過分布式任務(wù)調(diào)度模塊定時(shí)的有序的執(zhí)行任務(wù)流程環(huán)節(jié),每次檢測完日志內(nèi)容都會(huì)記錄當(dāng)前日志行數(shù)返回給分布式任務(wù)調(diào)度模塊,根據(jù)反饋的執(zhí)行結(jié)果,獲取異常信息,完成檢測。
在本實(shí)施例中,將應(yīng)用日志檢測配置參數(shù)轉(zhuǎn)化為腳本模板,并將所述腳本模板封裝為任務(wù)流程保存至數(shù)據(jù)庫,所述應(yīng)用日志檢測配置參數(shù)至少包括應(yīng)用服務(wù)日志路徑、匹配關(guān)鍵字和應(yīng)用服務(wù)所在主機(jī)身份信息,應(yīng)用服務(wù)所在主機(jī)身份信息應(yīng)該是唯一的具有標(biāo)識(shí)的信息,例如主機(jī)的ip地址等,本實(shí)施例中,通過封裝模塊把系統(tǒng)前端有關(guān)應(yīng)用日志檢測配置的參數(shù)屬性轉(zhuǎn)化為shell腳本模板,封裝成具有“開始-環(huán)節(jié)-結(jié)束”的任務(wù)業(yè)務(wù)流程保存到數(shù)據(jù)庫中。
在本實(shí)施例中,步驟b中在根據(jù)關(guān)鍵字對(duì)日志進(jìn)行匹配時(shí),
若匹配成功,則將日志中的匹配信息發(fā)送至工作模塊,并將日志行號(hào)存儲(chǔ)到數(shù)據(jù)庫中;
若匹配不成功,則將日志行號(hào)與上個(gè)周期記錄的行號(hào)進(jìn)行比對(duì),若相同,則向工作模塊發(fā)送通知信息。
例如,需要日常維護(hù)172.21.11.31主機(jī)的采集源Agent服務(wù)的運(yùn)行情況,可以通過檢測tomcat的日志內(nèi)容,前端輸入關(guān)鍵字”ERROR”和“EXCEPTION”,任務(wù)調(diào)度模塊會(huì)根據(jù)這兩個(gè)關(guān)鍵字匹配日志內(nèi)容,如果匹配到了日志內(nèi)容,則將日志中的匹配信息發(fā)送至工作模塊,并將掃描的日志行號(hào)存儲(chǔ)到數(shù)據(jù)庫中,可以讓維護(hù)人員或者負(fù)責(zé)人根據(jù)匹配信息判斷Agent應(yīng)用服務(wù)是否運(yùn)行異常,如果沒有匹配到與關(guān)鍵字對(duì)應(yīng)的日志內(nèi)容,但是日志行號(hào)和上個(gè)周期記錄的行號(hào)一致,這個(gè)服務(wù)進(jìn)程有可能僵死了,因此,將行號(hào)一致的執(zhí)行結(jié)果作為通知信息,發(fā)送至工作模塊,工作模塊可以根據(jù)預(yù)設(shè)的操作方式直接對(duì)其進(jìn)行相應(yīng)的處理,也可以通過短信通知或郵件通知的方式發(fā)送給維護(hù)人員;如果沒有匹配到與關(guān)鍵字相對(duì)應(yīng)的日志內(nèi)容,且記錄日志行號(hào)也和上一周期的行號(hào)不一致,說明Agent應(yīng)用服務(wù)進(jìn)程運(yùn)行穩(wěn)定,上述實(shí)施例中的Agent應(yīng)用服務(wù)只是為了進(jìn)行詳細(xì)說明的舉例,本領(lǐng)域技術(shù)人員應(yīng)該可以知曉,通過本實(shí)施例中的檢測方法也可以對(duì)其他應(yīng)用服務(wù)進(jìn)行檢測。
在本實(shí)施例中,在完成一個(gè)周期日志內(nèi)容檢測后,記錄當(dāng)前日志行數(shù),當(dāng)進(jìn)行下個(gè)周期檢測時(shí),自記錄的行數(shù)起開始進(jìn)行匹配。每次檢測完日志內(nèi)容都會(huì)記錄當(dāng)前日志行數(shù)返回給任務(wù)調(diào)度模塊,等到下個(gè)周期再去檢測該日志文件就會(huì)從記錄的行數(shù)開始配置,從而實(shí)現(xiàn)了只對(duì)增量日志進(jìn)行匹配,不會(huì)對(duì)檢測過的日志內(nèi)容進(jìn)行二次匹配,通過這種方法,可以在保證檢測結(jié)果準(zhǔn)確的前提下,大大提升系統(tǒng)的執(zhí)行速度。
在本實(shí)施例中,分布式任務(wù)調(diào)度模塊包括多個(gè)設(shè)置在遠(yuǎn)程主機(jī)的任務(wù)調(diào)度模塊,各個(gè)任務(wù)調(diào)度模塊均衡負(fù)載并定時(shí)觸發(fā)執(zhí)行任務(wù)流程,避免了單點(diǎn)故障對(duì)系統(tǒng)的影響,同時(shí)還可以起到均衡負(fù)載的作用,任務(wù)調(diào)度模塊周期性驅(qū)動(dòng)任務(wù)流程驅(qū)動(dòng)模塊可以根據(jù)任務(wù)流程ID有序的執(zhí)行任務(wù)流程的環(huán)節(jié),定時(shí)觸發(fā)執(zhí)行任務(wù)流程,實(shí)現(xiàn)對(duì)應(yīng)用服務(wù)是否存在運(yùn)行異常的自動(dòng)檢測。
相應(yīng)地,本實(shí)施例提供了一種分布式自動(dòng)檢測應(yīng)用運(yùn)行異常系統(tǒng),包括:
分布式任務(wù)調(diào)度模塊,用于根據(jù)輸入日志中的關(guān)鍵字巡檢日志文件;
封裝模塊,用于將與關(guān)鍵字匹配的日志封裝成任務(wù)流程;
數(shù)據(jù)庫模塊,用于存儲(chǔ)任務(wù)流程;
任務(wù)流程驅(qū)動(dòng)模塊,用于執(zhí)行任務(wù)流程,并將執(zhí)行結(jié)果反饋至分布式任務(wù)調(diào)度模塊;
作業(yè)調(diào)度模塊,用于將數(shù)據(jù)庫中的各個(gè)周期的任務(wù)流程加載至任務(wù)調(diào)度模塊,
工作模塊,用于根據(jù)執(zhí)行任務(wù)流程的執(zhí)行結(jié)果獲取異常信息。
在本實(shí)施例中,封裝模塊將應(yīng)用日志檢測配置參數(shù)轉(zhuǎn)化為腳本模板,并將所述腳本模板封裝為任務(wù)流程保存至數(shù)據(jù)庫模塊,所述應(yīng)用日志檢測配置參數(shù)至少包括應(yīng)用服務(wù)日志路徑、匹配關(guān)鍵字和應(yīng)用服務(wù)所在主機(jī)身份信息。
在本實(shí)施例中,所述分布式任務(wù)調(diào)度模塊在根據(jù)關(guān)鍵字對(duì)日志文件進(jìn)行匹配時(shí),
若匹配成功,則將日志中的匹配信息發(fā)送至工作模塊,并將日志行號(hào)存儲(chǔ)到數(shù)據(jù)庫中;
若匹配不成功,則將日志行號(hào)與上個(gè)周期記錄的行號(hào)進(jìn)行比對(duì),若相同,則向工作模塊發(fā)送通知信息,若不同,則判定為無異常信息;
完成一個(gè)周期日志內(nèi)容檢測后,分布式任務(wù)調(diào)度模塊記錄當(dāng)前日志行數(shù),當(dāng)進(jìn)行下個(gè)周期檢測時(shí),自記錄的行數(shù)起開始進(jìn)行下一次匹配。
在本實(shí)施例中,所述分布式任務(wù)調(diào)度模塊包括多個(gè)設(shè)置在遠(yuǎn)程主機(jī)中的任務(wù)調(diào)度模塊,各個(gè)任務(wù)調(diào)度模塊均衡負(fù)載并定時(shí)周期性驅(qū)動(dòng)任務(wù)流程驅(qū)動(dòng)模塊順序執(zhí)行任務(wù)流程。
在本實(shí)施例中,所述工作模塊包括用于進(jìn)行異常信息處理的告警處理單元和/或用于將異常信息發(fā)送至應(yīng)用服務(wù)負(fù)責(zé)人的告警通知單元。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。