本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種故障定位方法及裝置。
背景技術(shù):
隨著信息時(shí)代的到來,用戶的需求越來越多樣化,服務(wù)運(yùn)營商為了滿足用戶的需求,開發(fā)了多種服務(wù),這些開發(fā)出的服務(wù)之間相互配合,相互調(diào)用才能滿足用戶的需求。服務(wù)只有依托于服務(wù)器才能實(shí)現(xiàn)其功能,因此,可以將服務(wù)部署在至少一臺(tái)服務(wù)器上。然而隨著服務(wù)的數(shù)量不斷地增加,服務(wù)器的數(shù)量也隨之增加,但每一臺(tái)服務(wù)器中運(yùn)行的服務(wù)均有可能出現(xiàn)故障,而服務(wù)器中運(yùn)行的服務(wù)的故障有可能導(dǎo)致響應(yīng)用戶的任務(wù)處理請(qǐng)求失敗,因此,需要對(duì)故障進(jìn)行定位,確定發(fā)生故障的服務(wù)所在的服務(wù)器,同時(shí)確定出現(xiàn)故障的原因,以便于維護(hù)人員根據(jù)出現(xiàn)故障的原因,及時(shí)對(duì)該服務(wù)器中出現(xiàn)故障的服務(wù)進(jìn)行維修。
在現(xiàn)有技術(shù)中,可以通過日志對(duì)故障進(jìn)行定位,具體的方法為:接收目標(biāo)用戶的故障報(bào)修請(qǐng)求;其中,所述故障報(bào)修請(qǐng)求包含目標(biāo)用戶的標(biāo)識(shí)信息;基于該標(biāo)識(shí)信息,在存儲(chǔ)的各個(gè)服務(wù)器的日志中確認(rèn)目標(biāo)日志,其中,目標(biāo)日志為服務(wù)器處理目標(biāo)用戶的任務(wù)處理請(qǐng)求時(shí)產(chǎn)生的;對(duì)獲取的目標(biāo)日志進(jìn)行分析,確定出現(xiàn)故障的服務(wù)所在的服務(wù)器。通常情況下可以通過上述方式進(jìn)行故障定位,但由于日志量數(shù)目繁多,逐一進(jìn)行日志排查速度較慢,因此,難以在短時(shí)間內(nèi)確定目標(biāo)日志,從而導(dǎo)致故障定位的時(shí)間比較長。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供一種故障定位方法及裝置,以實(shí)現(xiàn)快速地對(duì)故障進(jìn)行定位。具體技術(shù)方案如下:
第一方面,為了達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種故障定位方法,所述方法包括:
確定目標(biāo)跟蹤鍵,其中,所述目標(biāo)跟蹤鍵為用于跟蹤響應(yīng)目標(biāo)服務(wù)請(qǐng)求的服務(wù)器的標(biāo)識(shí)信息;
在本地存儲(chǔ)的日志中確定記錄有所述目標(biāo)跟蹤鍵的日志,并將所確定的日志確定為目標(biāo)日志,其中,本地存儲(chǔ)的每一日志均記錄有服務(wù)器所響應(yīng)服務(wù)請(qǐng)求對(duì)應(yīng)的跟蹤鍵;
根據(jù)所述目標(biāo)日志中記載的告警信息,定位出現(xiàn)故障的服務(wù)所在的服務(wù)器。
可選的,所述目標(biāo)跟蹤鍵由預(yù)設(shè)數(shù)量個(gè)預(yù)設(shè)類型的數(shù)值組成。
可選的,所述確定目標(biāo)跟蹤鍵,包括:
接收針對(duì)目標(biāo)服務(wù)請(qǐng)求失敗的故障定位請(qǐng)求,其中,所述故障定位請(qǐng)求中攜帶所述目標(biāo)服務(wù)請(qǐng)求的識(shí)別信息;
在本地存儲(chǔ)的日志中查詢記錄有所述目標(biāo)服務(wù)請(qǐng)求的識(shí)別信息的日志;
根據(jù)查詢到的日志中記錄的跟蹤鍵,確定目標(biāo)跟蹤鍵。
可選的,所述確定目標(biāo)跟蹤鍵,包括:
檢測本地存儲(chǔ)的日志中是否存在包含預(yù)設(shè)標(biāo)識(shí)的日志;
如果存在,根據(jù)包含所述預(yù)設(shè)標(biāo)識(shí)的日志中記錄的跟蹤鍵,確定目標(biāo)跟蹤鍵。
可選的,所述根據(jù)所述目標(biāo)日志中記載的告警信息,確定出現(xiàn)故障的服務(wù)所在的服務(wù)器,包括:
確定所述目標(biāo)日志中記載的告警信息對(duì)應(yīng)的告警時(shí)間;
將所述目標(biāo)日志中告警時(shí)間最早的日志對(duì)應(yīng)的服務(wù)器定位為出現(xiàn)故障的服務(wù)所在的服務(wù)器。
第二方面,為了達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種故障定位裝置,所述裝置包括:
第一確定模塊,用于確定目標(biāo)跟蹤鍵,其中,所述目標(biāo)跟蹤鍵為用于跟蹤響應(yīng)目標(biāo)服務(wù)請(qǐng)求的服務(wù)器的標(biāo)識(shí)信息;
第二確定模塊,用于在本地存儲(chǔ)的日志中確定記錄有所述目標(biāo)跟蹤鍵的日志,并將所確定的日志確定為目標(biāo)日志,其中,本地存儲(chǔ)的每一日志均記錄有服務(wù)器所響應(yīng)服務(wù)請(qǐng)求對(duì)應(yīng)的跟蹤鍵;
定位模塊,用于根據(jù)所述目標(biāo)日志中記載的告警信息,定位出現(xiàn)故障的服務(wù)所在的服務(wù)器。
可選的,所述目標(biāo)跟蹤鍵由預(yù)設(shè)數(shù)量個(gè)預(yù)設(shè)類型的數(shù)值組成。
可選的,所述第一確定模塊,包括:
接收子模塊,用于接收針對(duì)目標(biāo)服務(wù)請(qǐng)求失敗的故障定位請(qǐng)求,其中,所述故障定位請(qǐng)求中攜帶所述目標(biāo)服務(wù)請(qǐng)求的識(shí)別信息;
查詢子模塊,用于在本地存儲(chǔ)的日志中查詢記錄有所述目標(biāo)服務(wù)請(qǐng)求的識(shí)別信息的日志;
第一確定子模塊,根據(jù)查詢到的日志中記錄的跟蹤鍵,確定目標(biāo)跟蹤鍵。
可選的,所述第一確定模塊,包括:
檢測子模塊,用于檢測本地存儲(chǔ)的日志中是否存在包含預(yù)設(shè)標(biāo)識(shí)的日志;
第二確定子模塊,用于在所述檢測子模塊的檢測結(jié)果為存在的情況下,根據(jù)包含所述預(yù)設(shè)標(biāo)識(shí)的日志中記錄的跟蹤鍵,確定目標(biāo)跟蹤鍵。
可選的,所述定位模塊,包括:
第三確定子模塊,用于確定所述目標(biāo)日志中記載的告警信息對(duì)應(yīng)的告警時(shí)間;
定位子模塊,用于將所述目標(biāo)日志中告警時(shí)間最早的日志對(duì)應(yīng)的服務(wù)器定位為出現(xiàn)故障的服務(wù)所在的服務(wù)器。
本發(fā)明實(shí)施例提供的故障定位方法及裝置,通過跟蹤鍵快速地確定目標(biāo)日志,根據(jù)目標(biāo)日志中的告警信息,可以定位出現(xiàn)故障的服務(wù)所在的服務(wù)器,相較于現(xiàn)有技術(shù),確定目標(biāo)日志的時(shí)間比較短,能夠快速地對(duì)故障進(jìn)行定位。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種故障定位方法的流程示意圖;
圖2為本發(fā)明實(shí)施例中跟蹤鍵在服務(wù)之間傳遞的示意圖;
圖3為本發(fā)明實(shí)施例中采用flume收集日志的示意圖;
圖4為本發(fā)明實(shí)施例提供的一種故障定位裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1為本發(fā)明實(shí)施例提供的一種故障定位方法的流程示意圖,方法包括:
s101:確定目標(biāo)跟蹤鍵,其中,所述目標(biāo)跟蹤鍵為用于跟蹤響應(yīng)目標(biāo)服務(wù)請(qǐng)求的服務(wù)器的標(biāo)識(shí)信息。
具體的,目標(biāo)跟蹤鍵可以由預(yù)設(shè)數(shù)量個(gè)預(yù)設(shè)類型的數(shù)值組成。
在本發(fā)明實(shí)施例中,跟蹤鍵(traceid)是數(shù)值型時(shí),可以使得跟蹤鍵占用的空間比較固定,生成比較容易,具體的,可以采用隨機(jī)算法生成。預(yù)設(shè)數(shù)量可以為一個(gè)或多個(gè),具體可以根據(jù)在第一段時(shí)間內(nèi),服務(wù)請(qǐng)求的數(shù)量確定。預(yù)設(shè)類型可以為整型、長整型等等,示例性的,跟蹤鍵可以由兩個(gè)長整型的數(shù)值組成,一個(gè)長整型的值空間為264,兩個(gè)長整型的值空間為2128,則兩個(gè)跟蹤鍵相同的概率為1/2128,兩個(gè)跟蹤鍵相同的概率極小,確保了根據(jù)跟蹤鍵確定的日志準(zhǔn)確性。
在實(shí)際應(yīng)用中,服務(wù)請(qǐng)求由多個(gè)服務(wù)響應(yīng),服務(wù)之間相互配合才能完成對(duì)服務(wù)請(qǐng)求的處理。跟蹤鍵可以是第一個(gè)對(duì)服務(wù)請(qǐng)求進(jìn)行處理的服務(wù)所在的服務(wù)器生成的,生成的跟蹤鍵作為服務(wù)調(diào)用的額外參數(shù),每次調(diào)用都將該跟蹤鍵作為參數(shù)傳遞給新的服務(wù)。示例性,跟蹤鍵在服務(wù)之間傳遞的示意圖可以如圖2所示,web(worldwideweb,全球廣域網(wǎng))service(服務(wù))生成跟蹤鍵1,并將該跟蹤鍵1傳遞給http(hypertexttransferprotocol,超文本傳輸協(xié)議)service和rpc(remoteprocedurecallprotocol,遠(yuǎn)程過程調(diào)用協(xié)議)service,httpservice將跟蹤鍵1傳遞給db(database,數(shù)據(jù)庫)service,rpcservice將跟蹤鍵1傳遞給hbaseservice。其中,hbase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫。
跟蹤鍵在服務(wù)之間傳遞可以理解為一個(gè)服務(wù)中的服務(wù)器響應(yīng)該服務(wù)請(qǐng)求,然后將跟蹤鍵連同其他的參數(shù)傳遞給下一個(gè)服務(wù)中的服務(wù)器。當(dāng)然,跟蹤鍵也可以是公共組件庫生成的,在公共組件庫中設(shè)置跟蹤鍵變量,針對(duì)一個(gè)服務(wù)請(qǐng)求生成一個(gè)跟蹤鍵,且隨著服務(wù)請(qǐng)求在不同的服務(wù)中處理,跟蹤鍵也會(huì)隨不同服務(wù)的組件中傳遞。跟蹤鍵在公共組件庫中傳遞,與現(xiàn)有技術(shù)中的其他參數(shù)在公共組件庫中的傳遞方法相同,在這里不進(jìn)行贅述。
第一種跟蹤鍵傳遞方法實(shí)現(xiàn)比較簡單,但需要額外傳遞跟蹤鍵。第二種跟蹤鍵傳遞方法對(duì)用戶透明,且是自動(dòng)傳遞的,但需要公共組件庫中所有公共組件的支持。需要說明的是,公共組件庫是由公共組件組成的庫,公共組件是可以被外層的組件或程序調(diào)用的組件。
在本發(fā)明實(shí)施例中,可以通過以下方式確定目標(biāo)跟蹤鍵:
第一步:接收針對(duì)目標(biāo)服務(wù)請(qǐng)求失敗的故障定位請(qǐng)求,其中,所述故障定位請(qǐng)求中攜帶所述目標(biāo)服務(wù)請(qǐng)求的識(shí)別信息。
在本發(fā)明實(shí)施例中,服務(wù)器出現(xiàn)故障會(huì)導(dǎo)致服務(wù)請(qǐng)求處理失敗,則將會(huì)有相應(yīng)的故障定位請(qǐng)求。該故障定位請(qǐng)求可以是用戶發(fā)送的,也可以是其他系統(tǒng)發(fā)送的,還可以是出現(xiàn)故障的服務(wù)所在的服務(wù)器發(fā)送的等等,在這里并不進(jìn)行限定。故障定位請(qǐng)求攜帶了目標(biāo)服務(wù)請(qǐng)求的標(biāo)識(shí)信息,示例性的,該標(biāo)識(shí)信息可以包含發(fā)送目標(biāo)服務(wù)請(qǐng)求的時(shí)間、所使用的ip(internetprotocol,網(wǎng)絡(luò)之間互連的協(xié)議)地址等等用來確定目標(biāo)服務(wù)請(qǐng)求的信息。
第二步:在本地存儲(chǔ)的日志中查詢記錄有所述目標(biāo)服務(wù)請(qǐng)求的識(shí)別信息的日志。
在本發(fā)明實(shí)施例中,每個(gè)服務(wù)所在的每一服務(wù)器均可以打印日志,打印日志就是生成日志并將日志保存起來。在一個(gè)服務(wù)器打印日志的時(shí)候,將記錄有該服務(wù)器所響應(yīng)服務(wù)請(qǐng)求對(duì)應(yīng)的跟蹤鍵也打印進(jìn)去。示例性的,服務(wù)請(qǐng)求1對(duì)應(yīng)的跟蹤鍵為跟蹤鍵1,則服務(wù)器1打印針對(duì)服務(wù)請(qǐng)求1對(duì)應(yīng)的日志,同時(shí)將跟蹤鍵1打印到該日志中。
本發(fā)明實(shí)施例提供的故障定位方法可以應(yīng)用于elasticsearch。elasticsearch是一個(gè)基于lucene(全文搜索引擎)的搜索服務(wù)器,不僅是一款提供存儲(chǔ),查詢,檢索的優(yōu)秀的開源搜索引擎,還可以提供即時(shí)查詢。在實(shí)際應(yīng)用中,可以將每個(gè)服務(wù)所部署的服務(wù)器上的日志都收集起來存儲(chǔ)在elasticsearch。
在本發(fā)明實(shí)施例中,可以利用日志收集工具進(jìn)行日志的收集,日志收集工具可以為flume、logstash等等。flume是cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志收集、聚合和傳輸?shù)南到y(tǒng)。示例性的,采用flume收集日志的示意圖可以如圖3所示,可以將flume部署到每一服務(wù)中,每個(gè)服務(wù)中部署的flume進(jìn)行日志的收集,并將收集的日志存儲(chǔ)到elasticsearch。logstash是一款輕量級(jí)的日志收集處理框架,可以方便的把分散的、多樣化的日志收集起來,并進(jìn)行自定義的處理,然后將收集到的日志傳輸?shù)街付ǖ奈恢谩?/p>
第三步:根據(jù)查詢到的日志中記錄的跟蹤鍵,確定目標(biāo)跟蹤鍵。
在本發(fā)明實(shí)施例中,查詢到的日志中不僅包含了目標(biāo)服務(wù)請(qǐng)求的識(shí)別信息,還包含了跟蹤鍵,可以將該跟蹤鍵確定為目標(biāo)跟蹤鍵。
在本發(fā)明實(shí)施例中,還可以通過以下方式確定目標(biāo)跟蹤鍵:
第一步:檢測本地存儲(chǔ)的日志中是否存在包含預(yù)設(shè)標(biāo)識(shí)的日志。
在實(shí)際應(yīng)用中,elasticsearch存儲(chǔ)所接收的日志,然后,檢測本地存儲(chǔ)的日志中是否存在包含預(yù)設(shè)標(biāo)識(shí)的日志,這里所說的預(yù)設(shè)標(biāo)識(shí)可以是告警的標(biāo)識(shí)信息,示例性的,可以是error(錯(cuò)誤)。如果日志中包含了預(yù)設(shè)標(biāo)識(shí),說明該日志對(duì)應(yīng)的服務(wù)器中運(yùn)行的服務(wù)可能出現(xiàn)故障,或者是與該服務(wù)器處理同一服務(wù)請(qǐng)求的其他服務(wù)器中運(yùn)行的服務(wù)出現(xiàn)故障。
第二步:根據(jù)包含所述預(yù)設(shè)標(biāo)識(shí)的日志中記錄的跟蹤鍵,確定目標(biāo)跟蹤鍵。
如果檢測到多個(gè)日志中包含有預(yù)設(shè)標(biāo)識(shí),且這些日志對(duì)針對(duì)一個(gè)服務(wù)請(qǐng)求,則可以直接將包含有預(yù)設(shè)標(biāo)識(shí)的日志中記錄的跟蹤鍵,確定為目標(biāo)跟蹤鍵。
如果檢測到多個(gè)日志中包含有預(yù)設(shè)標(biāo)識(shí),且這些日志對(duì)針對(duì)不同的服務(wù)請(qǐng)求產(chǎn)生的,則可以通過以下兩種方法在檢測到的包含有預(yù)設(shè)標(biāo)識(shí)的日志中確定目標(biāo)跟蹤鍵:
第一種:可以將檢測到的包含有預(yù)設(shè)標(biāo)識(shí)的日志中,包含有同一個(gè)跟蹤鍵的日志分為一類。將其中一類日志中的跟蹤鍵確定為目標(biāo)跟蹤鍵,再根據(jù)該目標(biāo)跟蹤鍵確定目標(biāo)日志,進(jìn)而定位出現(xiàn)故障的服務(wù)器。然后,在跟蹤鍵沒有被確定為目標(biāo)跟蹤鍵的其他類日志中,選擇一類日志,將選擇的日志中的跟蹤鍵確定為目標(biāo)跟蹤鍵。重復(fù)執(zhí)行確定目標(biāo)日志,進(jìn)而定位出現(xiàn)故障的服務(wù)器的步驟,直至每一類包含有預(yù)設(shè)標(biāo)識(shí)的日志中跟蹤鍵均確定為目標(biāo)跟蹤鍵。
第二種:可以將檢測到的包含有預(yù)設(shè)標(biāo)識(shí)的日志中,包含有同一個(gè)跟蹤鍵的日志分為一類,分別將每一類日志中的跟蹤鍵確定為目標(biāo)跟蹤鍵,針對(duì)每一類日志中確定的跟蹤鍵,分別執(zhí)行根據(jù)目標(biāo)跟蹤鍵確定目標(biāo)日志,進(jìn)而定位出現(xiàn)故障的服務(wù)器的步驟。
第一種方法是串行地確定目標(biāo)跟蹤鍵,第二種方法是并行地確定目標(biāo)跟蹤鍵,在實(shí)際應(yīng)用中,可以選擇其中的一種方法確定目標(biāo)跟蹤鍵。
s102:在本地存儲(chǔ)的日志中確定記錄有所述目標(biāo)跟蹤鍵的日志,并將所確定的日志確定為目標(biāo)日志,其中,本地存儲(chǔ)的每一日志均記錄有服務(wù)器所響應(yīng)服務(wù)請(qǐng)求對(duì)應(yīng)的跟蹤鍵。
需要說明的是,在本地存儲(chǔ)的日志中,確定記錄有目標(biāo)跟蹤鍵的所有日志。示例性的,日志1、日志2、日志3和日志4都記錄有目標(biāo)跟蹤鍵,則將日志1、日志2、日志3和日志4確定為目標(biāo)日志。
本領(lǐng)域內(nèi)技術(shù)人員可以理解的是,任何一臺(tái)服務(wù)器在運(yùn)行過程中均可以針對(duì)其運(yùn)行狀態(tài)生成日志,這些日志中可以包括:服務(wù)器所處理請(qǐng)求的標(biāo)識(shí)、運(yùn)行狀態(tài)記錄、處理請(qǐng)求是否成功的標(biāo)識(shí)等等;另外,服務(wù)的正常運(yùn)行是依托于硬件設(shè)備的,一個(gè)服務(wù)的正常運(yùn)行可能會(huì)依托于一臺(tái)服務(wù)器,也可能依托于多臺(tái)服務(wù)器;基于上述兩方面情況,可以得知服務(wù)請(qǐng)求是由服務(wù)所依托的服務(wù)器具體響應(yīng)的,那么這些服務(wù)器可以在響應(yīng)服務(wù)請(qǐng)求的過程中生成日志。
具體的,跟蹤鍵與服務(wù)請(qǐng)求是相對(duì)應(yīng)的,所以在生成日志的同時(shí)可以在日志內(nèi)容中記錄跟蹤鍵,這樣每一條日志可以清楚、直觀的與各個(gè)服務(wù)請(qǐng)求相對(duì)應(yīng)。綜合上述情況,能夠?qū)崿F(xiàn)采用跟蹤鍵對(duì)響應(yīng)該跟蹤鍵對(duì)應(yīng)的服務(wù)請(qǐng)求的服務(wù)器進(jìn)行跟蹤,使得可以根據(jù)跟蹤鍵,一次性獲取服務(wù)器針對(duì)該服務(wù)請(qǐng)求產(chǎn)生的日志,這樣就根據(jù)獲取的日志定位故障,實(shí)現(xiàn)一站式定位故障,方便快捷。
s103:根據(jù)所述目標(biāo)日志中記載的告警信息,定位出現(xiàn)故障的服務(wù)所在的服務(wù)器。
在本發(fā)明實(shí)施例中,一個(gè)服務(wù)器中運(yùn)行的服務(wù)出現(xiàn)故障,則該服務(wù)器的日志中會(huì)出現(xiàn)告警信息,與該服務(wù)器一起響應(yīng)同一服務(wù)請(qǐng)求的服務(wù)器的日志中也可能會(huì)出現(xiàn)告警信息。示例性的,服務(wù)器1、服務(wù)器2、服務(wù)器3和服務(wù)器4依次響應(yīng)服務(wù)請(qǐng)求a,如果服務(wù)器3中運(yùn)行的服務(wù)出現(xiàn)故障,則服務(wù)器3針對(duì)服務(wù)請(qǐng)求a產(chǎn)生的日志出現(xiàn)告警信息,服務(wù)器1和服務(wù)器2針對(duì)服務(wù)請(qǐng)求a產(chǎn)生的日志也會(huì)出現(xiàn)告警信息。對(duì)目標(biāo)日志中的告警信息進(jìn)行分析,可以定位出現(xiàn)故障的服務(wù)所在的服務(wù)器。
在本發(fā)明的一個(gè)優(yōu)選的實(shí)施例中,根據(jù)所述目標(biāo)日志中記載的告警信息,確定出現(xiàn)故障的服務(wù)所在的服務(wù)器,包括:
確定所述目標(biāo)日志中記載的告警信息對(duì)應(yīng)的告警時(shí)間;
將所述目標(biāo)日志中告警時(shí)間最早的日志對(duì)應(yīng)的服務(wù)器定位為出現(xiàn)故障的服務(wù)所在的服務(wù)器。
這里所說的告警時(shí)間為告警信息產(chǎn)生的時(shí)間,每一個(gè)告警時(shí)間對(duì)應(yīng)一個(gè)告警信息。一個(gè)服務(wù)器出現(xiàn)故障,響應(yīng)的服務(wù)請(qǐng)求的日志中記載告警信息,而且響應(yīng)該服務(wù)請(qǐng)求的其他服務(wù)器針對(duì)該服務(wù)請(qǐng)求的日志中也會(huì)記載告警信息。因此,可以將目標(biāo)日志中告警時(shí)間最早的日志對(duì)應(yīng)的服務(wù)器確定為出現(xiàn)故障的服務(wù)器。示例性的,告警時(shí)間可以是告警時(shí)間戳,確定目標(biāo)日志中每一日志的告警時(shí)間戳,對(duì)所確定的告警時(shí)間戳按照告警時(shí)間戳的先后進(jìn)行排序,將排在最前面的告警時(shí)間戳對(duì)應(yīng)的服務(wù)器,定位為出現(xiàn)故障的服務(wù)所在的服務(wù)器。
在本發(fā)明實(shí)施例中,目標(biāo)日志中不僅記載了告警時(shí)間,還記載了出現(xiàn)故障的原因,維護(hù)人員可以根據(jù)出現(xiàn)故障的原因,確定服務(wù)器中的服務(wù)具體是哪里出現(xiàn)問題,進(jìn)而解決該問題,使得該服務(wù)器中的服務(wù)能夠正常運(yùn)行,能夠?qū)Ψ?wù)請(qǐng)求進(jìn)行處理。
應(yīng)用本發(fā)明實(shí)施例,通過跟蹤鍵快速地確定目標(biāo)日志,根據(jù)目標(biāo)日志中的告警信息,可以定位出現(xiàn)故障的服務(wù)所在的服務(wù)器,相較于現(xiàn)有技術(shù),確定目標(biāo)日志的時(shí)間比較短,能夠快速地對(duì)故障進(jìn)行定位。
與圖1所示的方法實(shí)施例相對(duì)應(yīng),圖4為本發(fā)明實(shí)施例提供的一種故障定位裝置的結(jié)構(gòu)示意圖,裝置包括第一確定模塊201、第二確定模塊202和定位模塊203,其中,
第一確定模塊201,用于確定目標(biāo)跟蹤鍵,其中,所述目標(biāo)跟蹤鍵為用于跟蹤響應(yīng)目標(biāo)服務(wù)請(qǐng)求的服務(wù)器的標(biāo)識(shí)信息;
第二確定模塊202,用于在本地存儲(chǔ)的日志中確定記錄有所述目標(biāo)跟蹤鍵的日志,并將所確定的日志確定為目標(biāo)日志,其中,本地存儲(chǔ)的每一日志均記錄有服務(wù)器所響應(yīng)服務(wù)請(qǐng)求對(duì)應(yīng)的跟蹤鍵;
定位模塊203,用于根據(jù)所述目標(biāo)日志中記載的告警信息,定位出現(xiàn)故障的服務(wù)所在的服務(wù)器。
具體的,所述目標(biāo)跟蹤鍵由預(yù)設(shè)數(shù)量個(gè)預(yù)設(shè)類型的數(shù)值組成。
具體的,所述第一確定模塊201,可以包括接收子模塊、查詢子模塊和第一確定子模塊(圖中未示出)。
接收子模塊,用于接收針對(duì)目標(biāo)服務(wù)請(qǐng)求失敗的故障定位請(qǐng)求,其中,所述故障定位請(qǐng)求中攜帶所述目標(biāo)服務(wù)請(qǐng)求的識(shí)別信息;
查詢子模塊,用于在本地存儲(chǔ)的日志中查詢記錄有所述目標(biāo)服務(wù)請(qǐng)求的識(shí)別信息的日志;
第一確定子模塊,根據(jù)查詢到的日志中記錄的跟蹤鍵,確定目標(biāo)跟蹤鍵。
具體的,所述第一確定模塊201,可以包括檢測子模塊和第二確定子模塊(圖中未示出)。
檢測子模塊,用于檢測本地存儲(chǔ)的日志中是否存在包含預(yù)設(shè)標(biāo)識(shí)的日志;
第二確定子模塊,用于在所述檢測子模塊的檢測結(jié)果為存在的情況下,根據(jù)包含所述預(yù)設(shè)標(biāo)識(shí)的日志中記錄的跟蹤鍵,確定目標(biāo)跟蹤鍵。
具體的,定位模塊203,可以包括第三確定子模塊和定位子模塊(圖中未示出)。
第三確定子模塊,用于確定所述目標(biāo)日志中記載的告警信息對(duì)應(yīng)的告警時(shí)間;
定位子模塊,用于將所述目標(biāo)日志中告警時(shí)間最早的日志對(duì)應(yīng)的服務(wù)器定位為出現(xiàn)故障的服務(wù)所在的服務(wù)器。
應(yīng)用本發(fā)明實(shí)施例,通過跟蹤鍵快速地確定目標(biāo)日志,根據(jù)目標(biāo)日志中的告警信息,可以定位出現(xiàn)故障的服務(wù)所在的服務(wù)器,相較于現(xiàn)有技術(shù),確定目標(biāo)日志的時(shí)間比較短,能夠快速地對(duì)故障進(jìn)行定位。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說明書中的各個(gè)實(shí)施例均采用相關(guān)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。