本申請(qǐng)涉及數(shù)據(jù)分析技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用程序的日志內(nèi)容的處理方法和裝置。
背景技術(shù):
移動(dòng)場(chǎng)景的應(yīng)用程序(App)排查問(wèn)題主要通過(guò)日志定位,但在實(shí)際中日志排查問(wèn)題存在極大的復(fù)雜性。以手機(jī)為例,手機(jī)應(yīng)用程序的日志分散在移動(dòng)手機(jī)端、服務(wù)端的數(shù)個(gè)異構(gòu)分布式系統(tǒng)上,且每次請(qǐng)求的鏈路很長(zhǎng),移動(dòng)應(yīng)用程序特有的下行消息推送也有別于傳統(tǒng)個(gè)人電腦(Personal Computer,PC)互聯(lián)網(wǎng)時(shí)代的單一的上行請(qǐng)求的鏈路;移動(dòng)場(chǎng)景還要考慮流量和電量的均衡。
為此,需要考慮適用于移動(dòng)場(chǎng)景的日志處理方式。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問(wèn)題之一。
為此,本申請(qǐng)的一個(gè)目的在于提出一種應(yīng)用程序的日志內(nèi)容的處理方法,該方法可以適用于移動(dòng)場(chǎng)景下的日志內(nèi)容處理。
本申請(qǐng)的另一個(gè)目的在于提出一種應(yīng)用程序的日志內(nèi)容的處理裝置。
為達(dá)到上述目的,本申請(qǐng)第一方面實(shí)施例提出的應(yīng)用程序的日志內(nèi)容的處理方法,包括:獲取日志內(nèi)容,所述日志內(nèi)容包括至少一個(gè)可關(guān)聯(lián)事件,每個(gè)可關(guān)聯(lián)事件包括至少一個(gè)事件,每個(gè)事件包括至少一個(gè)日志項(xiàng),每個(gè)事件與應(yīng)用程序中的每條消息對(duì)應(yīng);存儲(chǔ)所述日志內(nèi)容。
本申請(qǐng)第一方面實(shí)施例提出的應(yīng)用程序的日志內(nèi)容的處理方法,日志內(nèi)容采用日志項(xiàng)-事件-可關(guān)聯(lián)事件三層模型,可以對(duì)應(yīng)上行消息,也可以對(duì)應(yīng)下行消息,并且可以對(duì)應(yīng)多條消息,因此適用于移動(dòng)場(chǎng)景。
為達(dá)到上述目的,本申請(qǐng)第二方面實(shí)施例提出的應(yīng)用程序的日志內(nèi)容的處理裝置,包括:日志收集模塊,用于獲取日志內(nèi)容,所述日志內(nèi)容包括至少一個(gè)可關(guān)聯(lián)事件,每個(gè)可關(guān)聯(lián)事件包括至少一個(gè)事件,每個(gè)事件包括至少一個(gè)日志項(xiàng),每個(gè)事件與應(yīng)用程序中的每條消息對(duì)應(yīng);日志存儲(chǔ)模塊,用于存儲(chǔ)所述日志內(nèi)容。
本申請(qǐng)第二方面實(shí)施例提出的應(yīng)用程序的日志內(nèi)容的處理裝置,日志內(nèi)容采用日志項(xiàng)-事件-可關(guān)聯(lián)事件三層模型,可以對(duì)應(yīng)上行消息,也可以對(duì)應(yīng)下行消息,并且可以對(duì)應(yīng)多條消息,因此適用于移動(dòng)場(chǎng)景。
本申請(qǐng)附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過(guò)本申請(qǐng)的實(shí)踐了解到。
附圖說(shuō)明
本申請(qǐng)上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1是本申請(qǐng)一實(shí)施例提出的應(yīng)用程序的日志內(nèi)容的處理方法的流程示意圖;
圖2是本申請(qǐng)實(shí)施例中獲取日志內(nèi)容的示意圖;
圖3是本申請(qǐng)另一實(shí)施例提出的應(yīng)用程序的日志內(nèi)容的處理方法的流程示意圖;
圖4是本申請(qǐng)實(shí)施例中查詢(xún)定位問(wèn)題的示意圖;
圖5是本申請(qǐng)另一實(shí)施例提出的應(yīng)用程序的日志內(nèi)容的處理裝置的結(jié)構(gòu)示意圖;
圖6是本申請(qǐng)另一實(shí)施例提出的應(yīng)用程序的日志內(nèi)容的處理裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面詳細(xì)描述本申請(qǐng)的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類(lèi)似的標(biāo)號(hào)表示相同或類(lèi)似的模塊或具有相同或類(lèi)似功能的模塊。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,僅用于解釋本申請(qǐng),而不能理解為對(duì)本申請(qǐng)的限制。相反,本申請(qǐng)的實(shí)施例包括落入所附加權(quán)利要求書(shū)的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。
圖1是本申請(qǐng)一實(shí)施例提出的應(yīng)用程序的日志內(nèi)容的處理方法的流程示意圖,該方法包括:
S11:獲取日志內(nèi)容,所述日志內(nèi)容包括至少一個(gè)可關(guān)聯(lián)事件,每個(gè)可關(guān)聯(lián)事件包括至少一個(gè)事件,每個(gè)事件包括至少一個(gè)日志項(xiàng),所述應(yīng)用程序中的每條消息對(duì)應(yīng)一個(gè)事件。
現(xiàn)有技術(shù)中,日志內(nèi)容是直接由日志項(xiàng)組成的,每個(gè)日志項(xiàng)對(duì)應(yīng)應(yīng)用程序的一條上行消息。
因此,現(xiàn)有技術(shù)中只能處理上行消息,而移動(dòng)場(chǎng)景通常需要處理下行消息。
另外,現(xiàn)有技術(shù)中只能處理單條消息,而移動(dòng)場(chǎng)景通常需要多條上行消息以及多條下行消息。
為此,本實(shí)施例中,采用日志項(xiàng)-事件-可關(guān)聯(lián)事件三層模型,其中,事件可以用事件ID標(biāo)識(shí),可關(guān)聯(lián)事件可以用可關(guān)聯(lián)事件ID標(biāo)識(shí),一個(gè)事件可以關(guān)聯(lián)到一個(gè)或多個(gè)日志項(xiàng), 一個(gè)可關(guān)聯(lián)事件可以關(guān)聯(lián)到一個(gè)或多個(gè)事件,每個(gè)日志項(xiàng)記錄單條的日志內(nèi)容。
事件對(duì)應(yīng)應(yīng)用程序中的一條消息,該條消息可以是上行消息或者下行消息。以A與B聊天的應(yīng)用程序?yàn)槔?,假設(shè)A向B發(fā)送一條消息,該消息需要首先由A發(fā)送給服務(wù)器,再由服務(wù)器發(fā)給B,則A發(fā)送給服務(wù)器的該消息是一個(gè)事件,服務(wù)器發(fā)送給B的該消息也是一個(gè)事件。
可關(guān)聯(lián)事件可以根據(jù)具體的業(yè)務(wù)需求進(jìn)行設(shè)置,例如,A發(fā)送給服務(wù)器的消息對(duì)應(yīng)的事件是事件_1,服務(wù)器發(fā)送給B的消息對(duì)應(yīng)的事件是事件_2,當(dāng)B向A回復(fù)消息時(shí),假設(shè)此時(shí)B發(fā)送給服務(wù)器的消息對(duì)應(yīng)的事件是事件_3,服務(wù)器發(fā)送給A對(duì)應(yīng)的事件是事件_4,則可以設(shè)置可關(guān)聯(lián)事件_1包括事件_1和事件_2,可關(guān)聯(lián)事件_2包括事件_3和事件_4,或者,也可以設(shè)置可關(guān)聯(lián)事件_1包括事件_1,事件_2,事件_3和事件_4。
每個(gè)日志項(xiàng)可以包括:時(shí)間戳,用戶(hù)ID,內(nèi)容項(xiàng)等內(nèi)容。
現(xiàn)有技術(shù)中,日志內(nèi)容只是從服務(wù)端獲取的,而本實(shí)施例中,不限于服務(wù)端,還可以從客戶(hù)端獲取日志內(nèi)容。
具體的,可以在服務(wù)端和/或客戶(hù)端內(nèi)設(shè)置接口模塊,日志處理設(shè)備可以從接口模塊中獲取服務(wù)端或者客戶(hù)端本地保存的日志內(nèi)容。服務(wù)端和/或客戶(hù)端可以采用自身支持的語(yǔ)言將本地的日志內(nèi)容保存在自身的接口模塊中。例如,服務(wù)端采用Java、C++、python等語(yǔ)言將服務(wù)端的日志內(nèi)容保存在服務(wù)端的接口模塊中,IOS客戶(hù)端采用object c等語(yǔ)言將IOS客戶(hù)端的日志內(nèi)容保存在IOS客戶(hù)端的接口模塊中,android客戶(hù)端采用java等語(yǔ)言將android客戶(hù)端的日志內(nèi)容保存在android客戶(hù)端的接口模塊中。
當(dāng)服務(wù)端和/或客戶(hù)端在自身的日志內(nèi)容保存在接口模塊后,日志處理設(shè)備可以從服務(wù)端和/或客戶(hù)端的接口模塊中獲取對(duì)應(yīng)的日志內(nèi)容。
參見(jiàn)圖2,日志處理設(shè)備21可以采用不同的方式從服務(wù)端22或者客戶(hù)端23獲取日志內(nèi)容。
具體的,從客戶(hù)端獲取日志內(nèi)容可以包括:
向所述客戶(hù)端發(fā)送指令;
接收所述客戶(hù)端發(fā)送的日志內(nèi)容,所述日志內(nèi)容是所述客戶(hù)端在接收到所述指令后發(fā)送的。
當(dāng)客戶(hù)端具體是移動(dòng)終端時(shí),由于在移動(dòng)場(chǎng)景下還需要考慮流量與電量均衡等問(wèn)題,因此,可以在需要獲取客戶(hù)端的日志內(nèi)容時(shí)采用指令觸發(fā)的方式獲取日志內(nèi)容,降低流量和電量開(kāi)銷(xiāo)。
另一方面,從服務(wù)端獲取日志內(nèi)容時(shí),可以采用自動(dòng)收集的方式。自動(dòng)收集的方式是指:日志處理設(shè)備與服務(wù)端建立連接后,服務(wù)端根據(jù)預(yù)設(shè)周期主動(dòng)將自身的日志內(nèi)容發(fā)送 給日志處理設(shè)備。
進(jìn)一步的,通常來(lái)講,對(duì)于一個(gè)應(yīng)用程序,在服務(wù)端存在多個(gè)相關(guān)應(yīng)用程序,在從服務(wù)端獲取日志內(nèi)容時(shí),可以獲取當(dāng)前的應(yīng)用程序的日志內(nèi)容,還可以獲取相關(guān)應(yīng)用程序的日志內(nèi)容??蛇x的,所述事件包括客戶(hù)端與服務(wù)端交互的消息對(duì)應(yīng)的事件,所述交互的消息中攜帶事件ID,且所述事件ID在客戶(hù)端處理時(shí)的位數(shù)小于在服務(wù)端處理時(shí)的位數(shù),以及所述服務(wù)端進(jìn)行位數(shù)映射,以關(guān)聯(lián)同一個(gè)事件的不同位數(shù)的事件ID。
例如,假設(shè)客戶(hù)端向服務(wù)端發(fā)送消息,客戶(hù)端發(fā)送的消息中攜帶事件ID,該事件ID可以具體是8位的通用唯一識(shí)別碼(Universally Unique Identifier,UUID),服務(wù)端的接入層接收到該8位的UUID后,可以進(jìn)行映射,將其映射為16位的UUID,服務(wù)端在后續(xù)基于16位的UUID進(jìn)行處理。具體的映射規(guī)則也可以預(yù)先設(shè)置。
S12:存儲(chǔ)所述日志內(nèi)容。
具體的,日志處理設(shè)備可以包括日志收集模塊和日志存儲(chǔ)模塊,日志收集模塊采用上述方式獲取日志內(nèi)容后,將日志內(nèi)容按照預(yù)設(shè)格式存儲(chǔ)到日志存儲(chǔ)模塊,日志存儲(chǔ)模塊可以具體是云存儲(chǔ)模塊。
例如,按照事件ID,用戶(hù)ID,可關(guān)聯(lián)事件ID等進(jìn)行多個(gè)維度的格式化和匯總,并存儲(chǔ)到云存儲(chǔ)的開(kāi)放結(jié)構(gòu)化數(shù)據(jù)服務(wù)(Open Table Service,OTS)中。
參見(jiàn)圖3,另一實(shí)施例中,該應(yīng)用程序的日志內(nèi)容的處理方法還可以包括:
S13:展示查詢(xún)界面,所述查詢(xún)界面包括:業(yè)務(wù)定制查詢(xún)和直接查詢(xún)。
現(xiàn)有技術(shù)中,只能進(jìn)行直接查詢(xún),例如,用戶(hù)在查詢(xún)界面中輸入要查詢(xún)的用戶(hù)ID,系統(tǒng)查詢(xún)后將該用戶(hù)ID對(duì)應(yīng)的日志項(xiàng)展示給用戶(hù),由于普通用戶(hù)并不能理解日志項(xiàng)的含義,因此需要專(zhuān)業(yè)人員人工分析后才能定位問(wèn)題。
而本實(shí)施例中,參見(jiàn)圖4,不僅可以進(jìn)行直接查詢(xún)41,還可以進(jìn)行業(yè)務(wù)定制查詢(xún)42。
與直接查詢(xún)不同的是,業(yè)務(wù)定制查詢(xún)時(shí),系統(tǒng)展示給用戶(hù)的是對(duì)基礎(chǔ)查詢(xún)得到的日志項(xiàng)進(jìn)行分析,并以可視化形式展示的分析結(jié)果,從而方便用戶(hù)使用。
S14:接收用戶(hù)在所述查詢(xún)界面中輸入的查詢(xún)信息,并根據(jù)所述查詢(xún)信息進(jìn)行基礎(chǔ)查詢(xún)得到基礎(chǔ)查詢(xún)結(jié)果。
例如,用戶(hù)點(diǎn)擊業(yè)務(wù)定制查詢(xún)后,會(huì)展示輸入界面,用戶(hù)可以在輸入界面中輸入要查詢(xún)的信息,要查詢(xún)的信息例如為可關(guān)聯(lián)事件ID,事件ID等,或者,還可以是具體的事件名稱(chēng),例如用戶(hù)A發(fā)送給用戶(hù)B的消息。
參見(jiàn)圖4,不論是業(yè)務(wù)定制查詢(xún),還是直接查詢(xún),都可以調(diào)用底層基礎(chǔ)查詢(xún)應(yīng)用程序接口(Application Programming Interface,API)43,通過(guò)調(diào)用底層基礎(chǔ)查詢(xún)API,可以得到與查詢(xún)信息對(duì)應(yīng)的日志內(nèi)容44,例如,查詢(xún)信息是事件ID時(shí),可以獲取到與該事 件ID關(guān)聯(lián)的各日志項(xiàng)。
S15:當(dāng)用戶(hù)選擇業(yè)務(wù)定制查詢(xún)時(shí),對(duì)所述基礎(chǔ)查詢(xún)結(jié)果進(jìn)行分析,得到分析結(jié)果。
在直接查詢(xún)時(shí),可以將查詢(xún)到的各日志項(xiàng)返回給用戶(hù)。由于普通用戶(hù)難以獲知日志項(xiàng)表明的含義,因此為了定位問(wèn)題,還需要專(zhuān)業(yè)人員的參與。
本實(shí)施例中,可以提供業(yè)務(wù)定制查詢(xún),在業(yè)務(wù)定制查詢(xún)時(shí),日志處理設(shè)備中的日志分析模塊還可以對(duì)查詢(xún)出的日志項(xiàng)進(jìn)行分析,得到分析結(jié)果。
具體的分析規(guī)則可以根據(jù)業(yè)務(wù)的不同而預(yù)先設(shè)置。以A向B發(fā)送聊天信息為例,每個(gè)日志項(xiàng)中可以記錄一條消息的發(fā)送時(shí)間,接收時(shí)間,大小,是否發(fā)送成功等信息,通過(guò)這些信息可以得到分析結(jié)果,例如,可以根據(jù)發(fā)消息過(guò)程中鏈路中的某異常信息直接診斷出是否是接入服務(wù)器故障。
S16:以可視化形式展示所述分析結(jié)果。
其中,可視化形式是指對(duì)于用戶(hù)是直觀可讀的,以A向B發(fā)送消息為例,可視化的分析結(jié)果可以包括:每條消息的發(fā)送情況,接收情況,讀狀態(tài)等詳細(xì)信息。
可視化形式具體包括但不限于:曲線形式,圖形形式等。
通過(guò)展示的分析結(jié)果,普通用戶(hù)也可以直觀的得到檢測(cè)結(jié)果,并且分析結(jié)果還可以用于分析用戶(hù)行為等。
當(dāng)然,可以理解的是,上述的可視化結(jié)果只是一種示例,用戶(hù)可以根據(jù)實(shí)際的業(yè)務(wù)預(yù)先設(shè)置可視化的分析結(jié)果包含的內(nèi)容。
本實(shí)施例中,日志內(nèi)容采用日志項(xiàng)-事件-可關(guān)聯(lián)事件三層模型,可以對(duì)應(yīng)上行消息,也可以對(duì)應(yīng)下行消息,并且可以對(duì)應(yīng)多條消息,因此適用于移動(dòng)場(chǎng)景。另外,本實(shí)施例不僅可以在服務(wù)端獲取日志內(nèi)容,還可以在移動(dòng)端獲取日志內(nèi)容,從而豐富獲取的日志內(nèi)容,提高問(wèn)題定位準(zhǔn)確度;以及在獲取移動(dòng)端的日志內(nèi)容時(shí)采用觸發(fā)方式,以降低移動(dòng)端的流量和電量開(kāi)銷(xiāo);以及,在移動(dòng)端采用位數(shù)較小的事件ID,也可以降低流量開(kāi)銷(xiāo)。另外,本實(shí)施例可以實(shí)現(xiàn)業(yè)務(wù)定制查詢(xún),業(yè)務(wù)定制查詢(xún)時(shí)可以向用戶(hù)展示可視化結(jié)果,提高可讀性,提升用戶(hù)體驗(yàn)。因此,本實(shí)施例非常適用于移動(dòng)應(yīng)用程序的日志內(nèi)容的處理,在分析時(shí)不需要人為參與,可以提高分析效率,并且具有可擴(kuò)展性和易用性。
圖5是本申請(qǐng)另一實(shí)施例提出的應(yīng)用程序的日志內(nèi)容的處理裝置的結(jié)構(gòu)示意圖,該裝置可以具體是指方法實(shí)施例中的日志處理設(shè)備,該裝置50包括:日志收集模塊51和日志存儲(chǔ)模塊52。
日志收集模塊51,用于獲取日志內(nèi)容,所述日志內(nèi)容包括至少一個(gè)可關(guān)聯(lián)事件,每個(gè)可關(guān)聯(lián)事件包括至少一個(gè)事件,每個(gè)事件包括至少一個(gè)日志項(xiàng),每個(gè)事件與應(yīng)用程序中的每條消息對(duì)應(yīng);
現(xiàn)有技術(shù)中,日志內(nèi)容是直接由日志項(xiàng)組成的,每個(gè)日志項(xiàng)對(duì)應(yīng)應(yīng)用程序的一條上行消息。
因此,現(xiàn)有技術(shù)中只能處理上行消息,而移動(dòng)場(chǎng)景通常需要處理下行消息。
另外,現(xiàn)有技術(shù)中只能處理單條消息,而移動(dòng)場(chǎng)景通常需要多條上行消息以及多條下行消息。
為此,本實(shí)施例中,采用日志項(xiàng)-事件-可關(guān)聯(lián)事件三層模型,其中,事件可以用事件ID標(biāo)識(shí),可關(guān)聯(lián)事件可以用可關(guān)聯(lián)事件ID標(biāo)識(shí),一個(gè)事件可以關(guān)聯(lián)到一個(gè)或多個(gè)日志項(xiàng),一個(gè)可關(guān)聯(lián)事件可以關(guān)聯(lián)到一個(gè)或多個(gè)事件,每個(gè)日志項(xiàng)記錄單條的日志內(nèi)容。
事件對(duì)應(yīng)應(yīng)用程序中的一條消息,該條消息可以是上行消息或者下行消息。以A與B聊天的應(yīng)用程序?yàn)槔?,假設(shè)A向B發(fā)送一條消息,該消息需要首先由A發(fā)送給服務(wù)器,再由服務(wù)器發(fā)給B,則A發(fā)送給服務(wù)器的該消息是一個(gè)事件,服務(wù)器發(fā)送給B的該消息也是一個(gè)事件。
可關(guān)聯(lián)事件可以根據(jù)具體的業(yè)務(wù)需求進(jìn)行設(shè)置,例如,A發(fā)送給服務(wù)器的消息對(duì)應(yīng)的事件是事件_1,服務(wù)器發(fā)送給B的消息對(duì)應(yīng)的事件是事件_2,當(dāng)B向A回復(fù)消息時(shí),假設(shè)此時(shí)B發(fā)送給服務(wù)器的消息對(duì)應(yīng)的事件是事件_3,服務(wù)器發(fā)送給A對(duì)應(yīng)的事件是事件_4,則可以設(shè)置可關(guān)聯(lián)事件_1包括事件_1和事件_2,可關(guān)聯(lián)事件_2包括事件_3和事件_4,或者,也可以設(shè)置可關(guān)聯(lián)事件_1包括事件_1,事件_2,事件_3和事件_4。
每個(gè)日志項(xiàng)可以包括:時(shí)間戳,用戶(hù)ID,內(nèi)容項(xiàng)等內(nèi)容。
現(xiàn)有技術(shù)中,日志內(nèi)容只是從服務(wù)端獲取的,而本實(shí)施例中,不限于服務(wù)端,還可以從客戶(hù)端獲取日志內(nèi)容。
可選的,所述日志收集模塊51具體用于:
從如下項(xiàng)中的至少一項(xiàng)中獲取日志內(nèi)容:客戶(hù)端,服務(wù)端。
具體的,可以在服務(wù)端和/或客戶(hù)端內(nèi)設(shè)置接口模塊,日志處理設(shè)備可以從接口模塊中獲取服務(wù)端或者客戶(hù)端本地保存的日志內(nèi)容。服務(wù)端和/或客戶(hù)端可以采用自身支持的語(yǔ)言將本地的日志內(nèi)容保存在自身的接口模塊中。例如,服務(wù)端采用Java、C++、python等語(yǔ)言將服務(wù)端的日志內(nèi)容保存在服務(wù)端的接口模塊中,IOS客戶(hù)端采用object c等語(yǔ)言將IOS客戶(hù)端的日志內(nèi)容保存在IOS客戶(hù)端的接口模塊中,android客戶(hù)端采用java等語(yǔ)言將android客戶(hù)端的日志內(nèi)容保存在android客戶(hù)端的接口模塊中。
當(dāng)服務(wù)端和/或客戶(hù)端在自身的日志內(nèi)容保存在接口模塊后,日志處理設(shè)備可以從服務(wù)端和/或客戶(hù)端的接口模塊中獲取對(duì)應(yīng)的日志內(nèi)容。
參見(jiàn)圖2,日志處理設(shè)備21可以采用不同的方式從服務(wù)端22或者客戶(hù)端23獲取日志內(nèi)容。
可選的,所述日志收集模塊51用于從客戶(hù)端獲取日志內(nèi)容,包括:
向所述客戶(hù)端發(fā)送指令;
接收所述客戶(hù)端發(fā)送的日志內(nèi)容,所述日志內(nèi)容是所述客戶(hù)端在接收到所述指令后發(fā)送的。
當(dāng)客戶(hù)端具體是移動(dòng)終端時(shí),由于在移動(dòng)場(chǎng)景下還需要考慮流量與電量均衡等問(wèn)題,因此,可以在需要獲取客戶(hù)端的日志內(nèi)容時(shí)采用指令觸發(fā)的方式獲取日志內(nèi)容,降低流量和電量開(kāi)銷(xiāo)。
另一方面,從服務(wù)端獲取日志內(nèi)容時(shí),可以采用自動(dòng)收集的方式。自動(dòng)收集的方式是指:日志處理設(shè)備與服務(wù)端建立連接后,服務(wù)端根據(jù)預(yù)設(shè)周期主動(dòng)將自身的日志內(nèi)容發(fā)送給日志處理設(shè)備。
進(jìn)一步的,通常來(lái)講,對(duì)于一個(gè)應(yīng)用程序,在服務(wù)端存在多個(gè)相關(guān)應(yīng)用程序,在從服務(wù)端獲取日志內(nèi)容時(shí),可以獲取當(dāng)前的應(yīng)用程序的日志內(nèi)容,還可以獲取相關(guān)應(yīng)用程序的日志內(nèi)容。
可選的,所述事件包括客戶(hù)端與服務(wù)端交互的消息對(duì)應(yīng)的事件,所述交互的消息中攜帶事件ID,且所述事件ID在客戶(hù)端處理時(shí)的位數(shù)小于在服務(wù)端處理時(shí)的位數(shù),以及所述服務(wù)端進(jìn)行位數(shù)映射,以關(guān)聯(lián)同一個(gè)事件的不同位數(shù)的事件ID。
例如,假設(shè)客戶(hù)端向服務(wù)端發(fā)送消息,客戶(hù)端發(fā)送的消息中攜帶事件ID,該事件ID可以具體是8位的通用唯一識(shí)別碼(Universally Unique Identifier,UUID),服務(wù)端的接入層接收到該8位的UUID后,可以進(jìn)行映射,將其映射為16位的UUID,服務(wù)端在后續(xù)基于16位的UUID進(jìn)行處理。具體的映射規(guī)則也可以預(yù)先設(shè)置。
日志存儲(chǔ)模塊52,用于存儲(chǔ)所述日志內(nèi)容。
日志收集模塊采用上述方式獲取日志內(nèi)容后,將日志內(nèi)容按照預(yù)設(shè)格式存儲(chǔ)到日志存儲(chǔ)模塊,日志存儲(chǔ)模塊可以具體是云存儲(chǔ)模塊。
例如,按照事件ID,用戶(hù)ID,可關(guān)聯(lián)事件ID等進(jìn)行多個(gè)維度的格式化和匯總,并存儲(chǔ)到云存儲(chǔ)的開(kāi)放結(jié)構(gòu)化數(shù)據(jù)服務(wù)(Open Table Service,OTS)中。
參見(jiàn)圖6,該裝置50還包括:
輸入模塊53,用于展示查詢(xún)界面,所述查詢(xún)界面包括:業(yè)務(wù)定制查詢(xún)和直接查詢(xún);
現(xiàn)有技術(shù)中,只能進(jìn)行直接查詢(xún),例如,用戶(hù)在查詢(xún)界面中輸入要查詢(xún)的用戶(hù)ID,系統(tǒng)查詢(xún)后將該用戶(hù)ID對(duì)應(yīng)的日志項(xiàng)展示給用戶(hù),由于普通用戶(hù)并不能理解日志項(xiàng)的含義,因此需要專(zhuān)業(yè)人員人工分析后才能定位問(wèn)題。
而本實(shí)施例中,參見(jiàn)圖4,不僅可以進(jìn)行直接查詢(xún)41,還可以進(jìn)行業(yè)務(wù)定制查詢(xún)42。
與直接查詢(xún)不同的是,業(yè)務(wù)定制查詢(xún)時(shí),系統(tǒng)展示給用戶(hù)的是對(duì)基礎(chǔ)查詢(xún)得到的日志 項(xiàng)進(jìn)行分析,并以可視化形式展示的分析結(jié)果,從而方便用戶(hù)使用。
查詢(xún)模塊54,用于接收用戶(hù)在所述查詢(xún)界面中輸入的查詢(xún)信息,并根據(jù)所述查詢(xún)信息進(jìn)行基礎(chǔ)查詢(xún)得到基礎(chǔ)查詢(xún)結(jié)果;
例如,用戶(hù)點(diǎn)擊業(yè)務(wù)定制查詢(xún)后,會(huì)展示輸入界面,用戶(hù)可以在輸入界面中輸入要查詢(xún)的信息,要查詢(xún)的信息例如為可關(guān)聯(lián)事件ID,事件ID等,或者,還可以是具體的事件名稱(chēng),例如用戶(hù)A發(fā)送給用戶(hù)B的消息。
參見(jiàn)圖4,不論是業(yè)務(wù)定制查詢(xún),還是直接查詢(xún),都可以調(diào)用底層基礎(chǔ)查詢(xún)應(yīng)用程序接口(Application Programming Interface,API)43,通過(guò)調(diào)用底層基礎(chǔ)查詢(xún)API,可以得到與查詢(xún)信息對(duì)應(yīng)的日志內(nèi)容44,例如,查詢(xún)信息是事件ID時(shí),可以獲取到與該事件ID關(guān)聯(lián)的各日志項(xiàng)。
日志分析模塊55,用于當(dāng)用戶(hù)選擇業(yè)務(wù)定制查詢(xún)時(shí),對(duì)所述基礎(chǔ)查詢(xún)結(jié)果進(jìn)行分析,得到分析結(jié)果;
在直接查詢(xún)時(shí),可以將查詢(xún)到的各日志項(xiàng)返回給用戶(hù)。由于普通用戶(hù)難以獲知日志項(xiàng)表明的含義,因此為了定位問(wèn)題,還需要專(zhuān)業(yè)人員的參與。
本實(shí)施例中,可以提供業(yè)務(wù)定制查詢(xún),在業(yè)務(wù)定制查詢(xún)時(shí),日志處理設(shè)備中的日志分析模塊還可以對(duì)查詢(xún)出的日志項(xiàng)進(jìn)行分析,得到分析結(jié)果。
具體的分析規(guī)則可以根據(jù)業(yè)務(wù)的不同而預(yù)先設(shè)置。以A向B發(fā)送聊天信息為例,每個(gè)日志項(xiàng)中可以記錄一條消息的發(fā)送時(shí)間,接收時(shí)間,大小,是否發(fā)送成功等信息,通過(guò)這些信息可以得到分析結(jié)果,例如,可以根據(jù)發(fā)消息過(guò)程中鏈路中的某異常信息直接診斷出是否是接入服務(wù)器故障。
展示模塊56,用于以可視化形式展示所述分析結(jié)果。
其中,可視化形式是指對(duì)于用戶(hù)是直觀可讀的,以A向B發(fā)送消息為例,可視化的分析結(jié)果可以包括:每條消息的發(fā)送情況,接收情況,讀狀態(tài)等詳細(xì)信息。
可視化形式具體包括但不限于:曲線形式,圖形形式等。
通過(guò)展示的分析結(jié)果,普通用戶(hù)也可以直觀的得到檢測(cè)結(jié)果,并且分析結(jié)果還可以用于分析用戶(hù)行為等。
當(dāng)然,可以理解的是,上述的可視化結(jié)果只是一種示例,用戶(hù)可以根據(jù)實(shí)際的業(yè)務(wù)預(yù)先設(shè)置可視化的分析結(jié)果包含的內(nèi)容。
本實(shí)施例中,日志內(nèi)容采用日志項(xiàng)-事件-可關(guān)聯(lián)事件三層模型,可以對(duì)應(yīng)上行消息,也可以對(duì)應(yīng)下行消息,并且可以對(duì)應(yīng)多條消息,因此適用于移動(dòng)場(chǎng)景。另外,本實(shí)施例不僅可以在服務(wù)端獲取日志內(nèi)容,還可以在移動(dòng)端獲取日志內(nèi)容,從而豐富獲取的日志內(nèi)容,提高問(wèn)題定位準(zhǔn)確度;以及在獲取移動(dòng)端的日志內(nèi)容時(shí)采用觸發(fā)方式,以降低移動(dòng)端的流 量和電量開(kāi)銷(xiāo);以及,在移動(dòng)端采用位數(shù)較小的事件ID,也可以降低流量開(kāi)銷(xiāo)。另外,本實(shí)施例可以實(shí)現(xiàn)業(yè)務(wù)定制查詢(xún),業(yè)務(wù)定制查詢(xún)時(shí)可以向用戶(hù)展示可視化結(jié)果,提高可讀性,提升用戶(hù)體驗(yàn)。因此,本實(shí)施例非常適用于移動(dòng)應(yīng)用程序的日志內(nèi)容的分析,可以提高分析效率,并且具有可擴(kuò)展性和易用性。
需要說(shuō)明的是,在本申請(qǐng)的描述中,術(shù)語(yǔ)“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性。此外,在本申請(qǐng)的描述中,除非另有說(shuō)明,“多個(gè)”的含義是指至少兩個(gè)。
流程圖中或在此以其他方式描述的任何過(guò)程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過(guò)程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本申請(qǐng)的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來(lái)執(zhí)行功能,這應(yīng)被本申請(qǐng)的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
應(yīng)當(dāng)理解,本申請(qǐng)的各部分可以用硬件、軟件、固件或它們的組合來(lái)實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來(lái)實(shí)現(xiàn)。例如,如果用硬件來(lái)實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來(lái)實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門(mén)電路的離散邏輯電路,具有合適的組合邏輯門(mén)電路的專(zhuān)用集成電路,可編程門(mén)陣列(PGA),現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)等。
本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
此外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。
上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。
在本說(shuō)明書(shū)的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本申請(qǐng)的至少一個(gè)實(shí)施例或示例中。在本說(shuō)明書(shū)中,對(duì)上述術(shù)語(yǔ)的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
盡管上面已經(jīng)示出和描述了本申請(qǐng)的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本申請(qǐng)的限制,本領(lǐng)域的普通技術(shù)人員在本申請(qǐng)的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。