本發(fā)明涉及云計算領(lǐng)域,具體而言,涉及一種日志內(nèi)容的顯示方法及裝置。
背景技術(shù):
云計算管理平臺openstack是基礎(chǔ)設(shè)施即服務(wù)iaas的云計算解決方案,以它的完全開源、易拓展而得到業(yè)界越來越多的關(guān)注。
由于openstack是多節(jié)點,多組件協(xié)作,當(dāng)openstack出現(xiàn)操作失敗時,通常只能通過命令的顯示結(jié)果及日志來定位失敗的原因;而openstack的日志是分節(jié)點分組件記錄,并且當(dāng)達(dá)到一定量時會壓縮為gz文件存檔,因此當(dāng)openstack出現(xiàn)操作失敗的時候,需要有豐富的專業(yè)知識和熟練的linux使用技巧,才能從跨物理節(jié)點的,分散雜亂的日志中查找到操作失敗的可能原因。
以相對簡單的虛擬機(jī)部署失敗原因查找為例,通常的做法是:用novashow命令根據(jù)虛擬機(jī)id查看虛擬機(jī)所在計算節(jié)點的名稱、用novahypervisor-list和novahypervisor-show命令查找相應(yīng)計算節(jié)點的ip,如果novashow命令顯示虛擬機(jī)所在計算節(jié)點不空,則ssh到相應(yīng)計算節(jié)點上,根據(jù)虛擬機(jī)id在nova-compute.log中查找日志;如果nova-compute.log中顯示與libvirt有關(guān),則使用novashow查找虛擬機(jī)的libvirtinstancename,并使用virsh查看和在libvirt.log中進(jìn)行查詢,如果novashow命令顯示虛擬機(jī)所在計算節(jié)點為空,則在控制節(jié)點nova-scheduler.log中查找日志,如果是cell環(huán)境,需要分別到apicell(頂層cell)和各子cell上查找,如果novashow命令顯示結(jié)果為空,則到控制節(jié)點上nova-api.log和nova-conductor.log中查找日志
申請人發(fā)現(xiàn),相關(guān)技術(shù)在查找日志時存在以下缺陷:需要根據(jù)openstack命令顯示結(jié)果來決定去哪個節(jié)點哪個日志文、件中查找,這需要有較豐富的專業(yè)知識、需要經(jīng)過多次openstack命令與日志查找才能最終得到結(jié)果、在日志文件中查找時,常用的tail、grep等linux命令只能進(jìn)行、簡單提取和篩選,通常要加入很多的人眼判斷、當(dāng)一個操作失敗的結(jié)果,可能是底層或其它組件的原因?qū)е聲r,日志中不一定會直接反映這個結(jié)果,需要通過反復(fù)查詢比對同時段的各組件日志來發(fā)現(xiàn)可能的失敗原因、當(dāng)節(jié)點數(shù)較多,或日志文件可能已經(jīng)壓縮為gz文件存檔時,查找的工作量將大大增加
針對相關(guān)技術(shù)在云計算管理平臺出現(xiàn)錯誤時,查找錯誤原因工作量大而導(dǎo)致效率低的技術(shù)問題,目前尚未發(fā)現(xiàn)有效的解決方法。
技術(shù)實現(xiàn)要素:
本發(fā)明提供了一種日志內(nèi)容的顯示方法及裝置,以至少解決相關(guān)技術(shù)中在云計算管理平臺的日志文件中查找錯誤原因效率低的問題。
根據(jù)本發(fā)明的一個方面,提供了一種日志內(nèi)容的顯示方法,包括:獲取用于標(biāo)識云計算管理平臺上各個組件的狀態(tài)的狀態(tài)信息并生成與所述狀態(tài)信息對應(yīng)的日志文件追溯路徑;在所述云計算管理平臺出現(xiàn)錯誤事件時,依據(jù)預(yù)設(shè)規(guī)則搜索與所述錯誤事件相關(guān)聯(lián)的日志文件;將所述相關(guān)聯(lián)的日志文件中表征所述錯誤事件的日志內(nèi)容進(jìn)行顯示。
進(jìn)一步地,所述依據(jù)預(yù)設(shè)規(guī)則搜索與所述錯誤事件相關(guān)聯(lián)的日志文件包括:解析所述錯誤事件得到發(fā)生所述錯誤事件的組件的類型,以及所述錯誤事件的類型,其中,所述云計算管理平臺的所述各個組件的類型包括以下至少之一:控制節(jié)點、計算節(jié)點、網(wǎng)絡(luò)、存儲設(shè)備,所述錯誤事件的類型包括以下至少之一:服務(wù)失敗、組件故障;搜索與所述組件的類型相關(guān)聯(lián)的組件的日志文件,以及搜索與所述錯誤事件的類型相關(guān)聯(lián)的組件的日志文件。
進(jìn)一步地,所述依據(jù)預(yù)設(shè)規(guī)則搜索與所述錯誤事件相關(guān)聯(lián)的日志文件包括:獲取發(fā)生所述錯誤事件時所述云計算管理平臺的系統(tǒng)時間;搜索時間戳與所述系統(tǒng)時間相同的指定日志文件,其中,所述時間戳為所述云計算管理平臺寫入日志文件的時間;將所述指定日志文件中包含預(yù)定錯誤關(guān)鍵字的目標(biāo)日志文件確定為與所述錯誤事件相關(guān)聯(lián)的日志文件。
進(jìn)一步地,在依據(jù)預(yù)設(shè)規(guī)則搜索與所述錯誤事件相關(guān)聯(lián)的日志文件之前,所述方法還包括:設(shè)置所述云計算管理平臺上多個組件之間的關(guān)聯(lián)規(guī)則,和/或,設(shè)置所述云計算管理平臺上多個錯誤事件分別與組件之間的關(guān)聯(lián)規(guī)則,其中,所述預(yù)設(shè)規(guī)則包括所述多個組件之間的關(guān)聯(lián)規(guī)則和/或所述多個錯誤事件分別與組件之間的關(guān)聯(lián)規(guī)則。
進(jìn)一步地,所述將所述相關(guān)聯(lián)的日志文件中表征所述錯誤事件的日志內(nèi)容進(jìn)行顯示包括:解析所述相關(guān)聯(lián)的日志文件得到包括所述錯誤事件的錯誤原因和對應(yīng)解決方案的日志內(nèi)容,并將包括所述錯誤原因和對應(yīng)解決方案的所述日志內(nèi)容進(jìn)行顯示;和/或?qū)⑺鱿嚓P(guān)聯(lián)的日志文件中表征所述錯誤事件的日志內(nèi)容進(jìn)行標(biāo)注后進(jìn)行顯示。
根據(jù)本發(fā)明的另一方面,提供了一種日志內(nèi)容的顯示裝置,包括:獲取模塊,用于獲取用于標(biāo)識云計算管理平臺上各個組件的狀態(tài)的狀態(tài)信息并生成與所述狀態(tài)信息對應(yīng)的日志文件追溯路徑;搜索模塊,用于在所述云計算管理平臺出現(xiàn)錯誤事件時,依據(jù)預(yù)設(shè)規(guī)則搜索與所述錯誤事件相關(guān)聯(lián)的日志文件;顯示模塊,用于將所述相關(guān)聯(lián)的日志文件中表征所述錯誤事件的日志內(nèi)容進(jìn)行顯示。
進(jìn)一步地,所述搜索模塊包括:解析單元,用于解析所述錯誤事件得到發(fā)生所述錯誤事件的組件的類型,以及所述錯誤事件的類型,其中,所述云計算管理平臺的所述各個組件的類型包括以下至少之一:控制節(jié)點、計算節(jié)點、網(wǎng)絡(luò)、存儲設(shè)備,所述錯誤事件的類型包括以下至少之一:服務(wù)失敗、組件故障;第一搜索單元,用于搜索與所述組 件的類型相關(guān)聯(lián)的組件的日志文件,以及搜索與所述錯誤事件的類型相關(guān)聯(lián)的組件的日志文件。
進(jìn)一步地,所述搜索模塊包括:獲取單元,用于獲取發(fā)生所述錯誤事件時所述云計算管理平臺的系統(tǒng)時間;第二搜索單元,用于搜索時間戳與所述系統(tǒng)時間相同的指定日志文件,其中,所述時間戳為所述云計算管理平臺寫入日志文件的時間;確定單元,用于將所述指定日志文件中包含預(yù)定錯誤關(guān)鍵字的目標(biāo)日志文件確定為與所述錯誤事件相關(guān)聯(lián)的日志文件。
進(jìn)一步地,所述裝置還包括:設(shè)置模塊,用于在依據(jù)預(yù)設(shè)規(guī)則搜索與所述錯誤事件相關(guān)聯(lián)的日志文件之前,設(shè)置所述云計算管理平臺上多個組件之間的關(guān)聯(lián)規(guī)則,和/或,設(shè)置所述云計算管理平臺上多個錯誤事件分別與組件之間的關(guān)聯(lián)規(guī)則,其中,所述預(yù)設(shè)規(guī)則包括所述多個組件之間的關(guān)聯(lián)規(guī)則和/或所述多個錯誤事件分別與組件之間的關(guān)聯(lián)規(guī)則。
進(jìn)一步地,所述顯示模塊包括:第一顯示單元,用于解析所述相關(guān)聯(lián)的日志文件得到包括所述錯誤事件的錯誤原因和對應(yīng)解決方案的日志內(nèi)容,并將包括所述錯誤原因和對應(yīng)解決方案的所述日志內(nèi)容進(jìn)行顯示;和/或第二顯示單元,用于將所述相關(guān)聯(lián)的日志文件中表征所述錯誤事件的日志內(nèi)容進(jìn)行標(biāo)注后進(jìn)行顯示。
通過本發(fā)明,采用獲取用于標(biāo)識云計算管理平臺上各個組件的狀態(tài)的狀態(tài)信息并生成與所述狀態(tài)信息對應(yīng)的日志文件追溯路徑,在所述云計算管理平臺出現(xiàn)錯誤事件時,依據(jù)預(yù)設(shè)規(guī)則搜索與所述錯誤事件相關(guān)聯(lián)的日志文件,然后將所述相關(guān)聯(lián)的日志文件中表征所述錯誤事件的日志內(nèi)容進(jìn)行顯示,解決了相關(guān)技術(shù)中在云計算管理平臺的日志文件中查找錯誤原因效率低的問題,實現(xiàn)了錯誤事件與日志文件的關(guān)聯(lián),進(jìn)而提高了在云計算管理平臺出現(xiàn)錯誤時查找錯誤原因的效率。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示方法的流程圖;
圖2是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示裝置的結(jié)構(gòu)框圖;
圖3是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示裝置的可選結(jié)構(gòu)框圖一;
圖4是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示裝置的可選結(jié)構(gòu)框圖二;
圖5是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示裝置的可選結(jié)構(gòu)框圖三;
圖6是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示裝置的可選結(jié)構(gòu)框圖四;
圖7是根據(jù)本發(fā)明可選實施例的openstack多節(jié)點部署示意圖;
圖8是根據(jù)本發(fā)明可選實施例的模塊交互示意圖;
圖9是根據(jù)本發(fā)明可選實施例的檢測流程圖;
圖10是根據(jù)本發(fā)明可選實施例的日志分析模塊關(guān)聯(lián)分析示意圖。
具體實施方式
下文中將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。
在本實施例中提供了一種日志內(nèi)容的顯示方法,圖1是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示方法的流程圖,如圖1所示,該流程包括如下步驟:
步驟s102,獲取用于標(biāo)識云計算管理平臺上各個組件的狀態(tài)的狀態(tài)信息并生成與狀態(tài)信息對應(yīng)的日志文件追溯路徑;
在本實施例中,云計算管理平臺openstack通過一個或多個節(jié)點進(jìn)行部署,而節(jié)點又包括控制節(jié)點和計算節(jié)點,控制節(jié)點還可以加入ha控制,這樣控制節(jié)點又分為活動節(jié)點(主用節(jié)點)和備用節(jié)點,節(jié)點之間通過網(wǎng)絡(luò)進(jìn)行通信連接,云計算管理平臺的各類信息通過存儲設(shè)備進(jìn)行保存,這些都是屬于云計算管理平臺的組件,各個組件的活動狀態(tài),包括創(chuàng)建、結(jié)束、組件之間的關(guān)聯(lián)事件等,如組件、網(wǎng)絡(luò)、存儲設(shè)備的磁陣連接等狀態(tài),都會產(chǎn)生對應(yīng)的狀態(tài)信息,生成日志文件,這些日志文件可以保存在各個組件本地,也可以上傳到關(guān)聯(lián)的設(shè)備。
獲取云計算管理平臺上各個組件生成或者已經(jīng)保存的日志文件,由于組件的狀態(tài)信息與其他組件或者組件自身的狀態(tài)關(guān)聯(lián),還可以根據(jù)組件的狀態(tài)信息得到日志文件的追溯路徑,該追溯路徑表示從該組件的狀態(tài)信息到相關(guān)聯(lián)的其他組件或者組件內(nèi)的其他結(jié)構(gòu)的關(guān)聯(lián)路徑。
步驟s104,在云計算管理平臺出現(xiàn)錯誤事件時,依據(jù)預(yù)設(shè)規(guī)則搜索與錯誤事件相關(guān)聯(lián)的日志文件;
可選的,在云計算管理平臺的組件出現(xiàn)錯誤事件時,如組件故障、連接超時等,組件會主動上報錯誤事件或者報警信息,云計算管理平臺也可以按照一定周期主動監(jiān)測各個組件的工作狀態(tài),當(dāng)云計算管理平臺出現(xiàn)錯誤事件時,就需要盡快找到錯誤原因并修復(fù)錯誤故障,以減少故障帶來的問題,提升用戶的使用體驗,本實施例通過依據(jù)預(yù)設(shè)規(guī)則在云計算管理平臺的日志文件中搜索關(guān)聯(lián)日志文件并查找錯誤原因,大大減少了通過 人工分析來得到錯誤事件的錯誤原因的時間,可選的,預(yù)設(shè)規(guī)則包括上述追溯路徑。
步驟s106,將相關(guān)聯(lián)的日志文件中表征錯誤事件的日志內(nèi)容進(jìn)行顯示。
可選的,在搜索到相關(guān)聯(lián)的日志文件后,將日志文件中表征錯誤事件的日志內(nèi)容進(jìn)行顯示,不用顯示全部的日志文件或者重復(fù)的日志內(nèi)容,還可以對日志內(nèi)容進(jìn)行解析,直接生成錯誤原因和解決方案,以使用戶可以在最短的時間找到錯誤的原因。
通過本實施例,采用獲取用于標(biāo)識云計算管理平臺上各個組件的狀態(tài)的狀態(tài)信息并生成與狀態(tài)信息對應(yīng)的日志文件追溯路徑,在云計算管理平臺出現(xiàn)錯誤事件時,依據(jù)預(yù)設(shè)規(guī)則搜索與錯誤事件相關(guān)聯(lián)的日志文件,然后將相關(guān)聯(lián)的日志文件中表征錯誤事件的日志內(nèi)容進(jìn)行顯示,解決了相關(guān)技術(shù)中在云計算管理平臺的日志文件中查找錯誤原因效率低的問題,實現(xiàn)了錯誤事件與日志文件的關(guān)聯(lián),進(jìn)而提高了在云計算管理平臺出現(xiàn)錯誤時查找錯誤原因的效率。
在根據(jù)本實施例的可選實施方式中,依據(jù)預(yù)設(shè)規(guī)則搜索與錯誤事件相關(guān)聯(lián)的日志文件可以通過兩種方式來實現(xiàn),分別是強(qiáng)關(guān)聯(lián)搜索方式和弱關(guān)聯(lián)搜索方式,可以分別適用不同的場景,也可以同時適用,提高搜索的精確度。
其中,可以將強(qiáng)關(guān)聯(lián)的搜索方式作為優(yōu)選的搜索方式,包括:
s11,解析錯誤事件得到發(fā)生錯誤事件的組件的類型,以及錯誤事件的類型,其中,云計算管理平臺的各個組件的類型包括以下至少之一:控制節(jié)點、計算節(jié)點、網(wǎng)絡(luò)、存儲設(shè)備,錯誤事件的類型包括以下至少之一:服務(wù)失敗、組件故障;
可選的,可以解析錯誤事件,得到錯誤事件的類型和發(fā)生錯誤事件的組件類型,即組件對象的類型,具體的,根據(jù)錯誤事件中出錯對象關(guān)鍵字進(jìn)行檢測,首先以強(qiáng)關(guān)聯(lián)的方式,判斷組件對象的類型,如判斷是何種組件,如控制節(jié)點、計算節(jié)點、網(wǎng)絡(luò)、存儲設(shè)備,在解析到組件類型后,還可以進(jìn)行進(jìn)一步的追溯,如解析計算節(jié)點具體對象,是虛擬機(jī)還是鏡像等,是控制節(jié)點的活動節(jié)點還是備用節(jié)點,同時還可以解析錯誤事件的類型,如服務(wù)失敗,組件故障等。
s12,搜索與組件的類型相關(guān)聯(lián)的組件的日志文件,以及搜索與錯誤事件的類型相關(guān)聯(lián)的組件的日志文件。
在搜索關(guān)聯(lián)的日志文件的過程中,可以搜索與組件的類型相關(guān)聯(lián)的組件的日志文件和與錯誤事件的類型相關(guān)聯(lián)的組件的日志文件,進(jìn)行逐級關(guān)聯(lián)查找,下面通過具體的示例進(jìn)行說明:如果錯誤對象是虛擬機(jī),需要查找所有計算節(jié)點;如錯誤事件提示與底層libvirt有關(guān),則根據(jù)對象id轉(zhuǎn)換成libvirt的instanceid,查詢libvirt和qemu相關(guān)日志;如錯誤事件提示為網(wǎng)絡(luò)接口綁定失敗,則查詢neutronagent狀態(tài),如neutronagent狀態(tài)不正確,則按對應(yīng)的規(guī)則查找neutronagent不正確的可能原因,如此逐級追溯,直到找到最終的可能原因;如果錯誤對象是云硬盤,則在云硬盤的日志文件中判斷是否磁陣返 回的錯誤,如是磁陣返回的錯誤,根據(jù)錯誤碼查詢出錯信息,必要時可以把云硬盤id轉(zhuǎn)換成磁陣上的虛擬盤id,登錄磁陣查詢相關(guān)狀態(tài);如對象是其它類型,同理根據(jù)相應(yīng)的業(yè)務(wù)邏輯進(jìn)行日志追溯。
弱關(guān)聯(lián)的搜索方式作為日志文件搜索方式的一種補(bǔ)充和可選方式,弱關(guān)聯(lián)的搜索方式包括:
s21,獲取發(fā)生錯誤事件時云計算管理平臺的系統(tǒng)時間;
系統(tǒng)時間可以是云計算管理平臺的控制節(jié)點的時間,也可以是組件的系統(tǒng)時間。
s22,搜索時間戳與系統(tǒng)時間相同的指定日志文件,其中,該時間戳為云計算管理平臺寫入日志文件的時間;
可選的,按照與發(fā)生錯誤事件同步的原則,時間戳也可以是該云計算管理平臺創(chuàng)建或者生成日志文件的時間。
s23,將指定日志文件中包含預(yù)定錯誤關(guān)鍵字的目標(biāo)日志文件確定為與錯誤事件相關(guān)聯(lián)的日志文件。
預(yù)定錯誤關(guān)鍵字可以是組件日志文件中的error、fail等字樣,通過時間和預(yù)定的字樣搜索和提取日志文件,然后在提取的日志文件中查找出與失敗原因相關(guān)的日志內(nèi)容。
在根據(jù)本實施例的可選實施方式中,在依據(jù)預(yù)設(shè)規(guī)則搜索與錯誤事件相關(guān)聯(lián)的日志文件之前,方法還包括:設(shè)置云計算管理平臺上多個組件之間的關(guān)聯(lián)規(guī)則,設(shè)置云計算管理平臺上多個錯誤事件分別與組件之間的關(guān)聯(lián)規(guī)則,其中,預(yù)設(shè)規(guī)則包括多個組件之間的關(guān)聯(lián)規(guī)則、多個錯誤事件分別與組件之間的關(guān)聯(lián)規(guī)則。
在本實施例中,配置搜索關(guān)聯(lián)日志文件的關(guān)聯(lián)規(guī)則,包括多個組件之間的關(guān)聯(lián)規(guī)則和錯誤事件與組件之間的關(guān)聯(lián)規(guī)則,通過配置關(guān)聯(lián)規(guī)則,一旦解析到錯誤事件的類型和發(fā)生錯誤事件的組件,就可以按照預(yù)設(shè)的規(guī)則去搜索。具體的管理規(guī)則可以包括:
設(shè)置虛擬機(jī)失敗的錯誤事件到計算節(jié)點的關(guān)聯(lián),涉及虛擬機(jī)的失敗可能需要查詢所有計算節(jié)點;設(shè)置故障與主備倒換有關(guān)的錯誤事件的關(guān)聯(lián),涉及主備倒換有關(guān)的故障需要分別查詢主備節(jié)點日志;設(shè)置openstack各服務(wù)節(jié)點到自身的關(guān)聯(lián),服務(wù)不正常,可能是服務(wù)節(jié)點自身故障的原因;設(shè)置物理機(jī)到物理機(jī)網(wǎng)絡(luò)、cpu、內(nèi)存等的關(guān)聯(lián),涉及物理機(jī)本身的異常,可能是網(wǎng)絡(luò)、cpu、內(nèi)存等失敗;設(shè)置云硬盤相關(guān)的失敗到磁陣業(yè)務(wù)口的關(guān)聯(lián),云硬盤相關(guān)的失敗可能與磁陣業(yè)務(wù)口狀態(tài)有關(guān);設(shè)置系統(tǒng)錯誤到系統(tǒng)殘留的錯誤資源的關(guān)聯(lián),殘留的錯誤資源可能反映出系統(tǒng)某一段時間內(nèi)的不正常,也可能是導(dǎo)致本次操作失敗的原因;設(shè)置組件到配置項的關(guān)聯(lián),組件故障可能與配置文件有關(guān),則進(jìn)行相應(yīng)的配置項檢查;設(shè)置組件到接收命令的關(guān)聯(lián),錯誤事件可能與組件執(zhí)行的openstack命令有關(guān),openstack命令的發(fā)送與openstack狀態(tài)有關(guān),在搜索關(guān)聯(lián)日志文件時,可以按照上述關(guān)聯(lián)順序依次追溯日志文件。
可選的,還可以設(shè)置對分析日志文件的參數(shù)進(jìn)行設(shè)置的預(yù)設(shè)規(guī)則,包括設(shè)置各個組件對象的標(biāo)識,表征錯誤事件的日志文件關(guān)鍵字,最多查詢的日志文件條數(shù),是否查詢歸檔的日志文件,是否只顯示日志的有意義部分等。
在根據(jù)本實施例的可選實施方式中,將相關(guān)聯(lián)的日志文件中表征錯誤事件的日志內(nèi)容進(jìn)行顯示可以通過以下兩種可選的方式實現(xiàn):
方式1,解析相關(guān)聯(lián)的日志文件得到包括錯誤事件的錯誤原因和對應(yīng)解決方案的日志內(nèi)容,并將包括錯誤原因和對應(yīng)解決方案的日志內(nèi)容進(jìn)行顯示;
在通過上述強(qiáng)關(guān)聯(lián)的搜索方式和弱關(guān)聯(lián)的搜索方式搜索到日志文件后,還可以對日志文件進(jìn)行處理后進(jìn)行顯示,具體的過程可以包括:根據(jù)解析規(guī)則解析日志文件,解析規(guī)則包含了事件錯誤的原因和解決方案說明,例如:如果虛擬機(jī)創(chuàng)建失敗的日志內(nèi)容為“novalidhostwasfound”,根據(jù)日志分析得到的錯誤原因為計算節(jié)點服務(wù)不可用,則可以顯示結(jié)果為:“由于計算節(jié)點服務(wù)不可用導(dǎo)致虛擬機(jī)創(chuàng)建失敗”。
方式2,將相關(guān)聯(lián)的日志文件中表征錯誤事件的日志內(nèi)容進(jìn)行標(biāo)注后進(jìn)行顯示。
可選的,如果沒有解析到明確對應(yīng)的錯誤原因,或者預(yù)設(shè)的解析規(guī)則中沒有包括對應(yīng)于錯誤事件的錯誤原因或解決方案??梢灾苯訉θ罩疚募M(jìn)行優(yōu)化顯示,具體包括:判斷每條日志與上一條日志的相似度,如果超過預(yù)設(shè)閾值,如90%,則認(rèn)為是重復(fù)日志,重復(fù)部分只顯示一次,其余部分以“…”替代;日志中如果包含error、fail等字樣,用紅色進(jìn)行標(biāo)注后顯示,表示需要特別關(guān)注,其它如操作步驟、狀態(tài)等以橙色顯示,重復(fù)日志以黃色顯示,表示一般可以忽略;日志的固定格式部分,例如req-id,可以截斷不顯示,只顯示日志有意義的部分,也可以顯示完整的日志,即重復(fù)日志和req-id等日志固定格式部分全部原樣顯示。
在此需要說明的是,在條件適用的場景下,上述方式1和方式2兩種方式也可以結(jié)合使用。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例的方法。
在本實施例中還提供了一種日志內(nèi)容的顯示裝置,該裝置用于實現(xiàn)上述實施例及優(yōu)選實施方式,已經(jīng)進(jìn)行過說明的不再贅述。如以下所使用的,術(shù)語“模塊”可以實現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現(xiàn),但是硬件,或者軟件和硬件的組合的實現(xiàn)也是可能并被構(gòu)想的。
圖2是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示裝置的結(jié)構(gòu)框圖,如圖2所示,該裝置包括:獲取模塊20、搜索模塊22、顯示模塊24,其中,
獲取模塊20,用于獲取用于標(biāo)識云計算管理平臺上各個組件的狀態(tài)的狀態(tài)信息并生成與狀態(tài)信息對應(yīng)的日志文件追溯路徑;
搜索模塊22,用于在云計算管理平臺出現(xiàn)錯誤事件時,依據(jù)預(yù)設(shè)規(guī)則搜索與錯誤事件相關(guān)聯(lián)的日志文件;
顯示模塊24,用于將相關(guān)聯(lián)的日志文件中表征錯誤事件的日志內(nèi)容進(jìn)行顯示。
圖3是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示裝置的可選結(jié)構(gòu)框圖一,如圖3所示,該裝置除包括圖2所示的所有模塊外,搜索模塊22還包括:解析單元30、第一搜索單元32,其中,
解析單元30,用于解析錯誤事件得到發(fā)生錯誤事件的組件的類型,以及錯誤事件的類型,其中,云計算管理平臺的各個組件的類型包括以下至少之一:控制節(jié)點、計算節(jié)點、網(wǎng)絡(luò)、存儲設(shè)備,錯誤事件的類型包括以下至少之一:服務(wù)失敗、組件故障;
第一搜索單元32,用于搜索與組件的類型相關(guān)聯(lián)的組件的日志文件,以及搜索與錯誤事件的類型相關(guān)聯(lián)的組件的日志文件。
圖4是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示裝置的可選結(jié)構(gòu)框圖二,如圖4所示,該裝置除包括圖2所示的所有模塊外,搜索模塊22還包括:獲取單元40、第二搜索單元42、確定單元44,其中,
獲取單元40,用于獲取發(fā)生錯誤事件時云計算管理平臺的系統(tǒng)時間;
第二搜索單元42,用于搜索時間戳與系統(tǒng)時間相同的指定日志文件,其中,時間戳為云計算管理平臺寫入日志文件的時間;
確定單元44,用于將指定日志文件中包含預(yù)定錯誤關(guān)鍵字的目標(biāo)日志文件確定為與錯誤事件相關(guān)聯(lián)的日志文件。
圖5是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示裝置的可選結(jié)構(gòu)框圖三,如圖5所示,該裝置除包括圖2所示的所有模塊外,裝置還包括:設(shè)置模塊50,用于在依據(jù)預(yù)設(shè)規(guī)則搜索與錯誤事件相關(guān)聯(lián)的日志文件之前,設(shè)置云計算管理平臺上多個組件之間的關(guān)聯(lián)規(guī)則,和/或,設(shè)置云計算管理平臺上多個錯誤事件分別與組件之間的關(guān)聯(lián)規(guī)則,其中,預(yù)設(shè)規(guī)則包括多個組件之間的關(guān)聯(lián)規(guī)則和/或多個錯誤事件分別與組件之間的關(guān)聯(lián)規(guī)則。
圖6是根據(jù)本發(fā)明實施例的日志內(nèi)容的顯示裝置的可選結(jié)構(gòu)框圖四,如圖6所示,該裝置除包括圖2所示的所有模塊外,顯示模塊24包括:第一顯示單元60、第二顯示單元62,其中,
第一顯示單元60,用于解析相關(guān)聯(lián)的日志文件得到包括錯誤事件的錯誤原因和對應(yīng)解決方案的日志內(nèi)容,并將包括錯誤原因和對應(yīng)解決方案的日志內(nèi)容進(jìn)行顯示;
第二顯示單元62,用于將相關(guān)聯(lián)的日志文件中表征錯誤事件的日志內(nèi)容進(jìn)行標(biāo)注后進(jìn)行顯示。
在此需要說明的是,第一顯示單元60和第二顯示單元62可以同時設(shè)置在顯示模塊24中,也可以只設(shè)置其中之一在顯示模塊24中。
下面結(jié)合根據(jù)本申請的可選實施例進(jìn)行詳細(xì)說明:
圖7是根據(jù)本發(fā)明可選實施例的openstack多節(jié)點部署示意圖,如圖7所示,openstack多節(jié)點部署,可以包含多個控制節(jié)點,網(wǎng)絡(luò)、存儲等組件分布在各控制節(jié)點上,每個控制節(jié)點都加入ha控制(分為活動節(jié)點和備用節(jié)點),另有多個計算節(jié)點。本可選實施例的裝置的分析入口,為keystone所在節(jié)點ip。
圖8是根據(jù)本發(fā)明可選實施例的模塊交互示意圖,如圖8所示,包括:參數(shù)配置模塊80、狀態(tài)檢測模塊82、日志分析模塊84、日志顯示模塊86,其中參數(shù)配置模塊80是其它所有模塊工作的前置條件,狀態(tài)檢測模塊82的輸出提供給日志分析模塊84作為進(jìn)一步查詢的參考因素,日志分析模塊84的輸出提供給日志顯示模塊86,進(jìn)行優(yōu)化顯示輸出。具體如下:
參數(shù)配置模塊80:用于對日志分析的一些參數(shù)進(jìn)行設(shè)置,包括要查詢的對象關(guān)鍵字,最多查詢的日志條數(shù),是否查詢歸檔的日志文件,是否只顯示日志的有意義部分等;
狀態(tài)檢測模塊82:用于檢測openstack各服務(wù)、網(wǎng)絡(luò)、磁陣連接等各方面的狀態(tài),結(jié)果提供給日志分析模塊,作為日志追溯路徑的參考因素;根據(jù)日志分析模塊的需要,對相關(guān)配置項進(jìn)行檢查,執(zhí)行相應(yīng)的openstack命令等;
日志分析模塊84:內(nèi)置業(yè)務(wù)邏輯關(guān)聯(lián)規(guī)則,用于根據(jù)出錯對象關(guān)鍵字,結(jié)合狀態(tài)檢測結(jié)果,首先以強(qiáng)關(guān)聯(lián)的方式,判斷對象類型(虛擬機(jī)、云硬盤、鏡像,或其它),轉(zhuǎn)換id關(guān)鍵字為各組件對應(yīng)的內(nèi)部id,然后按id關(guān)鍵字,以及相同的請求id,根據(jù)特定的業(yè)務(wù)邏輯進(jìn)行逐級追溯查詢;其次以弱關(guān)聯(lián)的方式,按相同的時間段查詢各組件日志中error、fail等字樣,提取出與失敗原因可能相關(guān)的日志部分。
日志顯示模塊86:內(nèi)置日志內(nèi)容解析規(guī)則,用于如果日志內(nèi)容有相對應(yīng)的解析規(guī)則,則按解析后的錯誤原因和建議解決方案進(jìn)行顯示;否則直接對結(jié)果日志進(jìn)行優(yōu)化顯示,包含fail或error字樣的日志以紅色顯示,其余如操作步驟、狀態(tài)等以橙色顯示,與上一條基本重復(fù)的日志可以壓縮并以黃色顯示,相同部分以“…”代替。
可選的,參數(shù)配置模塊80可以設(shè)置openstackkeystone節(jié)點ip,對象關(guān)鍵字,如openstack操作失敗的對象id,或一次請求的req-id,或一段錯誤信息,或時間點,最多查詢的日志條數(shù),如果失敗剛發(fā)生,條數(shù)可以取少一點,以加快查詢速度,是否查詢歸 檔的日志文件,如果失敗剛發(fā)生,可以不查詢歸檔的日志文件,以加快查詢速度,是否只顯示日志的有意義部分,可以選擇不顯示openstack日志的固定格式部分,例如req-id等,以及以省略號來替代顯示日志的重復(fù)部分,使日志顯示結(jié)果更為人性化。
圖9是根據(jù)本發(fā)明可選實施例的檢測流程圖,如圖9所示,包括:
s901,獲取各組件的endpoint服務(wù)ip;
s902,獲取所有計算節(jié)點ip;
s903,獲取openstack各服務(wù)狀態(tài);
s904,獲取物理機(jī)網(wǎng)絡(luò)、cpu、內(nèi)存等狀態(tài);
s905,獲取磁陣業(yè)務(wù)口狀態(tài);
s906,獲取系統(tǒng)是否有殘留的錯誤資源。
本實施例所述裝置的狀態(tài)檢測模塊82,對openstack整體運行狀態(tài)進(jìn)行檢查,如發(fā)現(xiàn)有異常,可以作為下一步日志查詢路徑的參考因素??蛇x的,狀態(tài)檢測內(nèi)容可以包括:
獲取各組件的endpoint服務(wù)ip,以決定哪個組件到哪個節(jié)點上取日志;
獲取所有計算節(jié)點ip,涉及虛擬機(jī)的失敗可能需要查詢所有計算節(jié)點;
獲取雙機(jī)ha的節(jié)點ip,假如故障與主備倒換有關(guān),需要分別查詢主備節(jié)點日志;
獲取openstack各服務(wù)狀態(tài),假如有服務(wù)不正常,可能是失敗原因之一;
獲取物理機(jī)網(wǎng)絡(luò)、cpu、內(nèi)存等狀態(tài),假如有物理機(jī)本身的異常,可能是失敗原因之一;
獲取磁陣業(yè)務(wù)口狀態(tài),云硬盤相關(guān)的失敗可能與此有關(guān);
獲取系統(tǒng)是否有殘留的錯誤資源,殘留的錯誤資源可能反映出系統(tǒng)某一段時間內(nèi)的不正常,也可能是導(dǎo)致本次操作失敗的原因之一;
檢查配置項是否正確,如日志分析結(jié)果可能與配置文件有關(guān),則進(jìn)行相應(yīng)的配置項檢查;
執(zhí)行相應(yīng)的openstack命令,如日志分析結(jié)果可能與某些openstack狀態(tài)有關(guān),執(zhí)行相應(yīng)的openstack命令并獲取結(jié)果。
圖10是根據(jù)本發(fā)明可選實施例的日志分析模塊關(guān)聯(lián)分析示意圖,如圖10所示,本實施例的日志分析模塊84,內(nèi)置業(yè)務(wù)邏輯關(guān)聯(lián)規(guī)則,關(guān)聯(lián)規(guī)則包含了對象與對象、錯誤與對象之間的關(guān)聯(lián)關(guān)系,例如:虛擬機(jī)與libvirt可能有關(guān),虛擬機(jī)與nova-compute服務(wù)狀態(tài)可能有關(guān),虛擬機(jī)與網(wǎng)絡(luò)可能有關(guān),虛擬機(jī)與存儲可能有關(guān);連接拒絕與服務(wù)狀態(tài) 可能有關(guān),連接拒絕與數(shù)據(jù)庫最大連接數(shù)可能有關(guān);云硬盤與磁陣連接狀態(tài)可能有關(guān);云硬盤與磁陣錯誤碼可能有關(guān),云硬盤與本地設(shè)備路徑可能有關(guān);網(wǎng)絡(luò)接口綁定失敗與neutronagent狀態(tài)可能有關(guān);neutronagent狀態(tài)與配置文件可能有關(guān),neutronagent狀態(tài)與neutronserver實例個數(shù)可能有關(guān)。等等。內(nèi)置的業(yè)務(wù)邏輯關(guān)聯(lián)規(guī)則中還包含對一些錯誤返回碼的解析,例如磁陣的錯誤碼。
如圖10所示,本可選實施例的日志分析模塊84,其關(guān)聯(lián)分析方法分為兩類,可以同時使用。第一類是強(qiáng)關(guān)聯(lián),按關(guān)鍵字和特定的業(yè)務(wù)邏輯進(jìn)行關(guān)聯(lián)和抽取,例如如果是虛擬機(jī)id,則把相應(yīng)的libvirtinstancename查詢出來,再以libvirtinstancename去查詢libvirt的日志;第二類是弱關(guān)聯(lián),按時間點和常規(guī)邏輯進(jìn)行關(guān)聯(lián),例如當(dāng)發(fā)生一個虛擬機(jī)創(chuàng)建失敗錯誤時,把同一時間點所有組件中包含error、fail、exception、traceback等字樣的日志關(guān)聯(lián)取出,因有可能是其它組件的錯誤導(dǎo)致虛擬機(jī)創(chuàng)建失敗。
本可選實施例的日志分析模塊84,在使用強(qiáng)關(guān)聯(lián)分析時,首先根據(jù)對象id從日志中獲取相應(yīng)的請求id,擴(kuò)充查詢關(guān)鍵字列表增加請求id;其次判斷對象類型,根據(jù)內(nèi)置的業(yè)務(wù)邏輯關(guān)聯(lián)規(guī)則,逐級關(guān)聯(lián)查找。例如:如果對象是虛擬機(jī),需要查找所有計算節(jié)點,如錯誤提示與底層libvirt有關(guān),則根據(jù)對象id轉(zhuǎn)換成libvirt的instanceid,查詢libvirt和qemu相關(guān)日志;如錯誤提示為網(wǎng)絡(luò)接口綁定失敗,則查詢neutronagent狀態(tài),如neutronagent狀態(tài)不正確,則按對應(yīng)的規(guī)則查找neutronagent不正確的可能原因,如此逐級追溯,直到找到最終的可能原因;如果對象是云硬盤,需要判斷是否磁陣返回的錯誤,如是磁陣返回的錯誤,根據(jù)錯誤碼查詢出錯信息,必要時可以把云硬盤id轉(zhuǎn)換成磁陣上的虛擬盤id,登錄磁陣查詢相關(guān)狀態(tài);如對象是其它類型,同理根據(jù)相應(yīng)的業(yè)務(wù)邏輯進(jìn)行日志追溯。
可選的,日志分析模塊84在沒有發(fā)現(xiàn)明確的對象id時,也可以輸入一次請求的req-id,或一段錯誤信息,或一個時間點,此時主要是獲取相同req-id的日志,以及相同時間段的日志。對于強(qiáng)關(guān)聯(lián)分析中沒有得出明確結(jié)論的情形,也會繼續(xù)進(jìn)行弱關(guān)聯(lián)分析,輸出相關(guān)的日志供人工分析使用。
本實施例的日志分析模塊,根據(jù)參數(shù)配置模塊的輸入,可以決定取日志的條數(shù),如果失敗操作剛剛發(fā)生,可以配置條數(shù)少一點,以加快查詢速度;根據(jù)參數(shù)配置模塊的輸入,如果需要檢查已歸檔日志,則在所有已壓縮歸檔的gz日志文件中進(jìn)行查詢。
可選的,日志顯示模塊86內(nèi)置日志內(nèi)容解析規(guī)則,解析規(guī)則包含了對一些明確錯誤的原因和解決方案說明,例如:如果虛擬機(jī)創(chuàng)建失敗的錯誤信息為“novalidhostwasfound”,根據(jù)日志分析得到的錯誤原因為計算節(jié)點服務(wù)不可用,則顯示結(jié)果為:由于計算節(jié)點服務(wù)不可用導(dǎo)致虛擬機(jī)創(chuàng)建失敗。若沒有明確對應(yīng)的錯誤原因,則直接對日志分析模塊輸出的結(jié)果日志進(jìn)行優(yōu)化顯示:判斷每條日志與上一條日志的相似度如果超過90%,則認(rèn)為是重復(fù)日志,重復(fù)部分以…顯示;日志中如果包含error、fail等字樣,以紅色顯示,表示需要特別關(guān)注,其它如操作步驟、狀態(tài)等以橙色顯示,重復(fù)日志以黃色 顯示,表示一般可以忽略;日志的固定格式部分,如req-id,可以截斷不顯示,只顯示日志有意義的部分,根據(jù)參數(shù)配置模塊的輸入,也可以顯示完整的日志,即重復(fù)日志和req-id等日志固定格式部分全部原樣顯示。
需要說明的是,上述各個模塊是可以通過軟件或硬件來實現(xiàn)的,對于后者,可以通過以下方式實現(xiàn),但不限于此:上述模塊均位于同一處理器中;或者,上述模塊分別位于多個處理器中。
本發(fā)明的實施例還提供了一種存儲介質(zhì)??蛇x地,在本實施例中,上述存儲介質(zhì)可以被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:
s1,獲取用于標(biāo)識云計算管理平臺上各個組件的狀態(tài)的狀態(tài)信息并生成與狀態(tài)信息對應(yīng)的日志文件;
s2,在云計算管理平臺出現(xiàn)錯誤事件時,依據(jù)預(yù)設(shè)規(guī)則搜索與錯誤事件相關(guān)聯(lián)的日志文件;
s3,將相關(guān)聯(lián)的日志文件中表征錯誤事件的日志內(nèi)容進(jìn)行顯示。
可選地,在本實施例中,上述存儲介質(zhì)可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
可選地,在本實施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行獲取用于標(biāo)識云計算管理平臺上各個組件的狀態(tài)的狀態(tài)信息并生成與狀態(tài)信息對應(yīng)的日志文件;
可選地,在本實施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行在云計算管理平臺出現(xiàn)錯誤事件時,依據(jù)預(yù)設(shè)規(guī)則搜索與錯誤事件相關(guān)聯(lián)的日志文件;
可選地,在本實施例中,將相關(guān)聯(lián)的日志文件中表征錯誤事件的日志內(nèi)容進(jìn)行顯示。
可選地,本實施例中的具體示例可以參考上述實施例及可選實施方式中所描述的示例,本實施例在此不再贅述。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何 修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。