本文作者:kaifamei

故障定位方法及裝置與流程

更新時(shí)間:2025-12-27 18:55:58 0條評(píng)論

故障定位方法及裝置與流程



1.本技術(shù)涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種故障定位方法及裝置。


背景技術(shù):



2.分布式系統(tǒng)是一個(gè)硬件或軟件組件分布在不同的設(shè)備上,彼此之間僅通過(guò)消息傳遞進(jìn)行通信和協(xié)調(diào)的系統(tǒng)。分布式系統(tǒng)可靠性高、可擴(kuò)展性好、通信快捷,同時(shí)能更方便地實(shí)現(xiàn)用戶間的資源共享,但是由于分布式系統(tǒng)中的分布式業(yè)務(wù)所涉及到的設(shè)備規(guī)模龐大,設(shè)備間的調(diào)用和設(shè)備內(nèi)模塊間的調(diào)用錯(cuò)綜復(fù)雜,導(dǎo)致出現(xiàn)故障時(shí)難以對(duì)故障進(jìn)行定位。
3.現(xiàn)有的故障定位方法中,可以通過(guò)調(diào)用鏈標(biāo)識(shí)(trace id)埋點(diǎn)來(lái)跟蹤各設(shè)備間的調(diào)用,在出現(xiàn)故障后根據(jù)出現(xiàn)異常的業(yè)務(wù)的trace id進(jìn)行全局索引,然后再進(jìn)行分析定位。在上述過(guò)程中,當(dāng)出現(xiàn)故障時(shí),只有故障設(shè)備會(huì)上報(bào)故障信息,其它參與處理該異常業(yè)務(wù)的設(shè)備可能并不會(huì)上報(bào)故障相關(guān)信息,因此,服務(wù)器獲取到的與故障相關(guān)的信息非常有限,不利于后續(xù)故障定位分析。另外,該故障定位方法會(huì)采集大量正常的業(yè)務(wù)流程數(shù)據(jù),所采集的正常業(yè)務(wù)流程數(shù)據(jù)大概率與故障無(wú)關(guān),會(huì)帶來(lái)不必要的數(shù)據(jù)分析成本,增大分析難度。


技術(shù)實(shí)現(xiàn)要素:



4.本技術(shù)實(shí)施例提供一種故障定位方法及裝置,用于解決數(shù)據(jù)較多導(dǎo)致分析難度較大、分析結(jié)果準(zhǔn)確度較低的問(wèn)題。
5.為達(dá)到上述目的,本技術(shù)的實(shí)施例采用如下技術(shù)方案:
6.第一方面,提供了一種故障定位方法,該方法包括:在檢測(cè)到第一分布式業(yè)務(wù)存在故障時(shí),獲取待分析日志集合,其中,待分析日志集合包括第一設(shè)備、第二設(shè)備上傳的故障日志和流水日志,故障日志和流水日志均包括第一分布式業(yè)務(wù)的標(biāo)識(shí)(可以為trace id),第一設(shè)備為最先檢測(cè)到第一分布式業(yè)務(wù)出現(xiàn)故障的設(shè)備,第二設(shè)備與第一設(shè)備關(guān)聯(lián);確定故障時(shí)刻,故障時(shí)刻為第一分布式業(yè)務(wù)發(fā)生故障的時(shí)刻;基于所述故障時(shí)刻從所述待分析日志集合篩選得到關(guān)聯(lián)日志,所述關(guān)聯(lián)日志包括所述第一設(shè)備、所述第二設(shè)備在所述故障時(shí)刻的流水日志;從故障日志、關(guān)聯(lián)日志中提取出多個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息,每個(gè)節(jié)點(diǎn)表征一次調(diào)用的發(fā)起端或執(zhí)行端,每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息包括第一分布式業(yè)務(wù)的標(biāo)識(shí)、該節(jié)點(diǎn)的跨度標(biāo)識(shí)以及父跨度標(biāo)識(shí);根據(jù)多個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建調(diào)用樹;若調(diào)用樹中任意一個(gè)節(jié)點(diǎn)的出度和入度不相同,確定任意一個(gè)節(jié)點(diǎn)為故障節(jié)點(diǎn),其中,每個(gè)節(jié)點(diǎn)的出度包括該節(jié)點(diǎn)發(fā)送信息的次數(shù),每個(gè)節(jié)點(diǎn)的入度包括該節(jié)點(diǎn)接收到信息的次數(shù)。
7.可以看出,本技術(shù)實(shí)施例先基于第一分布式業(yè)務(wù)的標(biāo)識(shí)進(jìn)行了第一次篩選,接著基于故障時(shí)刻進(jìn)行了第二次篩選,從而可以篩選得到與第一分布式業(yè)務(wù)相關(guān)的、且在故障發(fā)生時(shí)刻的流水日志,既能使服務(wù)器收集到更多與故障相關(guān)的信息,在進(jìn)行故障定位時(shí)有更多與故障相關(guān)的信息可以利用,又能避免因?yàn)榇罅苛魉罩九c故障無(wú)關(guān)導(dǎo)致分析難度增加的問(wèn)題,可以提高故障定位的效率。另外,本技術(shù)還可以自動(dòng)構(gòu)建調(diào)用樹以及自動(dòng)定位故障節(jié)點(diǎn),無(wú)需人工定位、分析,可以提升故障定位的效率。
8.在第一方面的一種實(shí)施方式中,故障時(shí)刻包括第一故障時(shí)刻、第二故障時(shí)刻,第一故障時(shí)刻為第一設(shè)備上第一分布式業(yè)務(wù)發(fā)生故障的時(shí)刻,第二故障時(shí)刻為第二設(shè)備上第一分布式業(yè)務(wù)發(fā)生故障的時(shí)刻;確定故障時(shí)刻包括:解析第一故障日志,得到第一故障時(shí)刻,第一故障日志為第一設(shè)備檢測(cè)到第一分布式業(yè)務(wù)出現(xiàn)故障時(shí)上傳的故障日志;根據(jù)第一分布式業(yè)務(wù)的標(biāo)識(shí)從待分析日志集合中解析得到第一分布式業(yè)務(wù)的交互數(shù)據(jù),交互數(shù)據(jù)包括第一設(shè)備、第二設(shè)備每次交互的時(shí)間戳;根據(jù)交互數(shù)據(jù)確定第一設(shè)備的系統(tǒng)時(shí)間與第二設(shè)備的系統(tǒng)時(shí)間的映射關(guān)系;根據(jù)第一故障時(shí)刻、映射關(guān)系計(jì)算第二故障時(shí)刻。
9.可以看出,本技術(shù)考慮到第一設(shè)備與第二設(shè)備間存在時(shí)間誤差,故分別確定第一故障時(shí)刻、第二故障時(shí)刻,使得獲取的流水日志更接近第一分布式業(yè)務(wù)發(fā)生故障的真實(shí)時(shí)刻。
10.在第一方面的一種實(shí)施方式中,關(guān)聯(lián)日志包括第一關(guān)聯(lián)流水日志以及第二關(guān)聯(lián)流水日志,基于故障時(shí)刻從待分析日志集合篩選得到關(guān)聯(lián)日志,包括:基于第一故障時(shí)刻、第一設(shè)備的標(biāo)識(shí)從待分析日志集合篩選得到第一關(guān)聯(lián)流水日志,第一關(guān)聯(lián)流水日志為第一設(shè)備在第一故障時(shí)刻的流水日志;基于第二故障時(shí)刻、第二設(shè)備的標(biāo)識(shí)從待分析日志集合篩選得到第二關(guān)聯(lián)流水日志,第二關(guān)聯(lián)流水日志為第二設(shè)備在第二故障時(shí)刻的流水日志。
11.在第一方面的一種實(shí)施方式中,在第一方面的一種實(shí)施方式中,交互數(shù)據(jù)包括第一設(shè)備、第二設(shè)備最近一次交互的第一時(shí)間戳、第二時(shí)間戳、第三時(shí)間戳及第四時(shí)間戳,第一時(shí)間戳為第一設(shè)備向第二設(shè)備發(fā)送調(diào)用請(qǐng)求的時(shí)間,第二時(shí)間戳為第二設(shè)備接收到調(diào)用請(qǐng)求的時(shí)間,第三時(shí)間戳為第二設(shè)備向第一設(shè)備發(fā)送反饋信息的時(shí)間,第四時(shí)間戳為第一設(shè)備接收到反饋信息的時(shí)間;映射關(guān)系指示第一設(shè)備的系統(tǒng)時(shí)間與第二設(shè)備的系統(tǒng)時(shí)間的差值與第一時(shí)間戳、第二時(shí)間戳、第三時(shí)間戳及第四時(shí)間戳關(guān)聯(lián),第一時(shí)間戳、第三時(shí)間戳與差值呈正相關(guān),第二時(shí)間戳、第四時(shí)間戳與差值呈負(fù)相關(guān)。
12.在第一方面的一種實(shí)施方式中,映射關(guān)系滿足算式:
[0013][0014]
其中,ta為第一設(shè)備的系統(tǒng)時(shí)間,為第二設(shè)備的系統(tǒng)時(shí)間,cs為第一時(shí)間戳,sr為第二時(shí)間戳,ss為第三時(shí)間戳,cr為第四時(shí)間戳。
[0015]
在第一方面的一種實(shí)施方式中,從故障日志、關(guān)聯(lián)日志中提取出多個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息,包括:從故障日志中提取多個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息,每個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息包括第一分布式業(yè)務(wù)的標(biāo)識(shí)、該第一節(jié)點(diǎn)的跨度標(biāo)識(shí)以及父跨度標(biāo)識(shí);從關(guān)聯(lián)日志中提取多個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息,每個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息包括第一分布式業(yè)務(wù)的標(biāo)識(shí)、該第二節(jié)點(diǎn)的跨度標(biāo)識(shí)和父跨度標(biāo)識(shí),以及該第二節(jié)點(diǎn)與其他第二節(jié)點(diǎn)的交互情況;根據(jù)多個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建調(diào)用樹,包括:根據(jù)多個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建第一調(diào)用樹;根據(jù)多個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建第二調(diào)用樹;合并第一調(diào)用樹、第二調(diào)用樹得到調(diào)用樹。
[0016]
在第一方面的一種實(shí)施方式中,根據(jù)多個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建第一調(diào)用樹,包括:若多個(gè)第一節(jié)點(diǎn)中存在兩個(gè)相鄰的第一節(jié)點(diǎn),連接兩個(gè)相鄰的第一節(jié)點(diǎn),以構(gòu)建第一調(diào)用樹,其中,兩個(gè)相鄰的第一節(jié)點(diǎn)中的一個(gè)第一節(jié)點(diǎn)的跨度標(biāo)識(shí)為另一個(gè)第一節(jié)點(diǎn)的父跨度標(biāo)識(shí)。
[0017]
在第一方面的一種實(shí)施方式中,方法還包括:若多個(gè)第一節(jié)點(diǎn)中不存在兩個(gè)相鄰
的第一節(jié)點(diǎn),確定兩個(gè)不相鄰的第一節(jié)點(diǎn);根據(jù)兩個(gè)不相鄰的第一節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建虛擬節(jié)點(diǎn),虛擬節(jié)點(diǎn)的跨度標(biāo)識(shí)為兩個(gè)不相鄰的第一節(jié)點(diǎn)中一個(gè)第一節(jié)點(diǎn)的父跨度標(biāo)識(shí),虛擬節(jié)點(diǎn)的父跨度標(biāo)識(shí)為兩個(gè)不相鄰的第一節(jié)點(diǎn)中另一個(gè)第一節(jié)點(diǎn)的跨度標(biāo)識(shí);依次連接兩個(gè)不相鄰的第一節(jié)點(diǎn)中的一個(gè)第一節(jié)點(diǎn)、虛擬節(jié)點(diǎn)、兩個(gè)不相鄰的第一節(jié)點(diǎn)中的另一個(gè)第一節(jié)點(diǎn),以構(gòu)建第一調(diào)用樹。
[0018]
在第一方面的一種實(shí)施方式中,根據(jù)多個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建第二調(diào)用樹,包括:連接多個(gè)第二節(jié)點(diǎn)中兩個(gè)相鄰的第二節(jié)點(diǎn),以構(gòu)建第二調(diào)用樹,其中,兩個(gè)相鄰的第二節(jié)點(diǎn)中的一個(gè)第二節(jié)點(diǎn)的跨度標(biāo)識(shí)為另一個(gè)第一節(jié)點(diǎn)的父跨度標(biāo)識(shí),兩個(gè)相鄰的第二節(jié)點(diǎn)的連接關(guān)系與兩個(gè)相鄰的第二節(jié)點(diǎn)的交互情況對(duì)應(yīng),若兩個(gè)相鄰的第二節(jié)點(diǎn)間存在客戶端發(fā)送、服務(wù)端接收的過(guò)程,兩個(gè)相鄰的第二節(jié)點(diǎn)間建立第一連接;若兩個(gè)相鄰的第二節(jié)點(diǎn)間存在服務(wù)端發(fā)送、客戶端接收的過(guò)程,兩個(gè)相鄰的第二節(jié)點(diǎn)間建立第二連接。
[0019]
在第一方面的一種實(shí)施方式中,合并第一調(diào)用樹、第二調(diào)用樹得到調(diào)用樹,包括:若第一調(diào)用樹和第二調(diào)用樹中存在節(jié)點(diǎn)信息相同的兩個(gè)節(jié)點(diǎn),合并節(jié)點(diǎn)信息相同的兩個(gè)節(jié)點(diǎn);若第一調(diào)用樹和第二調(diào)用樹中不存在相同的節(jié)點(diǎn),構(gòu)建虛擬根節(jié)點(diǎn),虛擬根節(jié)點(diǎn)的跨度標(biāo)識(shí)和父跨度標(biāo)識(shí)為0;連接虛擬根節(jié)點(diǎn)與第一調(diào)用樹的根節(jié)點(diǎn),連接虛擬根節(jié)點(diǎn)與第二調(diào)用樹的根節(jié)點(diǎn)。
[0020]
在第一方面的一種實(shí)施方式中,在獲取待分析日志集合之前,方法還包括:接收第一設(shè)備在第一分布式業(yè)務(wù)發(fā)生故障時(shí)上傳的第一故障日志,第一故障日志包括事件id、第一設(shè)備的標(biāo)識(shí)、關(guān)聯(lián)設(shè)備的標(biāo)識(shí)以及第一分布式業(yè)務(wù)的標(biāo)識(shí),關(guān)聯(lián)設(shè)備包括第二設(shè)備;接收第二設(shè)備在接收到第一通知后上傳的第二故障日志,第一通知指示第一分布式業(yè)務(wù)發(fā)生故障,第二故障日志包括事件id、第二設(shè)備的標(biāo)識(shí)以及第一分布式業(yè)務(wù)的標(biāo)識(shí);將第一故障日志、第二故障日志添加至事件信息,事件信息包括多個(gè)故障日志。
[0021]
在第一方面的一種實(shí)施方式中,方法還包括:遍歷事件信息中的每個(gè)故障日志,并判斷每個(gè)故障日志攜帶的事件id是否與分布式故障的事件id集合匹配;若第一故障日志攜帶的事件id與分布式故障的事件id集合匹配,確定第一分布式業(yè)務(wù)存在故障。
[0022]
在第一方面的一種實(shí)施方式中,獲取待分析日志集合,包括:判斷第一設(shè)備的設(shè)備類型為第一類型或第二類型;若第一設(shè)備的設(shè)備類型為第一類型,根據(jù)第一故障日志攜帶的第一運(yùn)行標(biāo)識(shí),并將第一運(yùn)行標(biāo)識(shí)所指示的流水日志添加至待分析日志集合;若第一設(shè)備的設(shè)備類型為第二類型,將第一故障日志添加至待分析日志集合;從第一故障日志解析得到第一分布式業(yè)務(wù)的標(biāo)識(shí)和第二設(shè)備的標(biāo)識(shí);根據(jù)第一分布式業(yè)務(wù)的標(biāo)識(shí)和第二設(shè)備的標(biāo)識(shí)在事件信息進(jìn)行檢索,得到第二故障日志;判斷第二設(shè)備的設(shè)備類型為第一類型或第二類型;若第二設(shè)備的設(shè)備類型為第一類型,根據(jù)第二故障日志攜帶的第二運(yùn)行標(biāo)識(shí),并將第二運(yùn)行標(biāo)識(shí)所指示的流水日志添加至待分析日志集合;若第二設(shè)備的設(shè)備類型為第二類型,將第二故障日志添加至待分析日志集合。
[0023]
在第一方面的一種實(shí)施方式中,關(guān)聯(lián)日志包括第一設(shè)備在t1~t2期間的流水日志,以及第二設(shè)備在t3~t4期間的流水日志,t1為第一故障時(shí)刻與第一預(yù)設(shè)時(shí)間的差值,t2為第一故障時(shí)刻與第二預(yù)設(shè)時(shí)間的和,t3為第二故障時(shí)刻與第一預(yù)設(shè)時(shí)間的差值,t4為第二故障時(shí)刻與第二預(yù)設(shè)時(shí)間的和。
[0024]
在第一方面的一種實(shí)施方式中,第二設(shè)備包括與第一設(shè)備共同執(zhí)行第一分布式業(yè)
務(wù)的終端設(shè)備,或者包括分布式系統(tǒng)中在故障時(shí)刻的前預(yù)設(shè)時(shí)間內(nèi)在線的終端設(shè)備。
[0025]
在第一方面的一種實(shí)施方式中,第一分布式業(yè)務(wù)內(nèi)采用同步調(diào)用方式或異步調(diào)用方式。
[0026]
第二方面,本技術(shù)實(shí)施例提供了一種故障定位方法,所述方法包括:第一設(shè)備在檢測(cè)到第一分布式業(yè)務(wù)發(fā)生故障時(shí),向服務(wù)器上傳第一故障日志,所述第一故障日志包括事件id、所述第一設(shè)備的標(biāo)識(shí)、關(guān)聯(lián)設(shè)備的標(biāo)識(shí)以及所述第一分布式業(yè)務(wù)的標(biāo)識(shí),所述關(guān)聯(lián)設(shè)備包括所述第二設(shè)備;第一設(shè)備向第二設(shè)備發(fā)送第一通知,所述第一通知攜帶有所述第一分布式業(yè)務(wù)的標(biāo)識(shí);第二設(shè)備向所述服務(wù)器上傳第二故障日志,所述第二故障日志包括所述事件id、所述第二設(shè)備的標(biāo)識(shí)以及所述第一分布式業(yè)務(wù)的標(biāo)識(shí)。
[0027]
可見,第一設(shè)備在檢測(cè)到分布式故障后,可以主動(dòng)通知其他關(guān)聯(lián)上報(bào)故障日志,這樣可使得服務(wù)器收集到更多與故障相關(guān)的信息,在進(jìn)行故障定位時(shí)有更多與故障相關(guān)的信息可以利用。
[0028]
第三方面,本技術(shù)實(shí)施例提供了一種故障定位裝置,包括處理器,所述處理器和存儲(chǔ)器耦合,所述存儲(chǔ)器存儲(chǔ)有程序指令,當(dāng)所述存儲(chǔ)器存儲(chǔ)的程序指令被所述處理器執(zhí)行時(shí)使得所述故障定位裝置實(shí)現(xiàn)第一方面或第二方面中任一項(xiàng)所述的方法。
[0029]
第四方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有指令,當(dāng)其在故障定位裝置上運(yùn)行時(shí),使得故障定位裝置可以執(zhí)行上述第一方面或第二方面中任一項(xiàng)所述的方法。
[0030]
其中,第三方面至第四方面中任一種設(shè)計(jì)方式所帶來(lái)的技術(shù)效果可參見第一方面中不同設(shè)計(jì)方式所帶來(lái)的技術(shù)效果,此處不再贅述。
附圖說(shuō)明
[0031]
圖1為本技術(shù)實(shí)施例提供的一種分布式系統(tǒng)的結(jié)構(gòu)示意圖;
[0032]
圖2為本技術(shù)實(shí)施例提供的一種分布式系統(tǒng)的應(yīng)用場(chǎng)景圖;
[0033]
圖3為本技術(shù)實(shí)施例提供的一種服務(wù)器的結(jié)構(gòu)示意圖;
[0034]
圖4為本技術(shù)實(shí)施例提供的一種終端設(shè)備的結(jié)構(gòu)示意圖;
[0035]
圖5為本技術(shù)實(shí)施例提供的故障定位方法的部分流程圖;
[0036]
圖6為本技術(shù)實(shí)施例提供的故障定位方法的部分流程圖;
[0037]
圖7為本技術(shù)實(shí)施例提供的第一設(shè)備與第二設(shè)備的一種時(shí)間映射圖;
[0038]
圖8為本技術(shù)實(shí)施例提供的第一設(shè)備與第二設(shè)備的又一種時(shí)間映射圖;
[0039]
圖9為本技術(shù)實(shí)施例提供的一種第一調(diào)用樹的結(jié)構(gòu)示意圖;
[0040]
圖10為本技術(shù)實(shí)施例提供的又一種第一調(diào)用樹的結(jié)構(gòu)示意圖;
[0041]
圖11為本技術(shù)實(shí)施例提供的一種調(diào)用樹的結(jié)構(gòu)示意圖;
[0042]
圖12為本技術(shù)實(shí)施例提供的一種合成調(diào)用樹的示意圖;
[0043]
圖13為本技術(shù)實(shí)施例提供的一種芯片系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
[0044]
下面將結(jié)合本技術(shù)實(shí)施例中的附圖,對(duì)本技術(shù)實(shí)施例中的技術(shù)方案進(jìn)行描述。其中,在本技術(shù)的描述中,除非另有說(shuō)明,“至少一個(gè)”是指一個(gè)或多個(gè),“多個(gè)”是指兩個(gè)或多
于兩個(gè)。另外,為了便于清楚描述本技術(shù)實(shí)施例的技術(shù)方案,在本技術(shù)的實(shí)施例中,采用了“第一”、“第二”等字樣對(duì)功能和作用基本相同的相同項(xiàng)或相似項(xiàng)進(jìn)行區(qū)分。本領(lǐng)域技術(shù)人員可以理解“第一”、“第二”等字樣并不對(duì)數(shù)量和執(zhí)行次序進(jìn)行限定,并且“第一”、“第二”等字樣也并不限定一定不同。
[0045]
為了下述各實(shí)施例的描述清楚簡(jiǎn)潔,首先給出相關(guān)概念或技術(shù)的簡(jiǎn)要介紹:
[0046]
分布式系統(tǒng)(distributed system)是由多個(gè)軟件或者硬件構(gòu)成的系統(tǒng),使得多個(gè)軟件或者硬件以一個(gè)統(tǒng)一的整體的方式呈現(xiàn)給用戶。也就是說(shuō),對(duì)于用戶而言分布式系統(tǒng)是一個(gè)整體。當(dāng)用戶向分布式系統(tǒng)發(fā)起業(yè)務(wù)請(qǐng)求時(shí),分布式系統(tǒng)中的各軟件或硬件可以為執(zhí)行該業(yè)務(wù)提供不同的服務(wù)。
[0047]
埋點(diǎn)是數(shù)據(jù)采集領(lǐng)域(尤其是用戶行為數(shù)據(jù)采集領(lǐng)域)的術(shù)語(yǔ),指的是針對(duì)特定用戶行為或事件進(jìn)行捕獲、處理和發(fā)送的相關(guān)技術(shù)及其實(shí)施過(guò)程。埋點(diǎn)的技術(shù)實(shí)質(zhì),是先應(yīng)用運(yùn)行過(guò)程中的事件,當(dāng)需要關(guān)注的事件發(fā)生時(shí)進(jìn)行判斷和捕獲。埋點(diǎn)包括代碼埋點(diǎn)、可視化埋點(diǎn)和無(wú)埋點(diǎn)。其中,代碼埋點(diǎn)通過(guò)加入一些代碼使得用戶觸發(fā)相應(yīng)行為時(shí),進(jìn)行數(shù)據(jù)上報(bào);可視化埋點(diǎn)利用了可視化交互手段,先配置相關(guān)事件,再進(jìn)行數(shù)據(jù)采集;無(wú)埋點(diǎn)是指開發(fā)人員集成采集軟件開發(fā)工具包(software development kit,sdk)后,sdk便直接開始捕捉和監(jiān)測(cè)用戶在應(yīng)用里的所有行為,并全部上報(bào),不需要開發(fā)人員添加額外代碼。需要說(shuō)明的是,在本技術(shù)實(shí)施例中,埋點(diǎn)與用戶行為無(wú)關(guān),只與業(yè)務(wù)流上的故障相關(guān)。
[0048]
遠(yuǎn)程過(guò)程調(diào)用(remote procedure call,rpc)的出現(xiàn)主要是為了解決分布式系統(tǒng)間的通信透明性的問(wèn)題。也就意味著,rpc讓用戶不用理會(huì)調(diào)用的是哪個(gè)設(shè)備上的服務(wù),在用戶的角度,這個(gè)遠(yuǎn)程服務(wù)和調(diào)用本地服務(wù)一樣安全可靠。遠(yuǎn)程調(diào)用一般涉及四個(gè)過(guò)程:客戶端發(fā)送(client send,cs)、服務(wù)端接收(service receive,sr)、服務(wù)端發(fā)送(service send,ss)和客戶端接收(client receive,cr)。其中,客戶端可以稱為調(diào)用端,服務(wù)端也可以稱為執(zhí)行端。另外,客戶端、服務(wù)端可以指具有硬件的終端設(shè)備,也可以為終端設(shè)備內(nèi)的軟件模塊,在此不做具體限制。在本技術(shù)實(shí)施例中,終端設(shè)備可以在rpc的過(guò)程中進(jìn)行埋點(diǎn),以記錄分布式業(yè)務(wù)的調(diào)用情況。
[0049]
通用唯一識(shí)別碼(universally unique identifier,uuid)是由計(jì)算機(jī)根據(jù)網(wǎng)卡媒體存取控制(media access control,mac)地址、時(shí)間戳、名字空間(name space)、隨機(jī)或偽隨機(jī)數(shù)、時(shí)序等元素生成的在一定范圍內(nèi)的唯一標(biāo)識(shí)符。uuid是16字節(jié)128位長(zhǎng)的數(shù)字,通常以36字節(jié)的字符串表示,例如為3f2504e0-4f89-11d3-9a0c-0305e82c3301。
[0050]
事件id(event id)是一個(gè)數(shù)字,表示錯(cuò)誤信息,即阻礙業(yè)務(wù)繼續(xù)進(jìn)行的原因,不同的event id表示的錯(cuò)誤信息不同,根據(jù)event id可以大概確定故障模塊、故障影響、甚至根因,進(jìn)而編程人員和維護(hù)人員解決問(wèn)題。
[0051]
故障日志,即錯(cuò)誤日志,包括軟件運(yùn)行時(shí)出錯(cuò)信息,該出錯(cuò)信息可包括event id、故障設(shè)備的設(shè)備類型以及關(guān)于故障的描述等。編程人員和維護(hù)人員等可以利用錯(cuò)誤日志對(duì)系統(tǒng)進(jìn)行調(diào)試和維護(hù)。
[0052]
流水日志,包括軟件在正常運(yùn)行過(guò)程中的各種信息,例如執(zhí)行分布式業(yè)務(wù)發(fā)生的日常事件記錄、發(fā)生日常事件記錄的日期以及發(fā)生日常事件記錄的時(shí)間戳等信息。日常事件可以包括參數(shù)重置、rpc調(diào)用等事件。
[0053]
本技術(shù)實(shí)施例提供一種故障定位方法,可以應(yīng)用于分布式系統(tǒng)。具體的,該分布式
系統(tǒng)包括至少一個(gè)服務(wù)器和多個(gè)終端設(shè)備。當(dāng)多個(gè)終端設(shè)備參與的分布式業(yè)務(wù)出現(xiàn)故障時(shí),檢測(cè)到故障的終端設(shè)備可以向服務(wù)器上報(bào)故障日志,并通知其他終端設(shè)備上報(bào)故障日志。這樣可使得服務(wù)器收集到更多與故障相關(guān)的信息,在進(jìn)行故障定位時(shí)有更多與故障相關(guān)的信息可以利用。
[0054]
在服務(wù)器接收到所有終端設(shè)備上報(bào)的故障日志后,還可以篩選出各終端設(shè)備在發(fā)生故障前后的流水日志。如此,可避免因?yàn)榇罅苛魉罩九c故障無(wú)關(guān)導(dǎo)致分析難度增加的問(wèn)題,可以提高故障定位的效率。
[0055]
在服務(wù)器接收到多個(gè)終端設(shè)備的故障日志,以及篩選出多個(gè)終端設(shè)備在發(fā)生故障前后的流水日志后,可基于獲取的故障日志和發(fā)生故障前后的流水日志定位故障的出處,并分析故障發(fā)生的原因,無(wú)需人工定位、分析,可以提升故障定位的效率。
[0056]
示例性的,本技術(shù)實(shí)施例提供的分布式系統(tǒng)可以如圖1所示。如圖1所示,該分布式系統(tǒng)包括服務(wù)器10、終端設(shè)備20、終端設(shè)備30、終端設(shè)備40和終端設(shè)備50。其中,終端設(shè)備20、終端設(shè)備30、終端設(shè)備40及終端設(shè)備50可與服務(wù)器10通信。終端設(shè)備20、終端設(shè)備30、終端設(shè)備40及終端設(shè)備50之間彼此通信。
[0057]
在圖1所示的分布式系統(tǒng)一種可能的應(yīng)用場(chǎng)景中,終端設(shè)備20、終端設(shè)備30、終端設(shè)備40及終端設(shè)備50可以是智能家居系統(tǒng)中的各種設(shè)備,例如,用戶的智能手機(jī)、個(gè)人計(jì)算機(jī)(personal computer,pc)、平板、智能電視、智能手表、智能音響等,這些設(shè)備可以通過(guò)用戶id相互關(guān)聯(lián),且關(guān)聯(lián)后的各個(gè)設(shè)備可以通過(guò)藍(lán)牙、無(wú)線網(wǎng)絡(luò)、近場(chǎng)通信(near field communication,nfc)等方式建立通信連接。例如,終端設(shè)備20、終端設(shè)備30、終端設(shè)備40之間可以通過(guò)wifi和/或藍(lán)牙建立通信連接。在該應(yīng)用場(chǎng)景下,分布式業(yè)務(wù)被執(zhí)行時(shí)需要通過(guò)多個(gè)終端設(shè)備配合完成,多個(gè)終端設(shè)備間存在調(diào)用關(guān)系。多個(gè)終端設(shè)備的調(diào)用關(guān)系及調(diào)用順序可以通過(guò)調(diào)用鏈來(lái)反映。
[0058]
調(diào)用鏈包括多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)可執(zhí)行分布式業(yè)務(wù)中的部分業(yè)務(wù)流程。節(jié)點(diǎn)與節(jié)點(diǎn)之間可以傳遞調(diào)用請(qǐng)求。示例性的,如圖2所示,終端設(shè)備20可以為智能手機(jī),終端設(shè)備30可以為智能電視,終端設(shè)備40可以為智能音響。分布式業(yè)務(wù)例如為,用戶通過(guò)智能手機(jī)發(fā)起播放視頻的業(yè)務(wù),并通過(guò)智能電視播放該視頻的圖像,以及通過(guò)智能音響播放該視頻的音頻。在該分布式業(yè)務(wù)中存在的調(diào)用鏈為:用戶向智能手機(jī)發(fā)起請(qǐng)求以執(zhí)行視頻播放業(yè)務(wù),智能手機(jī)響應(yīng)于該請(qǐng)求啟動(dòng)視頻播放業(yè)務(wù),并調(diào)用智能電視播放視頻的圖像,并且智能電視調(diào)用智能音響播放該視頻的音頻。又例如,智能設(shè)備20可以為智能手機(jī)a,終端設(shè)備30可以為平板。分布式業(yè)務(wù)例如為,在智能手機(jī)a接到來(lái)電時(shí),智能手機(jī)a向平板發(fā)送來(lái)電信息,使得平板上同步提示用戶接聽來(lái)電,若用戶通過(guò)平板接聽來(lái)電,平板可以借助手機(jī)的通信功能進(jìn)行通話。在該分布式業(yè)務(wù)中存在的調(diào)用鏈為:智能手機(jī)b響應(yīng)于用戶接聽電話的操作,調(diào)用智能手機(jī)a的通信功能進(jìn)行通話。
[0059]
在其他實(shí)施方式中,分布式業(yè)務(wù)還可以包括無(wú)線端請(qǐng)求、網(wǎng)頁(yè)請(qǐng)求等,在此不做具體限制。
[0060]
在執(zhí)行分布式業(yè)務(wù)的過(guò)程中,分布式系統(tǒng)中的終端設(shè)備(例如終端設(shè)備20-終端設(shè)備50)可能會(huì)出現(xiàn)故障。其中,該故障可包括rpc請(qǐng)求失敗或超時(shí)、無(wú)響應(yīng)、設(shè)備重啟、進(jìn)程崩潰、應(yīng)用卡死、系統(tǒng)服務(wù)故障等。
[0061]
為了便于在分布式業(yè)務(wù)執(zhí)行過(guò)程中對(duì)上述可能出現(xiàn)的故障進(jìn)行跟蹤定位,在分布
式業(yè)務(wù)的調(diào)用鏈的每個(gè)節(jié)點(diǎn),例如,終端設(shè)備20、終端設(shè)備30、終端設(shè)備40、終端設(shè)備50,均會(huì)進(jìn)行埋點(diǎn)操作,生成調(diào)用鏈信息。調(diào)用鏈信息中可以包括trace id、跨度標(biāo)識(shí)(span id)、父跨度標(biāo)識(shí)(parent spanid)、節(jié)點(diǎn)(終端設(shè)備)數(shù)量和業(yè)務(wù)名稱等。其中,trace id在調(diào)用鏈?zhǔn)坠?jié)點(diǎn)(也可以稱為根節(jié)點(diǎn))直接生成,并通過(guò)調(diào)用鏈協(xié)議向后續(xù)節(jié)點(diǎn)逐級(jí)傳遞,首節(jié)點(diǎn)為發(fā)起分布式業(yè)務(wù)的終端設(shè)備。trace id是調(diào)用鏈的唯一標(biāo)識(shí),也可以是該分布式業(yè)務(wù)的唯一標(biāo)識(shí),例如,trace id也可以作為一項(xiàng)分布式業(yè)務(wù)的唯一標(biāo)識(shí)寫入諸如故障日志、業(yè)務(wù)日志、終端設(shè)備日志等的分布式業(yè)務(wù)的數(shù)據(jù)文件中。span id可以在節(jié)點(diǎn)接收到調(diào)用請(qǐng)求時(shí)可生成。此外,節(jié)點(diǎn)還可以將trace id以及本節(jié)點(diǎn)的span id一起傳遞給下游節(jié)點(diǎn)。當(dāng)攜帶有該span id、trace id的調(diào)用請(qǐng)求傳到下游節(jié)點(diǎn)時(shí),下游節(jié)點(diǎn)將生成新的span id,并將調(diào)用請(qǐng)求中攜帶的span id記錄為parent spanid?;诖诉壿嫞梢愿鶕?jù)不同節(jié)點(diǎn)的span id、parent spanid還原節(jié)點(diǎn)間的調(diào)用關(guān)系,從而還原調(diào)用鏈。節(jié)點(diǎn)數(shù)量包括當(dāng)前節(jié)點(diǎn)在內(nèi)的被調(diào)用的節(jié)點(diǎn)的數(shù)量,可以用于確定各節(jié)點(diǎn)的調(diào)用關(guān)系;隨著調(diào)用次數(shù)的增加,節(jié)點(diǎn)數(shù)量增大。上述調(diào)用鏈信息所包括的內(nèi)容僅僅作為一個(gè)示例,在其他的實(shí)施方式中,調(diào)用鏈信息還可包括其他內(nèi)容,例如,還可以包括當(dāng)前節(jié)點(diǎn)調(diào)用的下一個(gè)節(jié)點(diǎn)(子節(jié)點(diǎn))的標(biāo)識(shí),在此不做具體限制。
[0062]
可以理解地,圖1所示的分布式系統(tǒng)僅為本技術(shù)實(shí)施例中的一種示例,本技術(shù)實(shí)施例提供的分布式系統(tǒng)包括但不僅限于以上結(jié)構(gòu)。分布式系統(tǒng)還可以包括比圖1所示的更多或更少的終端設(shè)備,在此不做具體限制。
[0063]
圖1中的服務(wù)器10可以為普通服務(wù)器(也可以稱為物理服務(wù)器),其可以為具有獨(dú)立的硬盤、寬帶、真實(shí)存在的物理設(shè)備?;蛘邽樗鄠€(gè)服務(wù)器組成的服務(wù)器集,在此不做具體限制。
[0064]
本技術(shù)實(shí)施例以服務(wù)器10物理服務(wù)器為例進(jìn)行說(shuō)明。如圖3所示,服務(wù)器10可以包括處理器110、存儲(chǔ)器120及通信模塊130。
[0065]
處理器110可用于讀取和執(zhí)行計(jì)算機(jī)可讀指令。具體地,處理器110可以包括控制器、運(yùn)算器和寄存器。其中,控制器主要負(fù)責(zé)指令譯碼,并為指令對(duì)應(yīng)的操作發(fā)出控制信號(hào)。運(yùn)算器主要負(fù)責(zé)保存指令執(zhí)行過(guò)程中臨時(shí)存放的寄存器操作數(shù)和中間操作結(jié)果等。具體實(shí)現(xiàn)中,處理器110的硬件架構(gòu)可以是專用集成電路(application specific integrated circuit,asic)架構(gòu)、mips(microprocessor without interlocked piped stages)架構(gòu)、arm(advanced risc machines)架構(gòu)或者網(wǎng)絡(luò)處理器(net processor,np)架構(gòu)等等。
[0066]
存儲(chǔ)器120與處理器110耦合,用于存儲(chǔ)各種軟件程序和/或多組指令。具體實(shí)現(xiàn)中,存儲(chǔ)器120可包括高速隨機(jī)存取的存儲(chǔ)器,并且也可包括非易失性存儲(chǔ)器,例如一個(gè)或多個(gè)磁盤存儲(chǔ)設(shè)備、閃存設(shè)備或其他非易失性固態(tài)存儲(chǔ)設(shè)備。存儲(chǔ)器120可以存儲(chǔ)操作系統(tǒng),例如ucos,vxworks、rtlinux等嵌入式操作系統(tǒng)。
[0067]
通信模塊130可用于通過(guò)網(wǎng)絡(luò)建立服務(wù)器10與其它通信終端(如圖1中的多個(gè)終端設(shè)備)之間的通信連接,并用于通過(guò)網(wǎng)絡(luò)收發(fā)數(shù)據(jù)。
[0068]
可以理解的是,本實(shí)施例示意的結(jié)構(gòu)并不構(gòu)成對(duì)服務(wù)器10的具體限定。在另一些實(shí)施例中,服務(wù)器10可以包括比圖示更多或更少的部件,或者組合某些部件,或者拆分某些部件,或者不同的部件布置。圖示的部件可以以硬件,軟件或軟件和硬件的組合實(shí)現(xiàn)。
[0069]
圖1中的終端設(shè)備可指任何一種具有計(jì)算處理能力的設(shè)備、器械或者機(jī)器,在本申
請(qǐng)實(shí)施例中可以為具有數(shù)據(jù)處理能力,或者具有功能外設(shè)的終端設(shè)備。終端設(shè)備20、終端設(shè)備30和終端設(shè)備40、終端設(shè)備50包括但不局限于,膝上型設(shè)備、臺(tái)式機(jī)、手持pc、個(gè)人數(shù)字助理、嵌入式處理器、數(shù)字信號(hào)處理器(digital signal processor,dsp)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備、可穿戴設(shè)備,虛擬現(xiàn)實(shí)(virtual reality,vr)和/或增強(qiáng)現(xiàn)實(shí)(augment reality,ar)設(shè)備,物聯(lián)網(wǎng)(internet of things,iot)設(shè)備,智能攝像頭,智能音響系統(tǒng),車載信息娛樂設(shè)備,流媒體客戶端設(shè)備,電子書閱讀設(shè)備,電動(dòng)車輛的控制系統(tǒng),以及各種其他電子設(shè)備。一般地,能夠包含本文中所公開的處理器和/或其它執(zhí)行邏輯的多個(gè)裝置和電子設(shè)備一般都是合適的。
[0070]
本技術(shù)實(shí)施例中以圖1所示的終端設(shè)備是手機(jī)為例,對(duì)本技術(shù)實(shí)施例提供的終端設(shè)備的結(jié)構(gòu)進(jìn)行舉例說(shuō)明。如圖4所示,終端設(shè)備(如手機(jī))可以包括:處理器210,外部存儲(chǔ)器接口220,內(nèi)部存儲(chǔ)器221,通用串行總線(universal serial bus,usb)接口230,充電管理模塊240,電源管理模塊241,電池242,天線1,天線2,移動(dòng)通信模塊250,無(wú)線通信模塊260,音頻模塊270,揚(yáng)聲器270a,受話器270b,麥克風(fēng)270c,耳機(jī)接口270d,傳感器模塊280,按鍵290,馬達(dá)291,指示器292,攝像頭293,顯示屏294,以及用戶標(biāo)識(shí)模塊(subscriber identification module,sim)卡接口295等。
[0071]
其中,上述傳感器模塊280可以包括壓力傳感器,陀螺儀傳感器,氣壓傳感器,磁傳感器,加速度傳感器,距離傳感器,接近光傳感器,指紋傳感器,溫度傳感器,觸摸傳感器,環(huán)境光傳感器和骨傳導(dǎo)傳感器等傳感器。
[0072]
可以理解的是,本實(shí)施例示意的結(jié)構(gòu)并不構(gòu)成對(duì)終端設(shè)備的具體限定。在另一些實(shí)施例中,終端設(shè)備可以包括比圖示更多或更少的部件,或者組合某些部件,或者拆分某些部件,或者不同的部件布置。圖示的部件可以以硬件,軟件或軟件和硬件的組合實(shí)現(xiàn)。
[0073]
處理器210可以包括一個(gè)或多個(gè)處理單元,例如:處理器210可以包括應(yīng)用處理器(application processor,ap),調(diào)制解調(diào)處理器,圖形處理器(graphics processing unit,gpu),圖像信號(hào)處理器(image signal processor,isp),控制器,存儲(chǔ)器,視頻編解碼器,數(shù)字信號(hào)處理器(digital signal processor,dsp),基帶處理器,和/或神經(jīng)網(wǎng)絡(luò)處理器(neural-network processing unit,npu)等。其中,不同的處理單元可以是獨(dú)立的器件,也可以集成在一個(gè)或多個(gè)處理器中。
[0074]
控制器可以是終端設(shè)備的神經(jīng)中樞和指揮中心??刂破骺梢愿鶕?jù)指令操作碼和時(shí)序信號(hào),產(chǎn)生操作控制信號(hào),完成取指令和執(zhí)行指令的控制。
[0075]
處理器210中還可以設(shè)置存儲(chǔ)器,用于存儲(chǔ)指令和數(shù)據(jù)。在一些實(shí)施例中,處理器210中的存儲(chǔ)器為高速緩沖存儲(chǔ)器。該存儲(chǔ)器可以保存處理器210剛用過(guò)或循環(huán)使用的指令或數(shù)據(jù)。如果處理器210需要再次使用該指令或數(shù)據(jù),可從所述存儲(chǔ)器中直接調(diào)用。避免了重復(fù)存取,減少了處理器210的等待時(shí)間,因而提高了系統(tǒng)的效率。
[0076]
在一些實(shí)施例中,處理器210可以包括一個(gè)或多個(gè)接口。接口可以包括集成電路(inter-integrated circuit,i2c)接口,集成電路內(nèi)置音頻(inter-integrated circuit sound,i2s)接口,脈沖編碼調(diào)制(pulse code modulation,pcm)接口,通用異步收發(fā)傳輸器(universal asynchronous receiver/transmitter,uart)接口,移動(dòng)產(chǎn)業(yè)處理器接口(mobile industry processor interface,mipi),通用輸入輸出(general-purpose input/output,gpio)接口,用戶標(biāo)識(shí)模塊(subscriber identity module,sim)接口,和/或
通用串行總線(universal serial bus,usb)接口等。
[0077]
可以理解的是,本實(shí)施例示意的各模塊間的接口連接關(guān)系,只是示意性說(shuō)明,并不構(gòu)成對(duì)終端設(shè)備的結(jié)構(gòu)限定。在另一些實(shí)施例中,終端設(shè)備也可以采用上述實(shí)施例中不同的接口連接方式,或多種接口連接方式的組合。
[0078]
充電管理模塊240用于從充電器接收充電輸入。其中,充電器可以是無(wú)線充電器,也可以是有線充電器。充電管理模塊240為電池242充電的同時(shí),還可以通過(guò)電源管理模塊241為終端設(shè)備供電。
[0079]
電源管理模塊241用于連接電池242,充電管理模塊240與處理器210。電源管理模塊241接收電池242和/或充電管理模塊240的輸入,為處理器210,內(nèi)部存儲(chǔ)器221,外部存儲(chǔ)器,顯示屏294,攝像頭293,和無(wú)線通信模塊260等供電。在一些實(shí)施例中,電源管理模塊241和充電管理模塊240也可以設(shè)置于同一個(gè)器件中。
[0080]
終端設(shè)備的無(wú)線通信功能可以通過(guò)天線1,天線2,移動(dòng)通信模塊250,無(wú)線通信模塊260,調(diào)制解調(diào)處理器以及基帶處理器等實(shí)現(xiàn)。在一些實(shí)施例中,終端設(shè)備的天線1和移動(dòng)通信模塊250耦合,天線2和無(wú)線通信模塊260耦合,使得終端設(shè)備可以通過(guò)無(wú)線通信技術(shù)與網(wǎng)絡(luò)以及其他設(shè)備通信。
[0081]
天線1和天線2用于發(fā)射和接收電磁波信號(hào)。終端設(shè)備中的每個(gè)天線可用于覆蓋單個(gè)或多個(gè)通信頻帶。不同的天線還可以復(fù)用,以提高天線的利用率。例如:可以將天線1復(fù)用為無(wú)線局域網(wǎng)的分集天線。在另外一些實(shí)施例中,天線可以和調(diào)諧開關(guān)結(jié)合使用。
[0082]
移動(dòng)通信模塊250可以提供應(yīng)用在終端設(shè)備上的包括2g/3g/4g/5g等無(wú)線通信的解決方案。移動(dòng)通信模塊250可以包括至少一個(gè)濾波器,開關(guān),功率放大器,低噪聲放大器(low noise amplifier,lna)等。移動(dòng)通信模塊250可以由天線1接收電磁波,并對(duì)接收的電磁波進(jìn)行濾波,放大等處理,傳送至調(diào)制解調(diào)處理器進(jìn)行解調(diào)。
[0083]
移動(dòng)通信模塊250還可以對(duì)經(jīng)調(diào)制解調(diào)處理器調(diào)制后的信號(hào)放大,經(jīng)天線1轉(zhuǎn)為電磁波輻射出去。在一些實(shí)施例中,移動(dòng)通信模塊250的至少部分功能模塊可以被設(shè)置于處理器210中。在一些實(shí)施例中,移動(dòng)通信模塊250的至少部分功能模塊可以與處理器210的至少部分模塊被設(shè)置在同一個(gè)器件中。
[0084]
無(wú)線通信模塊260可以提供應(yīng)用在終端設(shè)備上的包括wlan(如(wireless fidelity,wi-fi)網(wǎng)絡(luò)),藍(lán)牙(bluetooth,bt),全球?qū)Ш叫l(wèi)星系統(tǒng)(global navigation satellite system,gnss),調(diào)頻(frequency modulation,fm),近距離無(wú)線通信技術(shù)(near field communication,nfc),紅外技術(shù)(infrared,ir)等無(wú)線通信的解決方案。
[0085]
無(wú)線通信模塊260可以是集成至少一個(gè)通信處理模塊的一個(gè)或多個(gè)器件。無(wú)線通信模塊260經(jīng)由天線2接收電磁波,將電磁波信號(hào)調(diào)頻以及濾波處理,將處理后的信號(hào)發(fā)送到處理器210。無(wú)線通信模塊260還可以從處理器210接收待發(fā)送的信號(hào),對(duì)其進(jìn)行調(diào)頻,放大,經(jīng)天線2轉(zhuǎn)為電磁波輻射出去。
[0086]
終端設(shè)備通過(guò)gpu,顯示屏294,以及應(yīng)用處理器等實(shí)現(xiàn)顯示功能。gpu為圖像處理的微處理器,連接顯示屏294和應(yīng)用處理器。gpu用于執(zhí)行數(shù)學(xué)和幾何計(jì)算,用于圖形渲染。處理器210可包括一個(gè)或多個(gè)gpu,其執(zhí)行程序指令以生成或改變顯示信息。
[0087]
顯示屏294用于顯示圖像,視頻等。該顯示屏294包括顯示面板。
[0088]
終端設(shè)備可以通過(guò)isp,攝像頭293,視頻編解碼器,gpu,顯示屏294以及應(yīng)用處理
器等實(shí)現(xiàn)拍攝功能。isp用于處理攝像頭293反饋的數(shù)據(jù)。攝像頭293用于捕獲靜態(tài)圖像或視頻。在一些實(shí)施例中,終端設(shè)備可以包括1個(gè)或n個(gè)攝像頭293,n為大于1的正整數(shù)。
[0089]
外部存儲(chǔ)器接口220可以用于連接外部存儲(chǔ)卡,例如micro sd卡,實(shí)現(xiàn)擴(kuò)展終端設(shè)備的存儲(chǔ)能力。外部存儲(chǔ)卡通過(guò)外部存儲(chǔ)器接口220與處理器210通信,實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)功能。例如將音樂,視頻等文件保存在外部存儲(chǔ)卡中。
[0090]
內(nèi)部存儲(chǔ)器221可以用于存儲(chǔ)計(jì)算機(jī)可執(zhí)行程序代碼,所述可執(zhí)行程序代碼包括指令。處理器210通過(guò)運(yùn)行存儲(chǔ)在內(nèi)部存儲(chǔ)器221的指令,從而執(zhí)行終端設(shè)備的各種功能應(yīng)用以及數(shù)據(jù)處理。例如,在本技術(shù)實(shí)施例中,處理器210可以通過(guò)執(zhí)行存儲(chǔ)在內(nèi)部存儲(chǔ)器221中的指令,內(nèi)部存儲(chǔ)器221可以包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū)。
[0091]
其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng),至少一個(gè)功能所需的應(yīng)用程序(比如聲音播放功能,圖像播放功能等)等。存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)終端設(shè)備使用過(guò)程中所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù),電話本等)等。此外,內(nèi)部存儲(chǔ)器221可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件,閃存器件,通用閃存存儲(chǔ)器(universal flash storage,ufs)等。
[0092]
終端設(shè)備可以通過(guò)音頻模塊270,揚(yáng)聲器270a,受話器270b,麥克風(fēng)270c,耳機(jī)接口270d,以及應(yīng)用處理器等實(shí)現(xiàn)音頻功能。例如音樂播放,錄音等。
[0093]
按鍵290包括開機(jī)鍵,音量鍵等。按鍵290可以是機(jī)械按鍵。也可以是觸摸式按鍵。馬達(dá)291可以產(chǎn)生振動(dòng)提示。馬達(dá)291可以用于來(lái)電振動(dòng)提示,也可以用于觸摸振動(dòng)反饋。指示器292可以是指示燈,可以用于指示充電狀態(tài),電量變化,也可以用于指示消息,未接來(lái)電,通知等。sim卡接口295用于連接sim卡。sim卡可以通過(guò)插入sim卡接口295,或從sim卡接口295拔出,實(shí)現(xiàn)和終端設(shè)備的接觸和分離。終端設(shè)備可以支持1個(gè)或n個(gè)sim卡接口,n為大于1的正整數(shù)。sim卡接口295可以支持nano sim卡,micro sim卡,sim卡等。
[0094]
下面將結(jié)合附圖說(shuō)明本技術(shù)實(shí)施例提供的故障定位方法。
[0095]
在本技術(shù)實(shí)施例中,故障定位方法可包括三個(gè)步驟,分別為:一、多個(gè)終端設(shè)備向服務(wù)器上報(bào)故障;二、服務(wù)器篩選與故障相關(guān)的故障日志和流水日志;三、服務(wù)器根據(jù)故障日志和關(guān)聯(lián)日志定位故障節(jié)點(diǎn)。下面將分別詳細(xì)說(shuō)明上述三個(gè)步驟。
[0096]
一、多個(gè)終端設(shè)備向服務(wù)器上報(bào)故障
[0097]
在多個(gè)終端設(shè)備處理第一分布式業(yè)務(wù)的過(guò)程中出現(xiàn)故障,最先發(fā)現(xiàn)故障的終端設(shè)備以及與該終端設(shè)備關(guān)聯(lián)的設(shè)備(后稱為關(guān)聯(lián)設(shè)備)可以主動(dòng)向服務(wù)器上報(bào)故障日志。其中,第一分布式業(yè)務(wù)并不指代任何特定的分布式業(yè)務(wù),僅為分布式業(yè)務(wù)的示例。
[0098]
其中,關(guān)聯(lián)設(shè)備可以為參與第一分布式業(yè)務(wù)的多個(gè)終端設(shè)備中除最先發(fā)現(xiàn)故障并上報(bào)故障日的終端設(shè)備以外的其他設(shè)備。例如,終端設(shè)備20、終端設(shè)備30、終端設(shè)備40及終端設(shè)備50共同參與第一分布式業(yè)務(wù),其中終端設(shè)備20為最先發(fā)現(xiàn)故障且上報(bào)故障日志的終端設(shè)備,則終端設(shè)備30、終端設(shè)備40及終端設(shè)備50為關(guān)聯(lián)設(shè)備。
[0099]
可選的,關(guān)聯(lián)設(shè)備還可以為分布式系統(tǒng)內(nèi)當(dāng)前在線的終端設(shè)備以及在故障發(fā)生前的預(yù)設(shè)時(shí)間(例如1分鐘、10分鐘、半小時(shí))內(nèi)在線的終端設(shè)備。例如,分布式系統(tǒng)包括終端設(shè)備20、終端設(shè)備30、終端設(shè)備40及終端設(shè)備50,其中終端設(shè)備20為最先發(fā)現(xiàn)故障的設(shè)備,在故障發(fā)生前的1分鐘內(nèi),僅有終端設(shè)備20、終端設(shè)備30、終端設(shè)備40在線,在故障發(fā)生后,終端設(shè)備40掉線,則關(guān)聯(lián)設(shè)備包括終端設(shè)備30和終端設(shè)備40。
[0100]
下面,以第一設(shè)備為最先發(fā)現(xiàn)第一分布式業(yè)務(wù)出現(xiàn)故障的設(shè)備,關(guān)聯(lián)設(shè)備為第二設(shè)備為例,結(jié)合圖5說(shuō)明多個(gè)終端設(shè)備上報(bào)故障的過(guò)程。如圖5所示,為本技術(shù)實(shí)施例提供的故障定位方法的部分流程圖。該故障定位方法包括:
[0101]
s501,在第一分布式業(yè)務(wù)發(fā)生故障時(shí),第一設(shè)備向服務(wù)器發(fā)送第一故障日志。
[0102]
第一設(shè)備在同一時(shí)間可以處理多個(gè)分布式業(yè)務(wù)。例如,第一設(shè)備可以為手機(jī),多個(gè)分布式業(yè)務(wù)可以包括:業(yè)務(wù)1,手機(jī)將視頻投屏至智能電視,由智能電視播放視頻畫面;業(yè)務(wù)2,手機(jī)將接收到的來(lái)電信息轉(zhuǎn)發(fā)給平板,用戶通過(guò)平板接聽電話時(shí),平板調(diào)用手機(jī)的通話模塊接收/傳輸音頻流。第一分布式業(yè)務(wù)可以為多個(gè)分布式業(yè)務(wù)中的任意一個(gè)。
[0103]
具體的,若第一設(shè)備在處理第一分布式業(yè)務(wù)的過(guò)程中發(fā)生故障,第一設(shè)備可生成第一故障日志,并向服務(wù)器發(fā)送第一故障日志。
[0104]
在本技術(shù)實(shí)施例中,第一故障日志包括event id、故障時(shí)間、故障設(shè)備(即第一設(shè)備)的設(shè)備類型、故障模塊、故障類型、故障設(shè)備的uuid、關(guān)聯(lián)設(shè)備的uuid、第一分布式業(yè)務(wù)的trace id等。
[0105]
其中,設(shè)備類型可以包括終端、pc、服務(wù)器、路由器等。進(jìn)一步的,該根據(jù)故障設(shè)備所使用的操作系統(tǒng),可以將設(shè)備類型分為兩類:第一類為使用windows操作系統(tǒng)的設(shè)備,例如pc;第二類為使用非windows操作系統(tǒng)的設(shè)備,例如手機(jī)、路由器。
[0106]
故障模塊指第一設(shè)備中發(fā)生故障的模塊,該模塊可以是硬件模塊,也可以是軟件模塊,在此不做具體限制。該故障類型可包括rpc請(qǐng)求失敗或超時(shí)、無(wú)響應(yīng)、設(shè)備重啟、進(jìn)程崩潰、應(yīng)用卡死、系統(tǒng)服務(wù)故障等。
[0107]
在一種可選的實(shí)施方式中,第一設(shè)備中可以預(yù)先存儲(chǔ)第一分布式業(yè)務(wù)的調(diào)用關(guān)系(可以稱為第一調(diào)用關(guān)系)。該第一調(diào)用關(guān)系用于指示該第一分布式業(yè)務(wù)所涉及的設(shè)備,以及每個(gè)設(shè)備的uuid。示例性的,該第一調(diào)用關(guān)系指示第一設(shè)備、第二設(shè)備及第三設(shè)備參與了第一分布式業(yè)務(wù),則第一設(shè)備可以查詢到第二設(shè)備的uuid和第三設(shè)備的uuid,并在第一故障日志中添加第二設(shè)備的uuid和第三設(shè)備的uuid。這樣一來(lái),關(guān)聯(lián)設(shè)備均為參與第一分布式業(yè)務(wù)的設(shè)備,關(guān)聯(lián)設(shè)備上傳的信息與故障相關(guān)的可能性較大,可以為服務(wù)器定位故障提供更準(zhǔn)確的信息。
[0108]
在另一種可選的實(shí)施方式中,第一設(shè)備中可以預(yù)存儲(chǔ)有分布式系統(tǒng)內(nèi)每個(gè)終端設(shè)備的狀態(tài)以及uuid。在第一分布式業(yè)務(wù)出現(xiàn)故障后,第一設(shè)備可以獲取分布式系統(tǒng)內(nèi)當(dāng)前在線的終端設(shè)備的uuid以及在一分布式業(yè)務(wù)出現(xiàn)故障前的預(yù)設(shè)時(shí)間內(nèi)(例如發(fā)生故障前1分鐘)在線的終端設(shè)備的uuid,并在第一故障日志中添加獲取到的uuid。這樣一來(lái),即使掉線的設(shè)備也需要上傳與故障相關(guān)的信息,使得服務(wù)器獲取的信息更加全面。
[0109]
在本技術(shù)實(shí)施例中,若第一設(shè)備的設(shè)備類型為第二類,則該第一故障日志還包括運(yùn)行標(biāo)識(shí)(running id),該running id用于標(biāo)識(shí)第一流水日志,該第一流水日志為第一設(shè)備發(fā)生故障前第一時(shí)間到第一設(shè)備發(fā)生故障后第二時(shí)間內(nèi)的流水日志。服務(wù)器可根據(jù)該running id快速查到與故障相關(guān)的流水日志。若第一設(shè)備的設(shè)備類型為第二類,第一設(shè)備還會(huì)在第一分布式業(yè)務(wù)發(fā)生故障時(shí),將第一流水日志所包括的內(nèi)容添加到第一故障日志中并發(fā)送給服務(wù)器,也就是說(shuō),該第一故障日志還包括第一流水日志所包括的內(nèi)容,這樣一來(lái),服務(wù)器無(wú)需再額外查流水日志。
[0110]
s502,第一設(shè)備向第二設(shè)備發(fā)送第一通知。
[0111]
根據(jù)上文可知,第一設(shè)備可以獲取關(guān)聯(lián)設(shè)備的uuid,則第一設(shè)備可以從關(guān)聯(lián)設(shè)備的uuid中查詢到第二設(shè)備的uuid,并向第二設(shè)備發(fā)送第一通知。需要說(shuō)明的是,第二設(shè)備包括所有的關(guān)聯(lián)設(shè)備。
[0112]
該第一通知可包括event id、第一分布式業(yè)務(wù)的trace id、第一分布式業(yè)務(wù)發(fā)生故障的時(shí)刻等。
[0113]
s503,第二設(shè)備接收第一通知。
[0114]
具體的,第二設(shè)備接收第一設(shè)備發(fā)送的第一通知,即第二設(shè)備可以接收到event id以及第一分布式業(yè)務(wù)的trace id。在接收到第一通知后,第二設(shè)備可確定第一分布式業(yè)務(wù)出現(xiàn)故障。
[0115]
s504,第二設(shè)備向服務(wù)器發(fā)送第二故障日志。
[0116]
第二設(shè)備確定第一分布式業(yè)務(wù)出現(xiàn)故障后,可以生成第二故障日志,并向服務(wù)器發(fā)送第二故障日志。其中,第二故障日志包括event id、第二設(shè)備的設(shè)備類型、第二設(shè)備的uuid以及第一分布式業(yè)務(wù)的trace id等。
[0117]
可見,在多個(gè)終端設(shè)備處理第一分布式業(yè)務(wù)的過(guò)程中出現(xiàn)故障,最先發(fā)現(xiàn)故障的終端設(shè)備以及與該終端設(shè)備關(guān)聯(lián)的設(shè)備(后稱為關(guān)聯(lián)設(shè)備)可以主動(dòng)向服務(wù)器上報(bào)故障日志,無(wú)需用戶手動(dòng)上報(bào)故障,簡(jiǎn)化用戶操作。
[0118]
需要說(shuō)明的是,s501~s504中僅以關(guān)聯(lián)設(shè)備包括一個(gè)第二設(shè)備為例進(jìn)行說(shuō)明,實(shí)際上關(guān)聯(lián)設(shè)備可以包括多個(gè)第二設(shè)備。當(dāng)關(guān)聯(lián)設(shè)備包括多個(gè)第二設(shè)備時(shí),第一設(shè)備可以在第一分布式業(yè)務(wù)發(fā)生故障時(shí),向多個(gè)第二設(shè)備均發(fā)送第一通知。多個(gè)第二設(shè)備接收到該第一通知后,均可以向服務(wù)器發(fā)送第二故障日志。其原理與s501~s504類似,在此不再贅述。
[0119]
可選的,用戶還可以選擇手動(dòng)向服務(wù)器上報(bào)故障。示例性的,第一設(shè)備在處理第一分布式業(yè)務(wù)的過(guò)程中發(fā)生故障,用戶可以打開第一設(shè)備上的第一應(yīng)用(例如為智能家居應(yīng)用)。第一設(shè)備可顯示第一應(yīng)用的第一界面,該第一界面包括上報(bào)故障的選項(xiàng)。響應(yīng)于用戶點(diǎn)擊該上報(bào)故障的選項(xiàng)的操作,第一設(shè)備可向服務(wù)器提交第一故障單。該第一故障單包括第一單號(hào)以及故障信息,故障信息可包括event id、故障時(shí)間、第一設(shè)備的設(shè)備類型、故障模塊、故障類型、第一設(shè)備的uuid、第一分布式業(yè)務(wù)的trace id等。此外,響應(yīng)于用戶點(diǎn)擊該上報(bào)故障的選項(xiàng)的操作,第一設(shè)備還可以向第二設(shè)備發(fā)送提交故障單的通知。第二設(shè)備接收到提交故障單的通知后,可向服務(wù)器提交第二故障單。第二故障單包括第二單號(hào)及故障信息。其中,第一單號(hào)與第二單號(hào)相同,表明第一設(shè)備與第二設(shè)備關(guān)聯(lián)。
[0120]
需要說(shuō)明的是,第一設(shè)備和第二設(shè)備除了上傳故障日志,第一設(shè)備、第二設(shè)備還可以實(shí)時(shí)或定時(shí)上傳流水日志,以便于服務(wù)器從流水日志中查詢與故障相關(guān)的信息。流水日志包括終端設(shè)備記錄的事件以及對(duì)應(yīng)的時(shí)間戳,例如包括在啟動(dòng)期間裝入驅(qū)動(dòng)程序或者其他系統(tǒng)組件失敗的事件、第一分布式業(yè)務(wù)的調(diào)用事件(例如cs、sr、ss、cr)等。第一分布式業(yè)務(wù)的調(diào)用事件可以記錄第一分布式業(yè)務(wù)的調(diào)用鏈信息,例如第一分布式業(yè)務(wù)的trace id、span id、parent spanid、節(jié)點(diǎn)數(shù)量等。
[0121]
二、服務(wù)器篩選與故障關(guān)聯(lián)的故障日志和流水日志
[0122]
服務(wù)器確定存在分布式故障后,可以獲取待分析日志集合,該待分析日志集合包括故障設(shè)備、關(guān)聯(lián)設(shè)備上傳的故障日志和流水日志。
[0123]
下面以故障業(yè)務(wù)為第一分布式業(yè)務(wù),第一設(shè)備為最先發(fā)現(xiàn)第一分布式業(yè)務(wù)出現(xiàn)故
障的設(shè)備,第二設(shè)備為關(guān)聯(lián)設(shè)備,具體說(shuō)明服務(wù)器獲取待分析日志集合的過(guò)程。
[0124]
如圖6所示,本技術(shù)實(shí)施例提供的故障定位方法包括:
[0125]
s601,服務(wù)器遍歷事件信息中的每個(gè)故障日志,并判斷每個(gè)故障日志攜帶的事件id與分布式故障的事件id集合是否匹配。
[0126]
服務(wù)器在接收到終端設(shè)備上傳的故障日志(例如,第一設(shè)備上傳的第一故障日志、第二設(shè)備上傳的第二故障日志),可以將故障日志存儲(chǔ)至特定的文件夾內(nèi),例如服務(wù)器可以將故障日志存儲(chǔ)至事件信息(event info)中。如此,該event info中包括多個(gè)故障日志。
[0127]
服務(wù)器可以遍歷該事件信息中的每個(gè)故障日志,以判斷是否存在分布式故障。其中,分布式故障可以理解為在處理分布式業(yè)務(wù)過(guò)程中出現(xiàn)的故障,可包括rpc請(qǐng)求失敗或超時(shí)、無(wú)響應(yīng)、設(shè)備重啟、進(jìn)程崩潰、應(yīng)用卡死、系統(tǒng)服務(wù)故障等。前文已經(jīng)說(shuō)明,故障日志包括event id、分布式業(yè)務(wù)的trace id、故障設(shè)備的uuid等信息。在本技術(shù)實(shí)施例中,服務(wù)器可以讀取每個(gè)故障日志中的event id,并判斷每個(gè)故障日志攜帶的事件id是否與分布式故障的事件id集合匹配。若第一故障日志攜帶的事件id與分布式故障的事件id集合匹配,確定第一分布式業(yè)務(wù)存在故障。其中,分布式故障的事件id集合包括所有由分布式故障造成event id。其中,故障日志攜帶的事件id與分布式故障的事件id集合匹配可指,分布式故障的事件id集合包括該故障日志攜帶的事件id。
[0128]
可選的,服務(wù)器還可以判斷該故障日志攜帶的事件id是否是以特定字符開頭的字符串,例如為950*******或者951*******(即以950或951開頭的字符串)。若某個(gè)故障日志攜帶的event id為以特定字符開頭的字符串,則服務(wù)器可以確定存在分布式故障;若不存在event id為以特定字符開頭的字符串,則服務(wù)器可以確定不存在分布式故障。
[0129]
可選的,服務(wù)器可以按照預(yù)設(shè)的時(shí)間間隔遍歷事件信息中的每個(gè)故障日志,判斷是否存在分布式故障。示例性的,服務(wù)器可以每間隔10分鐘、1小時(shí)或者1天,遍歷一次事件信息,以判斷是否存在分布式故障。
[0130]
s602,若第一故障日志攜帶的事件id與分布式故障的事件id集合匹配,服務(wù)器確定第一分布式業(yè)務(wù)存在故障。
[0131]
s603,服務(wù)器判斷第一設(shè)備的設(shè)備類型為第一類型或第二類型。
[0132]
具體的,設(shè)備類型可包括第一類型和第二類型。其中,第一類型為使用andriod系統(tǒng)的設(shè)備,例如手機(jī)。第二類型為使用windows系統(tǒng)的設(shè)備,例如pc。其中,第一類型的終端設(shè)備上傳的故障日志中,包括running id,可用于查詢?cè)摻K端設(shè)備在發(fā)生故障前第一時(shí)間到終端設(shè)備發(fā)生故障后第二時(shí)間內(nèi)的流水日志。第二類型的終端設(shè)備上傳的故障日志中,包括該終端設(shè)備在發(fā)生故障前第一時(shí)間到終端設(shè)備發(fā)生故障后第二時(shí)間內(nèi)的流水日志的內(nèi)容。
[0133]
其中,若第一設(shè)備的設(shè)備類型為第一類型,服務(wù)器執(zhí)行s604;若第一設(shè)備的設(shè)備類型為第二類型,服務(wù)器執(zhí)行s605。
[0134]
s604,服務(wù)器根據(jù)第一故障日志攜帶的運(yùn)行標(biāo)識(shí),并將運(yùn)行標(biāo)識(shí)所指示的流水日志添加至待分析日志集合。
[0135]
其中,該第一故障日志攜帶的運(yùn)行標(biāo)識(shí)也可以稱為第一運(yùn)行標(biāo)識(shí)。
[0136]
s605,服務(wù)器將第一故障日志添加至待分析日志集合。
[0137]
由于第二類型的終端設(shè)備上傳的故障日志中,原本就包括流水日志的內(nèi)容,因此
服務(wù)器無(wú)需查,直接將其添加至待分析日志集合即可。
[0138]
可見,本技術(shù)針對(duì)不同類型的終端設(shè)備可以采用不過(guò)聚合流水日志的方法,方便、高效。
[0139]
s606,服務(wù)器從第一故障日志解析得到第一分布式業(yè)務(wù)的trace id和第二設(shè)備的uuid。
[0140]
s607,服務(wù)器根據(jù)第一分布式業(yè)務(wù)的trace id和第二設(shè)備的uuid在事件信息進(jìn)行檢索,得到第二故障日志。
[0141]
s608,服務(wù)器判斷第二設(shè)備的設(shè)備類型為第一類型或第二類型。
[0142]
若第二設(shè)備的設(shè)備類型為第一類型,服務(wù)器執(zhí)行s609;若第二設(shè)備的設(shè)備類型為第二類型,服務(wù)器執(zhí)行s610。
[0143]
s609,服務(wù)器根據(jù)第二故障日志攜帶的運(yùn)行標(biāo)識(shí),并將運(yùn)行標(biāo)識(shí)所指示的流水日志添加至待分析日志集合。
[0144]
其中,該第二故障日志攜帶的運(yùn)行標(biāo)識(shí)也可以稱為第二運(yùn)行標(biāo)識(shí)。
[0145]
s610,服務(wù)器將第二故障日志添加至待分析日志集合。
[0146]
需要說(shuō)明的是,在第一設(shè)備、第二設(shè)備的設(shè)備類型為第一類型的情況下,服務(wù)器也可將第一故障日志、第二故障日志添加至待分析日志集合,使待分析日志中包括與第一分布式業(yè)務(wù)關(guān)聯(lián)的故障日志。
[0147]
如此,服務(wù)器便可以獲得待分析日志集合,且該待分析日志集合包括與第一分布式業(yè)務(wù)關(guān)聯(lián)的流水日志、故障日志,這能減少后續(xù)服務(wù)器需要分析的日志的數(shù)量,降低分析難度,便于后續(xù)進(jìn)行分析、定位故障節(jié)點(diǎn)和原因。
[0148]
需要說(shuō)明的是,根據(jù)前文可知,當(dāng)分布式業(yè)務(wù)出現(xiàn)故障時(shí),最早發(fā)現(xiàn)該故障的設(shè)備(例如,第一設(shè)備)以及關(guān)聯(lián)設(shè)備(例如,第二設(shè)備)均會(huì)上傳故障日志,但其上傳的故障日志所包括的內(nèi)容并不相同。例如,第一設(shè)備上傳了第一故障日志,第二設(shè)備上傳了第二故障日志,第一故障日志包括event id、第一分布式業(yè)務(wù)的trace id、故障設(shè)備(例如,第一設(shè)備)的uuid以及關(guān)聯(lián)設(shè)備(例如,第二設(shè)備)的uuid,第二故障日志包括event id、第一分布式業(yè)務(wù)的trace id以及故障設(shè)備(即第二設(shè)備)的uuid。也即,只有最先發(fā)現(xiàn)故障的設(shè)備所上傳的故障日志中,包括關(guān)聯(lián)設(shè)備的uuid。在這種情況下,若服務(wù)器基于第一故障日志確定存在分布式故障,則服務(wù)器可以獲取關(guān)聯(lián)設(shè)備的uuid,并執(zhí)行s606~s610;若服務(wù)器基于第二故障日志確定存在分布式故障,則服務(wù)器則無(wú)需獲取關(guān)聯(lián)設(shè)備的uuid,僅執(zhí)行s601~s605;另外,服務(wù)器還可以繼續(xù)遍歷事件信息,直至遍歷到第一故障日志時(shí),再重新執(zhí)行s601~s610。
[0149]
在獲取待分析日志集合后,服務(wù)器可以確定故障時(shí)刻,并進(jìn)一步根據(jù)故障時(shí)刻對(duì)待分析日志進(jìn)行篩選得到關(guān)聯(lián)日志,進(jìn)一步減少待分析的日志的數(shù)量。
[0150]
其中,故障時(shí)刻為第一分布式業(yè)務(wù)出現(xiàn)故障的時(shí)刻??紤]到第一設(shè)備與第二設(shè)備作為兩個(gè)獨(dú)立的系統(tǒng),其具有不同的授時(shí)系統(tǒng),即第一設(shè)備上第一分布式業(yè)務(wù)發(fā)生故障的時(shí)刻與第二設(shè)備上第一分布式業(yè)務(wù)發(fā)生故障的時(shí)刻可能并不相同。因此,該故障時(shí)刻包括第一故障時(shí)刻、第二故障時(shí)刻,第一故障時(shí)刻為第一設(shè)備上第一分布式業(yè)務(wù)發(fā)生故障的時(shí)刻,第二故障時(shí)刻為第二設(shè)備上第一分布式業(yè)務(wù)發(fā)生故障的時(shí)刻。該關(guān)聯(lián)日志包括第一關(guān)聯(lián)流水日志以及第二關(guān)聯(lián)流水日志,第一關(guān)聯(lián)流水日志包括第一設(shè)備在第一故障時(shí)刻的流
水日志,第二關(guān)聯(lián)流水日志包括第二設(shè)備在第二故障時(shí)刻的流水日志。
[0151]
其中,第一設(shè)備作為最先檢測(cè)到第一分布式業(yè)務(wù)出現(xiàn)故障的設(shè)備,其上傳第一故障日志中攜帶的時(shí)間戳為第一分布式業(yè)務(wù)出現(xiàn)故障的真實(shí)時(shí)刻。因此,服務(wù)器可以將第一故障日志中攜帶的時(shí)間戳作為第一故障時(shí)刻。
[0152]
在確定第一故障時(shí)刻后,服務(wù)器可以基于第一故障時(shí)刻及第一設(shè)備的uuid在待分析日志集合中進(jìn)行檢索,得到第一關(guān)聯(lián)流水日志。具體的,第一關(guān)聯(lián)流水日志可包括時(shí)間戳在t1~t2期間(包括t1時(shí)刻和t2時(shí)刻)的流水日志,t1為第一故障時(shí)刻與第一預(yù)設(shè)時(shí)間的差值,t2為第一故障時(shí)刻與第二預(yù)設(shè)時(shí)間的和。又或者,第一關(guān)聯(lián)流水日志可包括時(shí)間戳在t1~t1期間(包括t1時(shí)刻和t1時(shí)刻)的流水日志,t1為第一故障時(shí)刻。也即,第一關(guān)聯(lián)流水日志包括第一設(shè)備上傳的第一分布式業(yè)務(wù)發(fā)生故障前預(yù)設(shè)時(shí)間內(nèi)的流水日志以及第一分布式業(yè)務(wù)發(fā)生故障時(shí)的流水日志即可,本技術(shù)在此不做具體限制。
[0153]
在本技術(shù)實(shí)施例中,服務(wù)器可根據(jù)第一分布式業(yè)務(wù)的埋點(diǎn)情況,估算第一設(shè)備與第二設(shè)備之間的時(shí)間誤差,并根據(jù)第一故障時(shí)刻及該時(shí)間誤差得到第二故障時(shí)刻。
[0154]
具體的,服務(wù)器可以先根據(jù)第一分布式業(yè)務(wù)的trace id從待分析日志集合中解析得到第一分布式業(yè)務(wù)的交互數(shù)據(jù),并根據(jù)該交互數(shù)據(jù)估算第一設(shè)備與第二設(shè)備之間的時(shí)間誤差。
[0155]
其中,該交互數(shù)據(jù)包括第一設(shè)備與第二設(shè)備每次交互的時(shí)間戳。具體的,交互數(shù)據(jù)可包括第一設(shè)備與第二設(shè)備最近一次交互過(guò)程中(其中以第一設(shè)備為客戶端,第二設(shè)備為服務(wù)端為例),cs點(diǎn)的時(shí)間戳(也可以稱為第一時(shí)間戳)、sr點(diǎn)的時(shí)間戳(也可以稱為第二時(shí)間戳)、ss點(diǎn)的時(shí)間戳(也可以稱為第三時(shí)間戳)、cr點(diǎn)的時(shí)間戳(也可以稱為第四時(shí)間戳)。
[0156]
接著,服務(wù)器可基于第一時(shí)間戳、第二時(shí)間戳、第三時(shí)間戳及第四時(shí)間戳計(jì)算第一設(shè)備與第二設(shè)備之間的時(shí)戳校正值,該時(shí)戳校正值可以理解為時(shí)間誤差。
[0157]
在一種可選的實(shí)施方式中,服務(wù)器可以先根據(jù)第一時(shí)間戳、第二時(shí)間戳、第三時(shí)間戳及第四時(shí)間戳計(jì)算時(shí)戳校正值的無(wú)偏估計(jì),并計(jì)算時(shí)戳校正值。其中,該無(wú)偏估計(jì)滿足算式:
[0158][0159]
其中,δt為時(shí)戳校正值的無(wú)偏估計(jì),cs為第一時(shí)間戳,sr為第二時(shí)間戳,ss為第三時(shí)間戳,cr為第四時(shí)間戳。
[0160]
根據(jù)圖7可知:當(dāng)δt1≤δt2時(shí),ε+δt1=δt、ε+δt=δt2;
[0161]
當(dāng)δt1>δt2時(shí),ε+δt2=δt、ε+δt=δt1;
[0162]
進(jìn)而,ε≤δt。ε可以理解為第一設(shè)備與第二設(shè)備的時(shí)戳校正值,該時(shí)戳校正值小于等于δt。
[0163]
也就是說(shuō),若要滿足算式1,ε需滿足:ε≤δt。
[0164]
另外,根據(jù)圖7可以看出:第一設(shè)備上cs點(diǎn)的時(shí)刻與第二設(shè)備上a點(diǎn)的時(shí)刻(sr-δt)對(duì)應(yīng)。如此,第一設(shè)備上的ta時(shí)刻與第二設(shè)備上的tb時(shí)刻可存在映射關(guān)系:
[0165]
ta-cs=tb-(sr-δt)
……
算式2
[0166]
對(duì)算式2進(jìn)行等式變化可得:其中,為
時(shí)戳校正值。
[0167]
其中,對(duì)于調(diào)用鏈內(nèi)的時(shí)刻,第一設(shè)備上的ta時(shí)刻與第二設(shè)備上的tb時(shí)刻可存在映射關(guān)系:其中,ε≤δt,ta∈[cs,cr],tb∈[sr-δt,ss+δt]。
[0168]
對(duì)于調(diào)用鏈外的時(shí)刻,第一設(shè)備上的ta時(shí)刻與第二設(shè)備上的tb時(shí)刻可存在映射關(guān)系:其中,ε≤δt。
[0169]
示例性的,第一設(shè)備與第二設(shè)備最近一次的調(diào)用情況可以如圖8中的(a)所示,其中cs=10,sr=20,ss=30,cr=50。將cs=10,sr=20,ss=30,cr=50代入上述算式2可得到:ta=tb+5,且ε≤15。如此,可得到圖8中的(b)所示的映射情況:第一設(shè)備上的時(shí)間戳為10時(shí),第二設(shè)備上的時(shí)間戳為5;第一設(shè)備上的時(shí)間戳為25時(shí),第二設(shè)備上的時(shí)間戳為20;第一設(shè)備上的時(shí)間戳為35時(shí),第二設(shè)備上的時(shí)間戳為30;第一設(shè)備上的時(shí)間戳為50時(shí),第二設(shè)備上的時(shí)間戳為45。進(jìn)一步的,對(duì)圖8中的(b)所示的映射圖進(jìn)行校正后,可得到如圖8中的(c)所示的映射圖。圖8僅示出了在調(diào)用鏈內(nèi)的時(shí)間戳的對(duì)應(yīng)情況,實(shí)際上調(diào)用鏈外的時(shí)刻也具備該映射關(guān)系,例如第一故障時(shí)刻為55時(shí),可以確定第二故障時(shí)刻為50。
[0170]
通過(guò)上述調(diào)用鏈的埋點(diǎn)時(shí)刻計(jì)算時(shí)戳校正值,無(wú)需進(jìn)行大量計(jì)算,可以在無(wú)功耗損失的前提下,獲取較為精準(zhǔn)的時(shí)戳校正值。
[0171]
需要說(shuō)明的是,上述僅僅給出了一種計(jì)算時(shí)戳校正值的方法,實(shí)際上還可以利用神經(jīng)網(wǎng)絡(luò)模型等方法估算第一設(shè)備與第二設(shè)備的時(shí)戳校正值。例如,服務(wù)器可以將第一時(shí)間戳、第二時(shí)間戳、第三時(shí)間戳及第四時(shí)間戳輸入預(yù)先建立的神經(jīng)網(wǎng)絡(luò)模型,由神經(jīng)網(wǎng)絡(luò)模型輸出時(shí)戳校正值,該預(yù)先建立的神經(jīng)網(wǎng)絡(luò)模型由大量的訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練得到,訓(xùn)練數(shù)據(jù)可包括一次調(diào)用過(guò)程中的cs時(shí)間點(diǎn)、sr時(shí)間點(diǎn)、ss時(shí)間點(diǎn)、cr時(shí)間點(diǎn)以及兩個(gè)設(shè)備之間的時(shí)間誤差。
[0172]
在確定第二故障時(shí)刻后,服務(wù)器可以根據(jù)該第二故障時(shí)刻和第二設(shè)備uuid在待分析日志集合中進(jìn)行檢索,得到第二關(guān)聯(lián)流水日志。具體的,第二關(guān)聯(lián)流水日志可包括時(shí)間戳在t3~t4期間(包括t3時(shí)刻和t4時(shí)刻)的流水日志,t3為第二故障時(shí)刻與第一預(yù)設(shè)時(shí)間的差值,t4為第二故障時(shí)刻與第二預(yù)設(shè)時(shí)間的和。
[0173]
可選的,服務(wù)器也可以不計(jì)算第二故障時(shí)刻。服務(wù)器可以基于該時(shí)戳校正值將第一設(shè)備上的t1時(shí)刻映射至第二設(shè)備上的t3時(shí)刻,將第一設(shè)備上的t2時(shí)刻映射至第二設(shè)備上的t4時(shí)刻,并進(jìn)一步篩選第二設(shè)備上傳的時(shí)間戳在t3~t4期間(包括t3時(shí)刻和t4時(shí)刻)的流水日志。
[0174]
服務(wù)器通過(guò)兩次篩選后得到關(guān)聯(lián)日志,可以進(jìn)一步縮小服務(wù)器待分析的流水日志的數(shù)量,減小服務(wù)器的分析難度。
[0175]
需要說(shuō)明的是,上述的第二設(shè)備可以為一個(gè)也可以為多個(gè),在此不做具體限制。其中,當(dāng)?shù)诙O(shè)備為多個(gè)的具體流程與第二設(shè)備為一個(gè)的流程類似:服務(wù)器可以基于圖6所示的流程查每個(gè)第二設(shè)備的流水日志并將其添加至待分析日志集合。以及,確定第一設(shè)備與每個(gè)第二設(shè)備的時(shí)戳校正值,并基于故障時(shí)刻和對(duì)應(yīng)的時(shí)戳校正值在待分析日志集合中進(jìn)行檢索,得到對(duì)應(yīng)的關(guān)聯(lián)流水日志,從而完成流水日志的篩選。
[0176]
三、服務(wù)器根據(jù)故障日志和關(guān)聯(lián)日志定位故障節(jié)點(diǎn)
[0177]
服務(wù)器在故障日志和關(guān)聯(lián)日志后,可以根據(jù)故障日志和關(guān)聯(lián)日志構(gòu)建調(diào)用樹。
[0178]
具體的,服務(wù)器可以基于第一分布式業(yè)務(wù)的trace id從故障日志提取多個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息,并根據(jù)多個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建第一調(diào)用樹。其中,第一節(jié)點(diǎn)的節(jié)點(diǎn)信息可包括trace id、span id以及parent spanid。其中,
[0179]
其中,若存在具有相同節(jié)點(diǎn)信息的多個(gè)第一節(jié)點(diǎn),服務(wù)器可以將多個(gè)第一節(jié)點(diǎn)合并為一個(gè)節(jié)點(diǎn)。
[0180]
前文已經(jīng)說(shuō)明,同一調(diào)用鏈中的每個(gè)節(jié)點(diǎn)具有相同的trace id;每個(gè)節(jié)點(diǎn)在接收到調(diào)用請(qǐng)求時(shí)可以生成span id,以及將本節(jié)點(diǎn)的span id一起傳遞給下游節(jié)點(diǎn)。當(dāng)攜帶有該span id的調(diào)用請(qǐng)求傳到下游節(jié)點(diǎn)時(shí),下游節(jié)點(diǎn)將生成新的span id,并將調(diào)用請(qǐng)求中攜帶的span id記錄為parent spanid。因此,若多個(gè)第一節(jié)點(diǎn)中存在相鄰的兩個(gè)第一節(jié)點(diǎn),服務(wù)器可以連接相鄰的兩個(gè)第一節(jié)點(diǎn),以構(gòu)建第一調(diào)用樹。其中,兩個(gè)相鄰的第一節(jié)點(diǎn)中的一個(gè)第一節(jié)點(diǎn)的span id為另一個(gè)第一節(jié)點(diǎn)的parent spanid。
[0181]
示例性的,服務(wù)器提取出兩個(gè)第一節(jié)點(diǎn),其中節(jié)點(diǎn)1的節(jié)點(diǎn)信息包括:parent spanid=0,span id=0,trace id=0xe962f174aeb4205;節(jié)點(diǎn)2的節(jié)點(diǎn)信息包括:parent spanid=0,span id=1,trace id=0xe962f174aeb4205。其中,節(jié)點(diǎn)1的span id為節(jié)點(diǎn)2parent spanid=0,因此可以連接節(jié)點(diǎn)1、節(jié)點(diǎn)2,從而構(gòu)建如圖9所示的第一調(diào)用樹。
[0182]
可選的,若兩個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息指示該兩個(gè)第一節(jié)點(diǎn)不相鄰,服務(wù)器可以基于該兩個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建虛擬節(jié)點(diǎn),并該兩個(gè)第一節(jié)點(diǎn)、虛擬節(jié)點(diǎn)構(gòu)建第一調(diào)用樹。其中,不相鄰的兩個(gè)第一節(jié)點(diǎn)(例如節(jié)點(diǎn)a、節(jié)點(diǎn)b)可指:節(jié)點(diǎn)a的span id不為節(jié)點(diǎn)b的parent spanid,以及節(jié)點(diǎn)b的span id不為節(jié)點(diǎn)a的parent spanid。
[0183]
具體的,服務(wù)器可以將節(jié)點(diǎn)a的span id作為虛擬節(jié)點(diǎn)的parent spanid,將節(jié)點(diǎn)b的parent spanid作為虛擬節(jié)點(diǎn)的span id,或者,將節(jié)點(diǎn)b的span id作為虛擬節(jié)點(diǎn)的parent spanid,將節(jié)點(diǎn)a的parent spanid作為虛擬節(jié)點(diǎn)的span id,并依次連接節(jié)點(diǎn)a、虛擬節(jié)點(diǎn)和節(jié)點(diǎn)b,從而構(gòu)建虛擬節(jié)點(diǎn)。
[0184]
示例性的,節(jié)點(diǎn)a的節(jié)點(diǎn)信息包括:parent spanid=0,span id=0,trace id=0xe962f174aeb4205;節(jié)點(diǎn)b的節(jié)點(diǎn)信息包括:parent spanid=1,span id=6,trace id=0xe962f174aeb4205。其中,節(jié)點(diǎn)a的parent spanid與span id相同(均為0),因此可以確定第一節(jié)點(diǎn)為根節(jié)點(diǎn)。如此,服務(wù)器可以構(gòu)建出虛擬節(jié)點(diǎn)c:parent spanid=0,span id=1,trace id=0xe962f174aeb4205,并基于節(jié)點(diǎn)a、虛擬節(jié)點(diǎn)c、節(jié)點(diǎn)b構(gòu)建出如圖10所示的第一調(diào)用樹。
[0185]
服務(wù)器還可以從關(guān)聯(lián)日志中提取多個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息,并根據(jù)多個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建第二調(diào)用樹。
[0186]
每個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息包括trace id、該第二節(jié)點(diǎn)的span id、該第二節(jié)點(diǎn)的parent spanid以及該第二節(jié)點(diǎn)與其他第二節(jié)點(diǎn)的交互情況。第二調(diào)用樹相對(duì)于第一調(diào)用樹,具備更豐富的信息,有利于還原完整的調(diào)用鏈。
[0187]
服務(wù)器可以連接多個(gè)第二節(jié)點(diǎn)中兩個(gè)相鄰的第二節(jié)點(diǎn),以構(gòu)建第二調(diào)用樹,其中,兩個(gè)相鄰的第二節(jié)點(diǎn)中的一個(gè)第二節(jié)點(diǎn)的span id為另一個(gè)第二節(jié)點(diǎn)的parent spanid,兩個(gè)相鄰的第二節(jié)點(diǎn)的連接關(guān)系與兩個(gè)相鄰的第二節(jié)點(diǎn)的交互情況對(duì)應(yīng),若兩個(gè)相鄰的第二
節(jié)點(diǎn)間存在cs、sr的過(guò)程,兩個(gè)相鄰的第二節(jié)點(diǎn)間建立第一連接;若兩個(gè)相鄰的第二節(jié)點(diǎn)間存在ss、cr的過(guò)程,兩個(gè)相鄰的第二節(jié)點(diǎn)間建立第二連接。
[0188]
示例性的,服務(wù)器可以從關(guān)聯(lián)日志中提取出7個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息,其中,7個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息如表1所示:
[0189]
表1
[0190][0191]
根據(jù)節(jié)點(diǎn)2的parent spanid(即0)為節(jié)點(diǎn)1的span id(即0),節(jié)點(diǎn)3的parent spanid(即0)為節(jié)點(diǎn)1的span id(即0)可確定,節(jié)點(diǎn)1與節(jié)點(diǎn)2、節(jié)點(diǎn)3相鄰;根據(jù)節(jié)點(diǎn)4的parent spanid(即2)為節(jié)點(diǎn)2的span id(即2),節(jié)點(diǎn)5的parent spanid(即2)為節(jié)點(diǎn)2的span id(即2)可確定,節(jié)點(diǎn)2與節(jié)點(diǎn)4、節(jié)點(diǎn)5相鄰;根據(jù)節(jié)點(diǎn)6的parent spanid(即1)為節(jié)點(diǎn)3的span id(即1),節(jié)點(diǎn)7的parent spanid(即1)為節(jié)點(diǎn)3的span id(即1)可確定,節(jié)點(diǎn)3與節(jié)點(diǎn)6、節(jié)點(diǎn)7相鄰。另外,根據(jù)交互情況可知,節(jié)點(diǎn)3未向節(jié)點(diǎn)1發(fā)送反饋,節(jié)點(diǎn)3與節(jié)點(diǎn)1之間不存在第二連接(圖11以虛線表示);節(jié)點(diǎn)7未向節(jié)點(diǎn)3發(fā)送反饋,節(jié)點(diǎn)7與節(jié)點(diǎn)3之間不存在第二連接;其他相鄰節(jié)點(diǎn)存在第一連接、第二連接(圖11以實(shí)線表示)。也即,基于表1所示的節(jié)點(diǎn)信息,服務(wù)器可以構(gòu)建得到如圖11所示的第二調(diào)用樹。如圖11所示,該第二調(diào)用樹包括7個(gè)節(jié)點(diǎn),該第二調(diào)用樹是trace id為0xe962f174aeb4205所指示的分布式業(yè)務(wù)。其中,節(jié)點(diǎn)與節(jié)點(diǎn)之間由實(shí)線或虛線連接,實(shí)線表示兩個(gè)節(jié)點(diǎn)之間進(jìn)行了相應(yīng)的交互,虛線表示兩個(gè)節(jié)點(diǎn)之間未進(jìn)行相應(yīng)的交互。例如,節(jié)點(diǎn)3與節(jié)點(diǎn)1之間的“cs-sr”這一實(shí)線表示節(jié)點(diǎn)3接收到了節(jié)點(diǎn)1的請(qǐng)求,“ss-cr”這一虛線表示節(jié)點(diǎn)3未向節(jié)點(diǎn)1發(fā)送反饋。
[0192]
接著,服務(wù)器可以合并第一調(diào)用樹和第二調(diào)用樹,得到調(diào)用樹。具體的,若第一調(diào)用樹和第二調(diào)用樹中存在節(jié)點(diǎn)信息相同的兩個(gè)節(jié)點(diǎn),服務(wù)器可以合并節(jié)點(diǎn)信息相同的兩個(gè)
節(jié)點(diǎn);若第一調(diào)用樹和第二調(diào)用樹中不存在相同的節(jié)點(diǎn),可以令parent spanid=0、span id=0,以建立虛擬根節(jié)點(diǎn),并將第一調(diào)用樹中的根節(jié)點(diǎn)和第二調(diào)用樹的根節(jié)點(diǎn)連接到立虛擬根節(jié)點(diǎn)。
[0193]
示例性的,第一調(diào)用樹可以為圖10所示,第二調(diào)用樹可以為圖11所示,其中節(jié)點(diǎn)a與節(jié)點(diǎn)1相同,節(jié)點(diǎn)b與節(jié)點(diǎn)3相同,節(jié)點(diǎn)c與節(jié)點(diǎn)7相同,因此服務(wù)器可以合并節(jié)點(diǎn)a與節(jié)點(diǎn)1、節(jié)點(diǎn)b與節(jié)點(diǎn)3、節(jié)點(diǎn)c與節(jié)點(diǎn)7,從而得到如圖11所示的調(diào)用樹。
[0194]
又例如,如圖12所示,第一調(diào)用樹和第二調(diào)用樹不存在相同的節(jié)點(diǎn),其中第一調(diào)用樹的根節(jié)點(diǎn)為節(jié)點(diǎn)2,第二調(diào)用樹的根節(jié)點(diǎn)為節(jié)點(diǎn)3,則可以構(gòu)建虛擬根節(jié)點(diǎn)1:parent spanid=0、span id=0、trace id=0xe962f174aeb4205,并將節(jié)點(diǎn)2、節(jié)點(diǎn)3分別連接至節(jié)點(diǎn)1,以得到如圖12所示的調(diào)用樹。
[0195]
構(gòu)建得到調(diào)用樹后,服務(wù)器可以自動(dòng)定位故障節(jié)點(diǎn)。具體的,根據(jù)分布式系統(tǒng)的調(diào)用方式不同,其定位故障節(jié)點(diǎn)的方法有所不同。其中,調(diào)用方式包括:異步調(diào)用和同步調(diào)用。同步調(diào)用指調(diào)用方需要等待執(zhí)行方的調(diào)用結(jié)果后,才能進(jìn)行下一步操作。異步調(diào)用指調(diào)用方無(wú)須等待執(zhí)行方的執(zhí)行結(jié)果,也能進(jìn)行下一步操作。不過(guò)在正常情況下,不管是同步調(diào)用還是異步調(diào)用,調(diào)用方向執(zhí)行方發(fā)出調(diào)用請(qǐng)求后,總會(huì)收到執(zhí)行方反饋的執(zhí)行結(jié)果。
[0196]
對(duì)于異步調(diào)用而言,服務(wù)器可以確定每個(gè)節(jié)點(diǎn)的入度和出度,若某個(gè)節(jié)點(diǎn)的入度和出度不相同,則可以確定該節(jié)點(diǎn)為故障節(jié)點(diǎn)。其中,入度指節(jié)點(diǎn)接收到消息的數(shù)量,出度為節(jié)點(diǎn)發(fā)出消息的數(shù)量。
[0197]
對(duì)于同步調(diào)用而言,服務(wù)器可以確定每個(gè)節(jié)點(diǎn)的入度和出度,若某個(gè)節(jié)點(diǎn)的入度和出度不相同,或者該節(jié)點(diǎn)無(wú)法形成自環(huán),則可以確定該節(jié)點(diǎn)為故障節(jié)點(diǎn)。其中,自環(huán)指一個(gè)完整的cs、sr、ss、cr的調(diào)用過(guò)程。示例性,圖11中的節(jié)點(diǎn)7,其入度為1,出度為0,可以確定該節(jié)點(diǎn)為故障節(jié)點(diǎn)。又例如,節(jié)點(diǎn)3的入度為2,出度為2,但其在與節(jié)點(diǎn)1的交互過(guò)程中未形成自環(huán),以及在與節(jié)點(diǎn)7的交互過(guò)程中未形成自環(huán),可以確定節(jié)點(diǎn)3為故障節(jié)點(diǎn)。
[0198]
需要說(shuō)明是,該調(diào)用樹還可供用戶進(jìn)行人工診斷。在進(jìn)行人工診斷時(shí),用戶可以簡(jiǎn)單地將第一調(diào)用樹中的第一節(jié)點(diǎn)確定為疑似故障節(jié)點(diǎn),并基于其他日志進(jìn)行確認(rèn)。
[0199]
本技術(shù)實(shí)施例還提供一種芯片系統(tǒng),如圖13所示,該芯片系統(tǒng)包括至少一個(gè)處理器1301和至少一個(gè)接口電路1302。處理器1301和接口電路1302可通過(guò)線路互聯(lián)。例如,接口電路1302可用于從其它裝置(例如,終端設(shè)備的存儲(chǔ)器)接收信號(hào)。又例如,接口電路1302可用于向其它裝置(例如處理器1301)發(fā)送信號(hào)。
[0200]
例如,接口電路1302可讀取終端設(shè)備中存儲(chǔ)器中存儲(chǔ)的指令,并將該指令發(fā)送給處理器1301。當(dāng)所述指令被處理器1301執(zhí)行時(shí),可使得終端設(shè)備(如圖1中的終端設(shè)備20、終端設(shè)備30等)執(zhí)行上述實(shí)施例中的各個(gè)步驟。
[0201]
又例如,接口電路1302可讀取服務(wù)器中存儲(chǔ)器中存儲(chǔ)的指令,并將該指令發(fā)送給處理器1301。當(dāng)所述指令被處理器1301執(zhí)行時(shí),可使得服務(wù)器(如圖1中的服務(wù)器10)執(zhí)行上述實(shí)施例中的各個(gè)步驟。
[0202]
當(dāng)然,該芯片系統(tǒng)還可以包含其他分立器件,本技術(shù)實(shí)施例對(duì)此不作具體限定。
[0203]
本技術(shù)實(shí)施例還提供了一種故障定位裝置,所述裝置可以按照功能劃分為不同的邏輯單元或模塊,各單元或模塊執(zhí)行不同的功能,以使得所述裝置執(zhí)行上述方法實(shí)施例中終端設(shè)備、服務(wù)器執(zhí)行的各個(gè)功能或者步驟。
[0204]
本技術(shù)實(shí)施例還提供一種計(jì)算機(jī)程序產(chǎn)品,當(dāng)所述計(jì)算機(jī)程序產(chǎn)品在故障定位裝置上運(yùn)行時(shí),使得故障定位裝置執(zhí)行上述方法實(shí)施例中故障定位裝置執(zhí)行的各個(gè)功能或者步驟。當(dāng)所述計(jì)算機(jī)程序產(chǎn)品在服務(wù)器上運(yùn)行時(shí),使得所述服務(wù)器執(zhí)行上述方法實(shí)施例中服務(wù)器執(zhí)行的各個(gè)功能或者步驟。
[0205]
在本技術(shù)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)裝置,或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0206]
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是一個(gè)物理單元或多個(gè)物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)不同地方。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
[0207]
另外,在本技術(shù)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
[0208]
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本技術(shù)實(shí)施例的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一個(gè)設(shè)備(可以是單片機(jī),芯片等)或處理器(processor)執(zhí)行本技術(shù)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、只讀存儲(chǔ)器(read only memory,rom)、隨機(jī)存取存儲(chǔ)器(random access memory,ram)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0209]
以上內(nèi)容,僅為本技術(shù)的具體實(shí)施方式,但本技術(shù)的保護(hù)范圍并不局限于此,任何在本技術(shù)揭露的技術(shù)范圍內(nèi)的變化或替換,都應(yīng)涵蓋在本技術(shù)的保護(hù)范圍之內(nèi)。因此,本技術(shù)的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。

技術(shù)特征:


1.一種故障定位方法,其特征在于,包括:所述方法包括:在檢測(cè)到第一分布式業(yè)務(wù)存在故障時(shí),獲取待分析日志集合,其中,所述待分析日志集合包括第一設(shè)備、第二設(shè)備上傳的故障日志和流水日志,所述故障日志和所述流水日志均包括所述第一分布式業(yè)務(wù)的標(biāo)識(shí),所述第一設(shè)備為最先檢測(cè)到所述第一分布式業(yè)務(wù)出現(xiàn)故障的設(shè)備,所述第二設(shè)備與所述第一設(shè)備關(guān)聯(lián);確定故障時(shí)刻,所述故障時(shí)刻為所述第一分布式業(yè)務(wù)發(fā)生故障的時(shí)刻;基于所述故障時(shí)刻從所述待分析日志集合篩選得到關(guān)聯(lián)日志,所述關(guān)聯(lián)日志包括所述第一設(shè)備、所述第二設(shè)備在所述故障時(shí)刻的流水日志;從所述故障日志、所述關(guān)聯(lián)日志中提取出多個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息,每個(gè)節(jié)點(diǎn)表征一次調(diào)用的發(fā)起端或執(zhí)行端,每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息包括所述第一分布式業(yè)務(wù)的標(biāo)識(shí)、該節(jié)點(diǎn)的跨度標(biāo)識(shí)以及父跨度標(biāo)識(shí);根據(jù)所述多個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建調(diào)用樹;若所述調(diào)用樹中任意一個(gè)節(jié)點(diǎn)的出度和入度不相同,確定所述任意一個(gè)節(jié)點(diǎn)為故障節(jié)點(diǎn),其中,所述每個(gè)節(jié)點(diǎn)的出度包括該節(jié)點(diǎn)發(fā)送信息的次數(shù),所述每個(gè)節(jié)點(diǎn)的入度包括該節(jié)點(diǎn)接收到信息的次數(shù)。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述故障時(shí)刻包括第一故障時(shí)刻、第二故障時(shí)刻,所述第一故障時(shí)刻為所述第一設(shè)備上所述第一分布式業(yè)務(wù)發(fā)生故障的時(shí)刻,所述第二故障時(shí)刻為所述第二設(shè)備上所述第一分布式業(yè)務(wù)發(fā)生故障的時(shí)刻;所述確定故障時(shí)刻包括:解析第一故障日志,得到所述第一故障時(shí)刻,所述第一故障日志為所述第一設(shè)備檢測(cè)到第一分布式業(yè)務(wù)時(shí)上傳的故障日志;根據(jù)所述第一分布式業(yè)務(wù)的標(biāo)識(shí)從所述待分析日志集合中解析得到所述第一分布式業(yè)務(wù)的交互數(shù)據(jù),所述交互數(shù)據(jù)包括所述第一設(shè)備、所述第二設(shè)備每次交互的時(shí)間戳;根據(jù)所述交互數(shù)據(jù)確定所述第一設(shè)備的系統(tǒng)時(shí)間與所述第二設(shè)備的系統(tǒng)時(shí)間的映射關(guān)系;根據(jù)所述第一故障時(shí)刻、所述映射關(guān)系計(jì)算所述第二故障時(shí)刻。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述關(guān)聯(lián)日志包括第一關(guān)聯(lián)流水日志以及第二關(guān)聯(lián)流水日志,所述基于所述故障時(shí)刻從所述待分析日志集合篩選得到關(guān)聯(lián)日志,包括:基于所述第一故障時(shí)刻、所述第一設(shè)備的標(biāo)識(shí)從所述待分析日志集合篩選得到所述第一關(guān)聯(lián)流水日志,所述第一關(guān)聯(lián)流水日志為所述第一設(shè)備在所述第一故障時(shí)刻的流水日志;基于所述第二故障時(shí)刻、所述第二設(shè)備的標(biāo)識(shí)從所述待分析日志集合篩選得到所述第二關(guān)聯(lián)流水日志,所述第二關(guān)聯(lián)流水日志為所述第二設(shè)備在所述第二故障時(shí)刻的流水日志。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述交互數(shù)據(jù)包括所述第一設(shè)備、所述第二設(shè)備最近一次交互的第一時(shí)間戳、第二時(shí)間戳、第三時(shí)間戳及第四時(shí)間戳,所述第一時(shí)間戳為所述第一設(shè)備向所述第二設(shè)備發(fā)送調(diào)用請(qǐng)求的時(shí)間,所述第二時(shí)間戳為所述第二設(shè)備接收到所述調(diào)用請(qǐng)求的時(shí)間,所述第三時(shí)間戳為所述第二設(shè)備向所述第一設(shè)備發(fā)送反饋信
息的時(shí)間,所述第四時(shí)間戳為所述第一設(shè)備接收到所述反饋信息的時(shí)間;所述映射關(guān)系指示所述第一設(shè)備的系統(tǒng)時(shí)間與所述第二設(shè)備的系統(tǒng)時(shí)間的差值與所述第一時(shí)間戳、所述第二時(shí)間戳、所述第三時(shí)間戳及所述第四時(shí)間戳關(guān)聯(lián),所述第一時(shí)間戳、所述第三時(shí)間戳與所述差值呈正相關(guān),所述第二時(shí)間戳、所述第四時(shí)間戳與所述差值呈負(fù)相關(guān)。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述映射關(guān)系滿足算式:其中,ta為所述第一設(shè)備的系統(tǒng)時(shí)間,所述為所述第二設(shè)備的系統(tǒng)時(shí)間,cs為所述第一時(shí)間戳,sr為所述第二時(shí)間戳,ss為所述第三時(shí)間戳,cr為所述第四時(shí)間戳。6.根據(jù)權(quán)利要求1-5中任意一項(xiàng)所述的方法,其特征在于,所述從所述故障日志、所述關(guān)聯(lián)日志中提取出多個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息,包括:從所述故障日志中提取多個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息,每個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息包括所述第一分布式業(yè)務(wù)的標(biāo)識(shí)、該第一節(jié)點(diǎn)的跨度標(biāo)識(shí)以及父跨度標(biāo)識(shí);從所述關(guān)聯(lián)日志中提取多個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息,每個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息包括所述第一分布式業(yè)務(wù)的標(biāo)識(shí)、該第二節(jié)點(diǎn)的跨度標(biāo)識(shí)和父跨度標(biāo)識(shí),以及該第二節(jié)點(diǎn)與其他第二節(jié)點(diǎn)的交互情況;所述根據(jù)所述多個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建調(diào)用樹,包括:根據(jù)所述多個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建第一調(diào)用樹;根據(jù)所述多個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建第二調(diào)用樹;合并所述第一調(diào)用樹、所述第二調(diào)用樹得到所述調(diào)用樹。7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)所述多個(gè)第一節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建第一調(diào)用樹,包括:若所述多個(gè)第一節(jié)點(diǎn)中存在兩個(gè)相鄰的第一節(jié)點(diǎn),連接所述兩個(gè)相鄰的第一節(jié)點(diǎn),以構(gòu)建所述第一調(diào)用樹,其中,所述兩個(gè)相鄰的第一節(jié)點(diǎn)中的一個(gè)第一節(jié)點(diǎn)的跨度標(biāo)識(shí)為另一個(gè)第一節(jié)點(diǎn)的父跨度標(biāo)識(shí)。8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述方法還包括:若所述多個(gè)第一節(jié)點(diǎn)中不存在兩個(gè)相鄰的第一節(jié)點(diǎn),確定兩個(gè)不相鄰的第一節(jié)點(diǎn);根據(jù)所述兩個(gè)不相鄰的第一節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建虛擬節(jié)點(diǎn),所述虛擬節(jié)點(diǎn)的跨度標(biāo)識(shí)為所述兩個(gè)不相鄰的第一節(jié)點(diǎn)中一個(gè)第一節(jié)點(diǎn)的父跨度標(biāo)識(shí),所述虛擬節(jié)點(diǎn)的父跨度標(biāo)識(shí)為所述兩個(gè)不相鄰的第一節(jié)點(diǎn)中另一個(gè)第一節(jié)點(diǎn)的跨度標(biāo)識(shí);依次連接所述兩個(gè)不相鄰的第一節(jié)點(diǎn)中的一個(gè)第一節(jié)點(diǎn)、所述虛擬節(jié)點(diǎn)、所述兩個(gè)不相鄰的第一節(jié)點(diǎn)中的另一個(gè)第一節(jié)點(diǎn),以構(gòu)建所述第一調(diào)用樹。9.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)所述多個(gè)第二節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建第二調(diào)用樹,包括:連接所述多個(gè)第二節(jié)點(diǎn)中兩個(gè)相鄰的第二節(jié)點(diǎn),以構(gòu)建所述第二調(diào)用樹,其中,所述兩個(gè)相鄰的第二節(jié)點(diǎn)中的一個(gè)第二節(jié)點(diǎn)的跨度標(biāo)識(shí)為另一個(gè)第一節(jié)點(diǎn)的父跨度標(biāo)識(shí),所述兩個(gè)相鄰的第二節(jié)點(diǎn)的連接關(guān)系與所述兩個(gè)相鄰的第二節(jié)點(diǎn)的交互情況對(duì)應(yīng),若所述兩個(gè)相鄰的第二節(jié)點(diǎn)間存在客戶端發(fā)送、服務(wù)端接收的過(guò)程,所述兩個(gè)相鄰的第二節(jié)點(diǎn)間建立第
一連接;若所述兩個(gè)相鄰的第二節(jié)點(diǎn)間存在服務(wù)端發(fā)送、客戶端接收的過(guò)程,所述兩個(gè)相鄰的第二節(jié)點(diǎn)間建立第二連接。10.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述合并所述第一調(diào)用樹、所述第二調(diào)用樹得到所述調(diào)用樹,包括:若第一調(diào)用樹和第二調(diào)用樹中存在節(jié)點(diǎn)信息相同的兩個(gè)節(jié)點(diǎn),合并所述節(jié)點(diǎn)信息相同的兩個(gè)節(jié)點(diǎn);若第一調(diào)用樹和第二調(diào)用樹中不存在相同的節(jié)點(diǎn),構(gòu)建虛擬根節(jié)點(diǎn),所述虛擬根節(jié)點(diǎn)的跨度標(biāo)識(shí)和父跨度標(biāo)識(shí)為0;連接所述虛擬根節(jié)點(diǎn)與所述第一調(diào)用樹的根節(jié)點(diǎn),連接所述虛擬根節(jié)點(diǎn)與所述第二調(diào)用樹的根節(jié)點(diǎn)。11.根據(jù)權(quán)利要求1-5中任意一項(xiàng)所述的方法,其特征在于,在所述獲取待分析日志集合之前,所述方法還包括:接收所述第一設(shè)備在所述第一分布式業(yè)務(wù)發(fā)生故障時(shí)上傳的第一故障日志,所述第一故障日志包括事件id、所述第一設(shè)備的標(biāo)識(shí)、關(guān)聯(lián)設(shè)備的標(biāo)識(shí)以及所述第一分布式業(yè)務(wù)的標(biāo)識(shí),所述關(guān)聯(lián)設(shè)備包括所述第二設(shè)備;接收所述第二設(shè)備在接收到第一通知后上傳的第二故障日志,所述第一通知指示所述第一分布式業(yè)務(wù)發(fā)生故障,所述第二故障日志包括所述事件id、所述第二設(shè)備的標(biāo)識(shí)以及所述第一分布式業(yè)務(wù)的標(biāo)識(shí);將所述第一故障日志、所述第二故障日志添加至事件信息,所述事件信息包括多個(gè)故障日志。12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述方法還包括:遍歷所述事件信息中的每個(gè)故障日志,并判斷每個(gè)故障日志攜帶的事件id是否與分布式故障的事件id集合匹配;若所述第一故障日志攜帶的事件id與分布式故障的事件id集合匹配,確定所述第一分布式業(yè)務(wù)存在故障。13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述獲取待分析日志集合,包括:判斷所述第一設(shè)備的設(shè)備類型為第一類型或第二類型;若所述第一設(shè)備的設(shè)備類型為第一類型,根據(jù)所述第一故障日志攜帶的第一運(yùn)行標(biāo)識(shí),并將所述第一運(yùn)行標(biāo)識(shí)所指示的流水日志添加至所述待分析日志集合;若所述第一設(shè)備的設(shè)備類型為第二類型,將所述第一故障日志添加至所述待分析日志集合;從所述第一故障日志解析得到所述第一分布式業(yè)務(wù)的標(biāo)識(shí)和所述第二設(shè)備的標(biāo)識(shí);根據(jù)所述第一分布式業(yè)務(wù)的標(biāo)識(shí)和所述第二設(shè)備的標(biāo)識(shí)在所述事件信息進(jìn)行檢索,得到所述第二故障日志;判斷所述第二設(shè)備的設(shè)備類型為第一類型或第二類型;若所述第二設(shè)備的設(shè)備類型為第一類型,根據(jù)所述第二故障日志攜帶的第二運(yùn)行標(biāo)識(shí),并將所述第二運(yùn)行標(biāo)識(shí)所指示的流水日志添加至所述待分析日志集合;若所述第二設(shè)備的設(shè)備類型為第二類型,將所述第二故障日志添加至所述待分析日志集合。
14.根據(jù)權(quán)利要求1-5中任意一項(xiàng)所述的方法,其特征在于,所述關(guān)聯(lián)日志包括所述第一設(shè)備在t1~t2期間的流水日志,以及所述第二設(shè)備在t3~t4期間的流水日志,t1為第一故障時(shí)刻與第一預(yù)設(shè)時(shí)間的差值,t2為所述第一故障時(shí)刻與第二預(yù)設(shè)時(shí)間的和,t3為第二故障時(shí)刻與所述第一預(yù)設(shè)時(shí)間的差值,t4為第二故障時(shí)刻與所述第二預(yù)設(shè)時(shí)間的和。15.根據(jù)權(quán)利要求1-5中任意一項(xiàng)所述的方法,其特征在于,所述第二設(shè)備包括與所述第一設(shè)備共同執(zhí)行所述第一分布式業(yè)務(wù)的終端設(shè)備,或者包括分布式系統(tǒng)中在所述故障時(shí)刻的前預(yù)設(shè)時(shí)間內(nèi)在線的終端設(shè)備。16.根據(jù)權(quán)利要求1-5中任意一項(xiàng)所述的方法,其特征在于,所述第一分布式業(yè)務(wù)內(nèi)采用同步調(diào)用方式或異步調(diào)用方式。17.一種故障定位方法,其特征在于,所述方法包括:第一設(shè)備在檢測(cè)到第一分布式業(yè)務(wù)發(fā)生故障時(shí),向服務(wù)器上傳第一故障日志,所述第一故障日志包括事件id、所述第一設(shè)備的標(biāo)識(shí)、關(guān)聯(lián)設(shè)備的標(biāo)識(shí)以及所述第一分布式業(yè)務(wù)的標(biāo)識(shí),所述關(guān)聯(lián)設(shè)備包括第二設(shè)備;第一設(shè)備向所述第二設(shè)備發(fā)送第一通知,所述第一通知攜帶有所述第一分布式業(yè)務(wù)的標(biāo)識(shí);所述第二設(shè)備向所述服務(wù)器上傳第二故障日志,所述第二故障日志包括所述事件id、所述第二設(shè)備的標(biāo)識(shí)以及所述第一分布式業(yè)務(wù)的標(biāo)識(shí)。18.一種故障定位裝置,其特征在于,包括處理器,所述處理器和存儲(chǔ)器耦合,所述存儲(chǔ)器存儲(chǔ)有程序指令,當(dāng)所述存儲(chǔ)器存儲(chǔ)的程序指令被所述處理器執(zhí)行時(shí)使得所述故障定位裝置實(shí)現(xiàn)權(quán)利要求1-16或17中任一項(xiàng)所述的方法。19.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,包括計(jì)算機(jī)指令;當(dāng)所述計(jì)算機(jī)指令在故障定位裝置上運(yùn)行時(shí),使得所述故障定位裝置執(zhí)行如權(quán)利要求1-16或17中任一項(xiàng)所述的方法。

技術(shù)總結(jié)


本申請(qǐng)實(shí)施例提供一種故障定位方法及裝置,涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,可以減少待分析日志的數(shù)量,降低分析難度提高分析結(jié)果準(zhǔn)確率。該方法包括:在檢測(cè)到第一分布式業(yè)務(wù)存在故障時(shí)獲取待分析日志集合;確定故障時(shí)刻;基于故障時(shí)刻從待分析日志集合篩選得到關(guān)聯(lián)日志;從故障日志、關(guān)聯(lián)日志中提取出多個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息,每個(gè)節(jié)點(diǎn)表征一次調(diào)用的發(fā)起端或執(zhí)行端,每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息包括第一分布式業(yè)務(wù)的標(biāo)識(shí)、該節(jié)點(diǎn)的跨度標(biāo)識(shí)以及父跨度標(biāo)識(shí);根據(jù)多個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息構(gòu)建調(diào)用樹;若調(diào)用樹中任意一個(gè)節(jié)點(diǎn)的出度和入度不相同,確定任意一個(gè)節(jié)點(diǎn)為故障節(jié)點(diǎn)。點(diǎn)為故障節(jié)點(diǎn)。點(diǎn)為故障節(jié)點(diǎn)。


技術(shù)研發(fā)人員:

左小川

受保護(hù)的技術(shù)使用者:

榮耀終端有限公司

技術(shù)研發(fā)日:

2022.07.27

技術(shù)公布日:

2022/12/8


文章投稿或轉(zhuǎn)載聲明

本文鏈接:http://m.newhan.cn/zhuanli/patent-1-47544-0.html

來(lái)源:專利查詢檢索下載-實(shí)用文體寫作網(wǎng)版權(quán)所有,轉(zhuǎn)載請(qǐng)保留出處。本站文章發(fā)布于 2022-12-18 19:46:26

發(fā)表評(píng)論

驗(yàn)證碼:
用戶名: 密碼: 匿名發(fā)表
評(píng)論列表 (有 條評(píng)論
2人圍觀
參與討論