本發(fā)明涉及信息處理領(lǐng)域,具體而言,涉及一種消息處理方法和裝置。
背景技術(shù):
簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP,Simple Network Management protocol)是專(zhuān)門(mén)設(shè)計(jì)用于在IP網(wǎng)絡(luò)管理網(wǎng)絡(luò)節(jié)點(diǎn)的一種標(biāo)準(zhǔn)協(xié)議,是一種應(yīng)用層協(xié)議。利用SNMP,可以收集遠(yuǎn)程設(shè)備(如,服務(wù)器、路由器、交換機(jī)等)的管理信息并且對(duì)遠(yuǎn)程設(shè)備進(jìn)行配置,實(shí)現(xiàn)對(duì)遠(yuǎn)程設(shè)備的綜合統(tǒng)一管理。
現(xiàn)有技術(shù)中,SNMP網(wǎng)管系統(tǒng)采用后臺(tái)管理者M(jìn)anager/前臺(tái)代理Agent的架構(gòu),后臺(tái)網(wǎng)管作為管理者(Manager),前臺(tái)代理Agent是駐留在遠(yuǎn)程設(shè)備上的一個(gè)進(jìn)程或任務(wù),為被管者。管理者和被管者之間采用SNMP協(xié)議進(jìn)行通信。網(wǎng)管系統(tǒng)以UDP傳輸協(xié)議來(lái)發(fā)送和接收SNMP消息。
當(dāng)遠(yuǎn)程設(shè)備出現(xiàn)特定事件,前臺(tái)代理Agent通過(guò)SNMP協(xié)議中定義的告警Trap消息主動(dòng)發(fā)送消息到后臺(tái)網(wǎng)管。后臺(tái)網(wǎng)管接收到Trap消息后,對(duì)該告警消息進(jìn)行處理。然而,現(xiàn)有技術(shù)中,一般采用單線程方案,也即,將消息接收和消息處理邏輯耦合,如果同時(shí)接收多條消息,后臺(tái)網(wǎng)管需要串行處理,單條告警的處理時(shí)間直接影響到告警處理的效率。而一條告警消息的處理由多個(gè)步驟組成,涉及到數(shù)據(jù)庫(kù)操作的比較耗時(shí),將這就直接影響到消息接收邏輯,導(dǎo)致高峰時(shí)部分消息無(wú)法處理,丟失部分告警消息。在該技術(shù)中,遠(yuǎn)程設(shè)備主動(dòng)上報(bào)Trap告警消息上報(bào)效率高,但是基于不可靠傳輸協(xié)議UDP的本質(zhì)決定了SNMP的告警消息本身也是不可靠的,可能存在消息丟失的情況。
現(xiàn)有技術(shù)中,還提供了一種基于主動(dòng)輪詢(xún)獲取實(shí)時(shí)告警消息的方式,采用該種方式,如果想要盡可能及時(shí)地獲取告警消息,那么輪詢(xún)間隔需要盡可能地小,但是這樣又會(huì)加大網(wǎng)絡(luò)負(fù)載和設(shè)備資源消耗。
針對(duì)上述告警消息的處理速度慢導(dǎo)致消息丟失的問(wèn)題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種消息處理方法和裝置,以至少解決告警消息的處理速度慢導(dǎo)致消息丟失的技術(shù)問(wèn)題。
根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種消息處理方法,包括:檢測(cè)消息隊(duì)列中是否記錄有新的告警消息,其中,消息隊(duì)列用于記錄接收到的告警消息;在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,從消息隊(duì)列中取出新的告警消息;將新的告警消息轉(zhuǎn)換為告警對(duì)象;通過(guò)告警處理模塊對(duì)告警對(duì)象執(zhí)行告警處理。
根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種消息處理裝置,包括:檢測(cè)單元,用于檢測(cè)消息隊(duì)列中是否記錄有新的告警消息,其中,消息隊(duì)列用于記錄接收到的告警消息;取出單元,用于在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,從消息隊(duì)列中取出新的告警消息;轉(zhuǎn)換單元,用于將新的告警消息轉(zhuǎn)換為告警對(duì)象;執(zhí)行單元,用于通過(guò)告警處理模塊對(duì)告警對(duì)象執(zhí)行告警處理。
通過(guò)上述實(shí)施例,消息隊(duì)列專(zhuān)門(mén)用于存儲(chǔ)接收到的告警消息,在后臺(tái)網(wǎng)管服務(wù)器上啟動(dòng)一個(gè)進(jìn)程實(shí)時(shí)檢測(cè)消息隊(duì)列中是否有新的告警消息,在檢測(cè)到新的告警消息的情況下,從消息隊(duì)列中取出該新的告警消息,并生成該新的告警消息的告警對(duì)象,通過(guò)告警處理模塊對(duì)該告警對(duì)象進(jìn)行處理。在該實(shí)施例中,通過(guò)消息隊(duì)列將消息的接收邏輯和消息的處理邏輯進(jìn)行了解耦,也即,消息的接收和消息的處理互不影響,消息處理速度的快慢不會(huì)影響消息的接收,如告警處理模塊處理消息的速度慢,也可以將接收到的消息寫(xiě)入消息隊(duì)列,從而解決了現(xiàn)有技術(shù)中告警消息的處理速度慢導(dǎo)致消息丟失的問(wèn)題,達(dá)到了告警消息的處理速度不影響消息的接收的效果,提高了系統(tǒng)的穩(wěn)定性。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實(shí)施例的消息處理方法的硬件環(huán)境的示意圖;
圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的消息處理方法的流程圖一;
圖3是根據(jù)本發(fā)明實(shí)施例的一種可選的消息處理方法的流程圖二;
圖4是根據(jù)本發(fā)明實(shí)施例的一種可選的消息處理方法的流程圖三;
圖5是根據(jù)本發(fā)明實(shí)施例的一種可選的消息處理方法的流程圖四;
圖6是根據(jù)本發(fā)明實(shí)施例的一種可選的消息處理裝置的示意圖一;
圖7是根據(jù)本發(fā)明實(shí)施例的一種可選的消息處理裝置的示意圖二;
圖8是根據(jù)本發(fā)明實(shí)施例的一種可選的消息處理裝置的示意圖三;以及
圖9是根據(jù)本發(fā)明實(shí)施例的一種終端的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說(shuō)明的是,本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類(lèi)似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
根據(jù)本發(fā)明實(shí)施例,提供了一種郵件處理的方法實(shí)施例??蛇x地,在本實(shí)施例中,上述消息處理方法和裝置可以應(yīng)用于如圖1所示的由后臺(tái)服務(wù)器102和遠(yuǎn)程設(shè)備104所構(gòu)成的硬件環(huán)境中。如圖1所示,服務(wù)器102通過(guò)網(wǎng)絡(luò)與遠(yuǎn)程設(shè)備104進(jìn)行連接,上述網(wǎng)絡(luò)包括但不限于:廣域網(wǎng)、城域網(wǎng)或局域網(wǎng),遠(yuǎn)程設(shè)備104并不限定于PC、手機(jī)、平板電腦等。本發(fā)明實(shí)施例的消息處理方法和裝置可以由服務(wù)器102來(lái)執(zhí)行,也可以由遠(yuǎn)程設(shè)備104來(lái)執(zhí)行,還可以是由服務(wù)器102和終端104共同執(zhí)行。其中,遠(yuǎn)程104執(zhí)行本發(fā)明實(shí)施例的消息處理方法和裝置也可以是由安裝在其上的客戶(hù)端來(lái)執(zhí)行。
可選地,該遠(yuǎn)程設(shè)備還可以為服務(wù)器、路由器、交換機(jī)等,本申請(qǐng)對(duì)此不做限定。
可選地,本實(shí)施例的服務(wù)器可以為后臺(tái)網(wǎng)管,是管理者;遠(yuǎn)程設(shè)備上運(yùn)行有前端代理的進(jìn)程或任務(wù),該前端代理和后臺(tái)網(wǎng)管之間通過(guò)SNMP進(jìn)行通訊,在遠(yuǎn)程設(shè)備發(fā)生預(yù)定的告警事件的情況下,前端代理將告警消息發(fā)送給后臺(tái)網(wǎng)管,后臺(tái)網(wǎng)管接收到該告警消息之后,對(duì)其進(jìn)行相應(yīng)的處理。
可選地,在遠(yuǎn)程設(shè)備上駐留前端代理的任務(wù)或進(jìn)程之后,前端代理設(shè)置后臺(tái)網(wǎng)管的服務(wù)器IP,以與后臺(tái)網(wǎng)管進(jìn)行通訊。
進(jìn)一步可選地,后臺(tái)網(wǎng)管接收到告警消息之后,將告警消息寫(xiě)入消息隊(duì)列中,在后臺(tái)網(wǎng)管上單獨(dú)啟動(dòng)一個(gè)進(jìn)程,該進(jìn)程啟動(dòng)后實(shí)時(shí)檢測(cè)消息隊(duì)列中是否有新的告警消息,若檢測(cè)到該消息隊(duì)列中有新的告警消息,則將該新的告警消息從消息隊(duì)列中取出,生成該新的告警消息的告警對(duì)象,經(jīng)該告警對(duì)象發(fā)送至告警處理模塊,告警處理模塊按照告警對(duì)象的事件類(lèi)型,對(duì)告警對(duì)象進(jìn)行相應(yīng)的處理。
具體地,圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的消息處理方法的流程圖一,如圖2所示,該方法應(yīng)用在后臺(tái)管理服務(wù)器上,該方法可以包括以下步驟:
步驟S202,檢測(cè)消息隊(duì)列中是否記錄有新的告警消息,其中,消息隊(duì)列用于記錄接收到的告警消息;
步驟S204,在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,從消息隊(duì)列中取出新的告警消息;
步驟S206,將新的告警消息轉(zhuǎn)換為告警對(duì)象;
步驟S208,通過(guò)告警處理模塊對(duì)告警對(duì)象執(zhí)行告警處理。
通過(guò)上述實(shí)施例,消息隊(duì)列專(zhuān)門(mén)用于存儲(chǔ)接收到的告警消息,在后臺(tái)網(wǎng)管服務(wù)器上啟動(dòng)一個(gè)進(jìn)程實(shí)時(shí)檢測(cè)消息隊(duì)列中是否有新的告警消息,在檢測(cè)到新的告警消息的情況下,從消息隊(duì)列中取出該新的告警消息,并生成該新的告警消息的告警對(duì)象,通過(guò)告警處理模塊對(duì)該告警對(duì)象進(jìn)行處理。在該實(shí)施例中,通過(guò)消息隊(duì)列將消息的接收邏輯和消息的處理邏輯進(jìn)行了解耦,也即,消息的接收和消息的處理互不影響,消息處理速度的快慢不會(huì)影響消息的接收,如告警處理模塊處理消息的速度慢,也可以將接收到的消息寫(xiě)入消息隊(duì)列,從而解決了現(xiàn)有技術(shù)中告警消息的處理速度慢導(dǎo)致消息丟失的問(wèn)題,達(dá)到了告警消息的處理速度不影響消息的接收的效果,提高了系統(tǒng)的穩(wěn)定性。
在步驟S202提供的技術(shù)方案中,可以在后臺(tái)網(wǎng)管服務(wù)器上設(shè)置一個(gè)消息隊(duì)列,將接收到的告警消息寫(xiě)入該消息隊(duì)列,并在后臺(tái)網(wǎng)管服務(wù)器啟動(dòng)后,在該后臺(tái)網(wǎng)管服務(wù)器上啟動(dòng)一個(gè)單獨(dú)的檢測(cè)進(jìn)程,該進(jìn)程不斷循環(huán)檢測(cè)消息隊(duì)列中是否記錄有新的告警消息。
可選地,該后臺(tái)網(wǎng)管服務(wù)器上啟動(dòng)的檢測(cè)進(jìn)程,可以不間斷地檢測(cè)該消息隊(duì)列中是否記錄有新的告警消息;為了減少后臺(tái)網(wǎng)管服務(wù)器上資源的占用,也可以每隔預(yù)定時(shí)長(zhǎng)檢測(cè)一次,如每隔1ms,本申請(qǐng)對(duì)此不做具體限定。
可選地,消息隊(duì)列可以為在消息的傳輸過(guò)程中保存消息的容器,該消息隊(duì)列在將消息從消息的來(lái)源中繼到消息的目標(biāo)時(shí)充當(dāng)中間人,如果發(fā)送消息時(shí)接收者暫時(shí)不可用,可以將消息存儲(chǔ)在該消息隊(duì)列中,直至可以傳遞該消息。
具體到該實(shí)施例中,消息隊(duì)列用于存儲(chǔ)來(lái)源于前端代理的告警消息,該消息的目標(biāo)可以為告警處理模塊,在告警處理模塊暫時(shí)無(wú)法處理該消息的情況下(如告警處理模塊沒(méi)有空閑資源處理該新的告警消息),可以將該消息繼續(xù)保存在消息隊(duì)列中。
在步驟S204提供的技術(shù)方案中,在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,從消息隊(duì)列中取出新的告警消息,可選地,從消息隊(duì)列中取出新的告警消息,可以是將該新的告警消息從消息隊(duì)列中刪除,并將該新的告警消息進(jìn)行下一步的處理。
可選地,從消息隊(duì)列中取出該新的告警消息之前,可以檢測(cè)告警處理模塊的空閑資源是否足夠處理該新的告警消息,如果該告警處理模塊的空閑資源不足以處理該新的告警消息,則暫緩執(zhí)行取出操作;在檢測(cè)到告警處理模塊的空閑資源足以處理該新的告警消息的情況下,再執(zhí)行取出操作。
在步驟S206的技術(shù)方案中,將新的告警消息轉(zhuǎn)換為告警對(duì)象,可選地,檢測(cè)進(jìn)程在取出告警消息之后,調(diào)用告警適配器,利用該告警適配器將告警消息轉(zhuǎn)換為告警對(duì)象。
可選地,獲取告警消息的屬性,利用該告警消息的屬性將告警消息轉(zhuǎn)換為對(duì)應(yīng)具體設(shè)備的告警對(duì)象,并將告警對(duì)象發(fā)送至告警處理模塊。
在步驟S208的技術(shù)方案中,通過(guò)告警處理模塊對(duì)告警對(duì)象執(zhí)行告警處理,可以通過(guò)告警處理模塊按照告警對(duì)象的事件類(lèi)型對(duì)告警對(duì)象執(zhí)行告警處理。
圖3示出了一種可選的實(shí)施例,如圖3所示,在檢測(cè)消息隊(duì)列中是否記錄有新的告警消息之前,方法還包括:
步驟S302:接收遠(yuǎn)程設(shè)備上報(bào)的告警消息,將接收到的告警消息寫(xiě)入消息隊(duì)列;
步驟S202至步驟S208的實(shí)現(xiàn)方式與上述實(shí)施例中的實(shí)現(xiàn)方式一致,在此不再贅述。
可選地,上述步驟S202:檢測(cè)消息隊(duì)列中是否記錄有新的告警消息可以通過(guò)如下方式實(shí)現(xiàn):檢測(cè)消息隊(duì)列是否為空;若消息隊(duì)列不為空,則檢測(cè)出消息隊(duì)列中記錄有新的告警消息。
可選地,在每次檢測(cè)到消息隊(duì)列中存在新的告警消息之后,將其從消息隊(duì)列中取出,這樣,消息隊(duì)列中變?yōu)榭盏年?duì)列,如果后臺(tái)網(wǎng)管服務(wù)器接收到新的告警消息,將接收到的新的消息保存入(或?qū)懭?消息隊(duì)列,則消息隊(duì)列不為空,在后臺(tái)網(wǎng)管服務(wù)器上檢測(cè)消息隊(duì)列時(shí),就可以通過(guò)檢測(cè)消息隊(duì)列是否為空,來(lái)檢測(cè)消息隊(duì)列中是否記錄有新的告警消息,若消息隊(duì)列為空,則確定消息隊(duì)列中未記錄新的告警消息;若消息隊(duì)列不為空,則確定消息隊(duì)列中記錄有新的告警消息。
通過(guò)上述實(shí)施例,可以通過(guò)消息隊(duì)列將消息的接收邏輯與處理邏輯解耦,從而使得消息的處理速度不會(huì)導(dǎo)致消息的丟失。
為了使得系統(tǒng)更加可靠、穩(wěn)定,本申請(qǐng)還提供了一種實(shí)施例,在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,方法還包括:獲取新的告警消息的當(dāng)前消息計(jì)數(shù)器;基于當(dāng)前消息計(jì)數(shù)器檢測(cè)是否發(fā)生消息丟失;在檢測(cè)出發(fā)生消息丟失的情況下,啟動(dòng)同步進(jìn)程進(jìn)行消息同步。
其中,告警消息中記錄有告警消息的屬性,該屬性包括告警消息的消息計(jì)數(shù)器,在本實(shí)施例中,將新的告警消息中的消息計(jì)數(shù)器稱(chēng)之為當(dāng)前消息計(jì)數(shù)器。
在該實(shí)施例中,可以通過(guò)新的告警消息中的當(dāng)前消息計(jì)數(shù)器檢測(cè)是否發(fā)生消息丟失,這里的消息丟失是指上報(bào)該新的告警消息的設(shè)備上報(bào)的消息是否發(fā)生丟失事件。
可選地,在檢測(cè)出發(fā)生消息丟失的情況下,啟動(dòng)同步進(jìn)程進(jìn)行消息同步,以將丟失的消息找回,從而解決了現(xiàn)有技術(shù)中由于系統(tǒng)不穩(wěn)定導(dǎo)致消息丟失的問(wèn)題,實(shí)現(xiàn)了不丟失消息、或者即便是丟失了消息也可以及時(shí)找回的效果。
在一個(gè)可選的實(shí)施例中,基于當(dāng)前消息計(jì)數(shù)器檢測(cè)是否發(fā)生消息丟失包括:從數(shù)據(jù)庫(kù)獲取與新的告警消息對(duì)應(yīng)的上一次消息計(jì)數(shù)器;若當(dāng)前消息計(jì)數(shù)器與上一次消息計(jì)數(shù)器的值的差值大于預(yù)定閾值,則確定檢測(cè)出發(fā)生消息丟失。
在后臺(tái)網(wǎng)管服務(wù)器中記錄有接收到的所有的告警消息的信息,在獲取到新的告警消息的當(dāng)前消息計(jì)數(shù)器之后,獲取該新的告警消息的上報(bào)設(shè)備的信息,從數(shù)據(jù)庫(kù)中讀取該上報(bào)設(shè)備上次上報(bào)的告警消息的消息計(jì)數(shù)器,該上報(bào)設(shè)備上次上報(bào)的告警消息的消息計(jì)數(shù)器即為與該新的告警消息對(duì)應(yīng)的上一次消息計(jì)數(shù)器。
在獲取到該當(dāng)前消息計(jì)數(shù)器和上一次消息計(jì)數(shù)器之后,計(jì)算當(dāng)前消息計(jì)數(shù)器和上一次消息計(jì)數(shù)器的值的差值,若該差值大于預(yù)定閾值,則確定檢測(cè)出該上報(bào)設(shè)備上報(bào)的消息發(fā)生了丟失事件;若該差值不大于預(yù)定閾值,則確定檢測(cè)出該上報(bào)設(shè)備上報(bào)的消息未發(fā)生丟失事件。
可選地,這里的預(yù)定閾值可以為1,在該上述實(shí)施例中,檢測(cè)的是同一設(shè)備相鄰兩次上報(bào)的告警消息的消息計(jì)數(shù)器,可以確定的是,在不發(fā)生消息丟失的情況下,同一設(shè)備相鄰兩次上報(bào)的告警消息的消息計(jì)數(shù)器的值的差值為1,如果檢測(cè)出的當(dāng)前消息計(jì)數(shù)器與上一次消息器的值大于1,則確定該設(shè)備上報(bào)的消息發(fā)生了丟失事件。
在一個(gè)可選的實(shí)施例中,啟動(dòng)同步進(jìn)程進(jìn)行消息同步可以包括:向上報(bào)新的告警消息的設(shè)備發(fā)送同步命令,其中,同步命令用于獲取設(shè)備上存儲(chǔ)的第一告警列表;從數(shù)據(jù)庫(kù)中讀取設(shè)備的第二告警列表;比較第一告警列表和第二告警列表,確定丟失的告警消息;將丟失的告警消息插入第二告警列表,并將告警消息寫(xiě)入消息隊(duì)列。
需要說(shuō)明的是,設(shè)備上設(shè)置有告警消息列表(即上述實(shí)施例中的第一告警列表),該告警消息列表用于存儲(chǔ)設(shè)備上報(bào)的告警消息的相關(guān)信息;數(shù)據(jù)庫(kù)中將接收到的告警消息的相關(guān)信息存儲(chǔ)在告警消息列表中(即上述實(shí)施例中的第二告警列表)。
可選地,在確定發(fā)生消息丟失事件的情況下,啟動(dòng)同步進(jìn)程,該同步進(jìn)程向發(fā)生消息丟失的設(shè)備發(fā)送同步命令,該發(fā)生消息丟失的設(shè)備接收到同步命令之后,將設(shè)備上的第一告警列表發(fā)送至后臺(tái)網(wǎng)管服務(wù)器,該同步進(jìn)程接收到設(shè)備發(fā)送的第一告警列表之后,同步進(jìn)程獲取數(shù)據(jù)庫(kù)中存儲(chǔ)的第二告警列表,將第一告警列表和第二告警列表中的信息進(jìn)行比對(duì),比較出丟失的告警消息,如,存在于第一告警列表中、且第二告警列表中未存儲(chǔ)的告警消息,在確定出丟失的告警消息之后,將該丟失的告警消息插入第二告警列表,并將該丟失的消息寫(xiě)入消息隊(duì)列中。
通過(guò)上述實(shí)施例,可以在告警消息發(fā)生丟失的情況下,及時(shí)確定丟失的消息,并進(jìn)行消息的同步,保證系統(tǒng)的穩(wěn)定可靠。
根據(jù)本發(fā)明的上述實(shí)施例,在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,從消息隊(duì)列中取出新的告警消息包括:確定告警處理模塊是否具有空閑資源;在告警處理模塊具有空閑資源的情況下,從消息隊(duì)列中取出新的告警消息。
可選地,可以在從消息隊(duì)列中取出新的告警消息之前,檢測(cè)告警處理模塊是否具有空閑資源,若告警處理模塊不具有空閑資源,則暫緩執(zhí)行取出操作;若告警處理模塊具有空閑資源,則執(zhí)行取出操作。
其中的空閑資源可以為能夠處理該新的告警消息的足夠的資源。
需要的說(shuō)明的是,處理不同事件類(lèi)型的資源可以相同或者不同,在檢測(cè)告警處理模塊是否具有空閑資源的過(guò)程中,可以獲取處理該新的告警消息所需的資源,檢測(cè)告警處理模塊中剩余資源(如,未參與告警處理的資源)是否大于等于處理該新的告警消息所需的資源,如果是,則確定告警處理模塊具有空閑資源,如果否,則確定告警處理模塊不具有空閑資源。
可選地,暫緩執(zhí)行取出操作可以通過(guò)如下步驟執(zhí)行:間隔預(yù)定時(shí)長(zhǎng)之后,再次檢測(cè)告警處理模塊是否具有空閑資源,在告警處理模塊仍不具有空閑資源的情況下,再次暫緩執(zhí)行取出操作,直至告警處理模塊具有空閑資源。
進(jìn)一步可選地,在暫緩執(zhí)行取出操作的過(guò)程中,若經(jīng)過(guò)預(yù)定報(bào)警時(shí)長(zhǎng),仍未檢測(cè)出告警處理模塊具有空閑資源,則可以生成報(bào)警消息,該報(bào)警消息用于指示用戶(hù)檢測(cè)告警處理模塊是否發(fā)生異常;另一個(gè)種可選地,在暫緩執(zhí)行取出操作的過(guò)程中,若檢測(cè)次數(shù)超過(guò)預(yù)定次數(shù),仍未檢測(cè)出告警處理模塊具有空閑資源,則可以生成報(bào)警消息,該報(bào)警消息用于指示用戶(hù)檢測(cè)告警處理模塊是否發(fā)生異常。
根據(jù)本發(fā)明的上述實(shí)施例,從消息隊(duì)列中取出新的告警消息包括:在新的告警消息為一條的情況下,從消息隊(duì)列中取出該新的告警消息;在新的告警消息為一條或多條的情況下,從消息隊(duì)列中取出全部或部分新的告警消息。
可選地,檢測(cè)到的消息隊(duì)列中存儲(chǔ)的新的告警消息可以為一條或者多條,在檢測(cè)到的新的告警消息為一條的情況下,若告警處理模塊具有空閑資源,則可以取出該新的告警消息。在檢測(cè)到的新的告警消息為多條的情況下,可以逐條取出新的告警消息,也可以一次取出多條或者全部新的告警消息,可選地,在該實(shí)施例中,每次取出新的告警消息時(shí),空閑資源指的是與當(dāng)前取出的新的告警消息對(duì)應(yīng)的資源。
通過(guò)上述實(shí)施例,可以進(jìn)一步保證系統(tǒng)的可靠性和穩(wěn)定性。
根據(jù)本發(fā)明的上述實(shí)施例,在從消息隊(duì)列中取出新的告警消息之后,將新的告警消息轉(zhuǎn)換為告警對(duì)象包括:獲取新的告警消息的消息標(biāo)識(shí)和設(shè)備類(lèi)型,其中,設(shè)備類(lèi)型為上報(bào)新的告警消息的設(shè)備的類(lèi)型;若消息標(biāo)識(shí)是已配置的消息標(biāo)識(shí)、且在數(shù)據(jù)庫(kù)中記錄有設(shè)備類(lèi)型,則生成新的告警消息的告警對(duì)象。
在上述實(shí)施例中,獲取新的告警消息的消息標(biāo)識(shí),檢測(cè)該消息標(biāo)識(shí)是否為配置過(guò)的消息標(biāo)識(shí),可選地,可以通過(guò)檢測(cè)該消息標(biāo)識(shí)是否被存儲(chǔ)在標(biāo)識(shí)表中來(lái)實(shí)現(xiàn),如果未存儲(chǔ)在標(biāo)識(shí)表中,則確定該消息標(biāo)識(shí)未被配置;如果存儲(chǔ)在標(biāo)識(shí)表中,則確定該消息標(biāo)識(shí)為已配置的消息標(biāo)識(shí)。
在上述實(shí)施例中,獲取新的告警消息的設(shè)備IP,根據(jù)該設(shè)備IP在數(shù)據(jù)庫(kù)中查找設(shè)備類(lèi)型,如果在數(shù)據(jù)庫(kù)中可以查找到該IP對(duì)應(yīng)的設(shè)備類(lèi)型,則可以確定數(shù)據(jù)庫(kù)中記錄有該設(shè)備類(lèi)型;如果在數(shù)據(jù)庫(kù)中查找不到該IP對(duì)應(yīng)的設(shè)備類(lèi)型,則確定數(shù)據(jù)庫(kù)中未記錄該設(shè)備類(lèi)型。
可選地,若該消息標(biāo)識(shí)是未配置的消息標(biāo)識(shí),則丟棄該告警數(shù)據(jù);或者,若在數(shù)據(jù)庫(kù)中未查找到對(duì)應(yīng)的設(shè)備類(lèi)型,則丟棄該告警數(shù)據(jù)。
根據(jù)本發(fā)明的上述實(shí)施例,通過(guò)告警處理模塊對(duì)告警對(duì)象執(zhí)行告警處理包括:獲取告警對(duì)象的事件類(lèi)型;在事件類(lèi)型為告警類(lèi)型的情況下,將告警對(duì)象對(duì)應(yīng)的信息增加到實(shí)時(shí)告警表中;在事件類(lèi)型為取消類(lèi)型的情況下,將告警對(duì)象對(duì)應(yīng)的信息從實(shí)時(shí)告警表中刪除。
可選地,告警處理模塊接收到告警對(duì)象后,判斷事件類(lèi)型,如果是告警類(lèi)型,則將該告警對(duì)象對(duì)應(yīng)的信息新增到數(shù)據(jù)庫(kù)實(shí)時(shí)告警表中,并且記錄最新的告警消息;如果是告警恢復(fù)類(lèi)型(即上述的取消類(lèi)型),則將該告警對(duì)象對(duì)應(yīng)的信息從實(shí)時(shí)告警表中刪除,并將從實(shí)時(shí)告警表中刪除的信息插入到歷史告警表中。
需要說(shuō)明的是,本申請(qǐng)還提供了一種實(shí)施例,在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,方法還可以包括:獲取新的告警消息的設(shè)備類(lèi)型和告警類(lèi)型;按照設(shè)備類(lèi)型和告警類(lèi)型將新的告警消息展示在鏈路拓?fù)鋱D上。
通過(guò)該實(shí)施例,根據(jù)鏈路拓?fù)鋵?duì)實(shí)時(shí)告警進(jìn)行可視化,方便定位問(wèn)題設(shè)備;根據(jù)設(shè)備類(lèi)型及告警類(lèi)型對(duì)告警數(shù)據(jù)進(jìn)行趨勢(shì)展示,方便進(jìn)行告警分析。
通過(guò)上述實(shí)施例,基于SNMP協(xié)議的設(shè)備實(shí)時(shí)監(jiān)控技術(shù),解決告警消息處理效率低和網(wǎng)絡(luò)傳輸不可靠導(dǎo)致的告警消息丟失的問(wèn)題,上述實(shí)施例可以高效率、高可靠的進(jìn)行告警處理,并且根據(jù)設(shè)備鏈路拓?fù)鋵?duì)告警信息進(jìn)行可視化展示和分析,提高問(wèn)題定位效率。
下面結(jié)合圖4和圖5對(duì)本申請(qǐng)?zhí)峁┑牧硪豢蛇x實(shí)施例進(jìn)行詳細(xì)說(shuō)明。
如圖4所示,該實(shí)施例可以包括如下步驟:
步驟S401:在遠(yuǎn)程設(shè)備上通過(guò)前臺(tái)代理配置后臺(tái)網(wǎng)管服務(wù)器的地址。
可選地,前臺(tái)代理(Agent)配置后臺(tái)網(wǎng)管服務(wù)器IP。
步驟S402:前臺(tái)代理在檢測(cè)到遠(yuǎn)程設(shè)備發(fā)生預(yù)定事件時(shí),生成并主送上報(bào)告警消息。
步驟S403:后臺(tái)網(wǎng)管服務(wù)器將接收到的告警消息寫(xiě)入消息隊(duì)列中。
可選地,后臺(tái)網(wǎng)管服務(wù)器接收到前臺(tái)代理上報(bào)的告警消息后,將告警寫(xiě)入消息隊(duì)列中,并將該告警消息記錄在告警列表中(即第二告警列表)。
步驟S404:后臺(tái)網(wǎng)管服務(wù)器啟動(dòng)檢測(cè)進(jìn)程。
步驟S405:檢測(cè)進(jìn)程檢測(cè)消息隊(duì)列中是否有新的告警消息。
其中,在檢測(cè)到有新的告警消息的情況下,執(zhí)行步驟S406:調(diào)用告警適配器,生成告警對(duì)象;在未檢測(cè)到新的告警消息的情況下,繼續(xù)執(zhí)行檢測(cè)操作。
可選地,后臺(tái)網(wǎng)管單獨(dú)啟動(dòng)一個(gè)進(jìn)程,負(fù)責(zé)檢查消息隊(duì)列當(dāng)中是否有告警消息;如果有,調(diào)用告警適配器模塊;告警適配器負(fù)責(zé)將原始消息轉(zhuǎn)換為對(duì)應(yīng)具體設(shè)備的告警對(duì)象,發(fā)送給告警處理模塊。
步驟S407:告警處理模塊對(duì)告警對(duì)象進(jìn)行告警處理。
可選地,告警處理模塊接受到告警對(duì)象后,判斷事件類(lèi)型,如果是告警,將該告警對(duì)應(yīng)的信息新增到數(shù)據(jù)庫(kù)的實(shí)時(shí)告警表當(dāng)中,并且記錄該最新的告警Trap消息;如果是告警恢復(fù)類(lèi)型,則將該告警對(duì)象對(duì)應(yīng)的信息從實(shí)時(shí)告警表中刪除,同時(shí)將刪除的信息插入到歷史告警表中。
步驟S408:告警掃描發(fā)送模塊定時(shí)掃描實(shí)時(shí)告警表,將滿(mǎn)足條件的告警發(fā)送給指定接收人。
可選地,告警掃描發(fā)送模塊掃描實(shí)時(shí)告警表,獲取該實(shí)時(shí)告警表中各個(gè)告警事件的屬性,該屬性包括:告警級(jí)別等信息,在該告警事件符合預(yù)定條件時(shí),將該告警事件發(fā)送給指定接收人,該預(yù)定條件可以為符合預(yù)定告警級(jí)別。
例如,接收人A接收告警級(jí)別為A的告警事件,在該實(shí)施例中的預(yù)定條件若檢測(cè)出該告警級(jí)別符合接收人A的告警級(jí)別,則將該告警事件發(fā)送給接收人A,接收人A接收到該告警之后,進(jìn)行告警分析。
步驟S409:對(duì)告警消息進(jìn)行可視化展示。
可選地,可以根據(jù)鏈路拓?fù)鋵?duì)實(shí)時(shí)告警進(jìn)行可視化,方便定位問(wèn)題設(shè)備;根據(jù)設(shè)備類(lèi)型及告警類(lèi)型對(duì)告警數(shù)據(jù)進(jìn)行趨勢(shì)展示,方便進(jìn)行告警分析。
通過(guò)上述實(shí)施例,通過(guò)消息隊(duì)列的方式將消息接收和消息處理兩塊邏輯進(jìn)行解耦,避免消息處理慢導(dǎo)致的消息無(wú)法接收的問(wèn)題,提高了系統(tǒng)的可靠性;采用設(shè)備鏈路拓?fù)浞绞綄?duì)告警信息進(jìn)行可視化展示,能夠直觀定位問(wèn)題設(shè)備及其造成的影響,提高了運(yùn)維人員工作效率。
上述實(shí)施例中的步驟S405和步驟S406可以通過(guò)如下實(shí)現(xiàn)方案實(shí)現(xiàn):
后臺(tái)網(wǎng)管啟動(dòng)后,單獨(dú)啟動(dòng)一個(gè)進(jìn)程,不斷循環(huán)檢查消息隊(duì)列中是否有新的告警消息;如果有新消息,取出消息,分析消息的屬性,包括告警消息標(biāo)識(shí)(Trap OID)、服務(wù)器IP、事件類(lèi)型、消息計(jì)數(shù)器、綁定屬性值等。對(duì)于未配置的消息標(biāo)識(shí),直接丟棄??蛇x地,根據(jù)服務(wù)器IP得到消息發(fā)送方設(shè)備類(lèi)型。如果查詢(xún)不到所屬設(shè)備類(lèi)型,作為臟數(shù)據(jù)丟棄。否則生成相應(yīng)設(shè)備的告警對(duì)象。
如圖5所示,在獲取到新的告警消息之后,可以通過(guò)如下步驟檢測(cè)是否發(fā)生消息丟失,可選地,該檢測(cè)實(shí)施例可以包括如下步驟:
步驟S501:取出最新告警消息的消息計(jì)數(shù)器值V1。
步驟S502:取出數(shù)據(jù)庫(kù)中記錄的上一次處理的消息計(jì)數(shù)器值V2。
步驟S503:判斷V1-V2是否大于1。
若是,則執(zhí)行步驟S504;若否,則執(zhí)行步驟S506。
步驟S504:?jiǎn)?dòng)同步進(jìn)程。
步驟S505:將丟失的消息插入數(shù)據(jù)庫(kù)的告警列表中。
步驟S506:更新數(shù)據(jù)庫(kù)。
通過(guò)上述實(shí)施例。將消息計(jì)數(shù)器值v1與數(shù)據(jù)庫(kù)中記錄的上一個(gè)消息計(jì)數(shù)器值v2進(jìn)行對(duì)比,如果v1-v2>1,表明由于網(wǎng)絡(luò)原因部分消息丟失,需要啟動(dòng)主動(dòng)同步進(jìn)程進(jìn)行消息同步;否則將v1更新至數(shù)據(jù)庫(kù),覆蓋v2。
在上述實(shí)施例中,主動(dòng)同步進(jìn)程向前臺(tái)代理發(fā)送命令,獲取遠(yuǎn)程設(shè)備的告警列表,對(duì)比數(shù)據(jù)庫(kù)實(shí)時(shí)告警表,確定丟失的告警消息,將丟失的告警消息插入數(shù)據(jù)庫(kù)的實(shí)時(shí)告警表,以更新v1至數(shù)據(jù)庫(kù),覆蓋v2。
在上述實(shí)施例中,在發(fā)現(xiàn)snmp trap消息出現(xiàn)丟失的情況下,能夠主動(dòng)獲取遠(yuǎn)程設(shè)備的實(shí)時(shí)告警消息,進(jìn)行消息同步,保證系統(tǒng)穩(wěn)定可靠。
需要說(shuō)明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如ROM/RAM、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述消息處理方法的消息處理裝置。圖6是根據(jù)本發(fā)明實(shí)施例的一種可選的消息處理裝置的示意圖,如圖6所示,該裝置可以包括:
檢測(cè)單元61,用于檢測(cè)消息隊(duì)列中是否記錄有新的告警消息,其中,消息隊(duì)列用于記錄接收到的告警消息;
取出單元63,用于在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,從消息隊(duì)列中取出新的告警消息;
轉(zhuǎn)換單元65,用于將新的告警消息轉(zhuǎn)換為告警對(duì)象;
執(zhí)行單元67,用于通過(guò)告警處理模塊對(duì)告警對(duì)象執(zhí)行告警處理。
通過(guò)上述實(shí)施例,消息隊(duì)列專(zhuān)門(mén)用于存儲(chǔ)接收到的告警消息,在后臺(tái)網(wǎng)管服務(wù)器上啟動(dòng)一個(gè)進(jìn)程實(shí)時(shí)檢測(cè)消息隊(duì)列中是否有新的告警消息,在檢測(cè)到新的告警消息的情況下,從消息隊(duì)列中取出該新的告警消息,并生成該新的告警消息的告警對(duì)象,通過(guò)告警處理模塊對(duì)該告警對(duì)象進(jìn)行處理。在該實(shí)施例中,通過(guò)消息隊(duì)列將消息的接收邏輯和消息的處理邏輯進(jìn)行了解耦,也即,消息的接收和消息的處理互不影響,消息處理速度的快慢不會(huì)影響消息的接收,如告警處理模塊處理消息的速度慢,也可以將接收到的消息寫(xiě)入消息隊(duì)列,從而解決了現(xiàn)有技術(shù)中告警消息的處理速度慢導(dǎo)致消息丟失的問(wèn)題,達(dá)到了告警消息的處理速度不影響消息的接收的效果,提高了系統(tǒng)的穩(wěn)定性。
可以在后臺(tái)網(wǎng)管服務(wù)器上設(shè)置一個(gè)消息隊(duì)列,將接收到的告警消息寫(xiě)入該消息隊(duì)列,并在后臺(tái)網(wǎng)管服務(wù)器啟動(dòng)后,在該后臺(tái)網(wǎng)管服務(wù)器上啟動(dòng)一個(gè)單獨(dú)的檢測(cè)進(jìn)程,該進(jìn)程不斷循環(huán)檢測(cè)消息隊(duì)列中是否記錄有新的告警消息。
可選地,該后臺(tái)網(wǎng)管服務(wù)器上啟動(dòng)的檢測(cè)進(jìn)程,可以不間斷地檢測(cè)該消息隊(duì)列中是否記錄有新的告警消息;為了減少后臺(tái)網(wǎng)管服務(wù)器上資源的占用,也可以每隔預(yù)定時(shí)長(zhǎng)檢測(cè)一次,如每隔1ms,本申請(qǐng)對(duì)此不做具體限定。
可選地,消息隊(duì)列可以為在消息的傳輸過(guò)程中保存消息的容器,該消息隊(duì)列在將消息從消息的來(lái)源中繼到消息的目標(biāo)時(shí)充當(dāng)中間人,如果發(fā)送消息時(shí)接收者暫時(shí)不可用,可以將消息存儲(chǔ)在該消息隊(duì)列中,直至可以傳遞該消息。
具體到該實(shí)施例中,消息隊(duì)列用于存儲(chǔ)來(lái)源于前端代理的告警消息,該消息的目標(biāo)可以為告警處理模塊,在告警處理模塊暫時(shí)無(wú)法處理該消息的情況下(如告警處理模塊沒(méi)有空閑資源處理該新的告警消息),可以將該消息繼續(xù)保存在消息隊(duì)列中。
在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,從消息隊(duì)列中取出新的告警消息,可選地,從消息隊(duì)列中取出新的告警消息,可以是將該新的告警消息從消息隊(duì)列中刪除,并將該新的告警消息進(jìn)行下一步的處理。
可選地,從消息隊(duì)列中取出該新的告警消息之前,可以檢測(cè)告警處理模塊的空閑資源是否足夠處理該新的告警消息,如果該告警處理模塊的空閑資源不足以處理該新的告警消息,則暫緩執(zhí)行取出操作;在檢測(cè)到告警處理模塊的空閑資源足以處理該新的告警消息的情況下,再執(zhí)行取出操作。
可選地,將新的告警消息轉(zhuǎn)換為告警對(duì)象,可選地,檢測(cè)進(jìn)程在取出告警消息之后,調(diào)用告警適配器,利用該告警適配器將告警消息轉(zhuǎn)換為告警對(duì)象。
可選地,獲取告警消息的屬性,利用該告警消息的屬性將告警消息轉(zhuǎn)換為對(duì)應(yīng)具體設(shè)備的告警對(duì)象,并將告警對(duì)象發(fā)送至告警處理模塊。
通過(guò)告警處理模塊對(duì)告警對(duì)象執(zhí)行告警處理,可以通過(guò)告警處理模塊按照告警對(duì)象的事件類(lèi)型對(duì)告警對(duì)象執(zhí)行告警處理。
根據(jù)上述實(shí)施例,裝置還包括:如圖7所示的處理單元71,用于在檢測(cè)消息隊(duì)列中是否記錄有新的告警消息之前,接收遠(yuǎn)程設(shè)備上報(bào)的告警消息,將接收到的告警消息寫(xiě)入消息隊(duì)列;檢測(cè)單元具體用于:檢測(cè)消息隊(duì)列是否為空;若消息隊(duì)列不為空,則檢測(cè)出消息隊(duì)列中記錄有新的告警消息。
在一個(gè)可選的實(shí)施例中,裝置還可以包括:如圖8所示的,第一獲取單元81,用于在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,獲取新的告警消息的當(dāng)前消息計(jì)數(shù)器;檢測(cè)單元61還用于基于當(dāng)前消息計(jì)數(shù)器檢測(cè)是否發(fā)生消息丟失;同步單元83,用于在檢測(cè)出發(fā)生消息丟失的情況下,啟動(dòng)同步進(jìn)程進(jìn)行消息同步。
可選地,檢測(cè)單元可以包括:第一獲取模塊,用于從數(shù)據(jù)庫(kù)獲取與新的告警消息對(duì)應(yīng)的上一次消息計(jì)數(shù)器;確定模塊,用于若當(dāng)前消息計(jì)數(shù)器與上一次消息計(jì)數(shù)器的值的差值大于預(yù)定閾值,則確定檢測(cè)出發(fā)生消息丟失。
根據(jù)本發(fā)明的上述實(shí)施例,同步單元可以包括:發(fā)送模塊,用于向上報(bào)新的告警消息的設(shè)備發(fā)送同步命令,其中,同步命令用于獲取設(shè)備上存儲(chǔ)的第一告警列表;讀取模塊,用于從數(shù)據(jù)庫(kù)中讀取設(shè)備的第二告警列表;比較模塊,用于比較第一告警列表和第二告警列表,確定丟失的告警消息;插入模塊,用于將丟失的告警消息插入第二告警列表,并將告警消息寫(xiě)入消息隊(duì)列。
在一個(gè)可選的實(shí)施例中,轉(zhuǎn)換單元具體用于:獲取新的告警消息的消息標(biāo)識(shí)和設(shè)備類(lèi)型,其中,設(shè)備類(lèi)型為上報(bào)新的告警消息的設(shè)備的類(lèi)型;若消息標(biāo)識(shí)是已配置的消息標(biāo)識(shí)、且在數(shù)據(jù)庫(kù)中記錄有設(shè)備類(lèi)型,則生成新的告警消息的告警對(duì)象。
在一個(gè)可選的實(shí)施例中,執(zhí)行單元包括:第二獲取模塊,用于獲取告警對(duì)象的事件類(lèi)型;增加模塊,用于在事件類(lèi)型為告警類(lèi)型的情況下,將告警對(duì)象對(duì)應(yīng)的信息增加到實(shí)時(shí)告警表中;刪除模塊,用于在事件類(lèi)型為取消類(lèi)型的情況下,將告警對(duì)象對(duì)應(yīng)的信息從實(shí)時(shí)告警表中刪除。
需要說(shuō)明的是,裝置還可以包括:第二獲取單元,用于在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,獲取新的告警消息的設(shè)備類(lèi)型和告警類(lèi)型;展示單元,用于按照設(shè)備類(lèi)型和告警類(lèi)型將新的告警消息展示在鏈路拓?fù)鋱D上。
另一種可選的,取出單元具體用于:確定告警處理模塊是否具有空閑資源;在告警處理模塊具有空閑資源的情況下,從消息隊(duì)列中取出新的告警消息。
進(jìn)一步可選地,取出單元具體用于:在新的告警消息為一條的情況下,從消息隊(duì)列中取出該新的告警消息;在新的告警消息為一條或多條的情況下,從消息隊(duì)列中取出全部或部分新的告警消息。
此處需要說(shuō)明的是,上述模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例所公開(kāi)的內(nèi)容。需要說(shuō)明的是,上述模塊作為裝置的一部分可以運(yùn)行在如圖1所示的硬件環(huán)境中,可以通過(guò)軟件實(shí)現(xiàn),也可以通過(guò)硬件實(shí)現(xiàn)。
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述消息處理方法的服務(wù)器或終端。
圖9是根據(jù)本發(fā)明實(shí)施例的一種終端的結(jié)構(gòu)框圖,如圖9所示,該終端可以包括:一個(gè)或多個(gè)(圖中僅示出一個(gè))處理器201、存儲(chǔ)器203、以及傳輸裝置205(如上述實(shí)施例中的發(fā)送裝置),如圖9所示,該終端還可以包括輸入輸出設(shè)備207。
其中,存儲(chǔ)器203可用于存儲(chǔ)軟件程序以及模塊,如本發(fā)明實(shí)施例中的消息處理方法和裝置對(duì)應(yīng)的程序指令/模塊,處理器201通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器203內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述的消息處理方法。存儲(chǔ)器203可包括高速隨機(jī)存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,如一個(gè)或者多個(gè)磁性存儲(chǔ)裝置、閃存、或者其他非易失性固態(tài)存儲(chǔ)器。在一些實(shí)例中,存儲(chǔ)器203可進(jìn)一步包括相對(duì)于處理器201遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過(guò)網(wǎng)絡(luò)連接至終端。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。
上述的傳輸裝置205用于經(jīng)由一個(gè)網(wǎng)絡(luò)接收或者發(fā)送數(shù)據(jù),還可以用于處理器與存儲(chǔ)器之間的數(shù)據(jù)傳輸。上述的網(wǎng)絡(luò)具體實(shí)例可包括有線網(wǎng)絡(luò)及無(wú)線網(wǎng)絡(luò)。在一個(gè)實(shí)例中,傳輸裝置205包括一個(gè)網(wǎng)絡(luò)適配器(Network Interface Controller,NIC),其可通過(guò)網(wǎng)線與其他網(wǎng)絡(luò)設(shè)備與路由器相連從而可與互聯(lián)網(wǎng)或局域網(wǎng)進(jìn)行通訊。在一個(gè)實(shí)例中,傳輸裝置205為射頻(Radio Frequency,RF)模塊,其用于通過(guò)無(wú)線方式與互聯(lián)網(wǎng)進(jìn)行通訊。
其中,具體地,存儲(chǔ)器203用于存儲(chǔ)應(yīng)用程序。
處理器201可以通過(guò)傳輸裝置205調(diào)用存儲(chǔ)器203存儲(chǔ)的應(yīng)用程序,以執(zhí)行下述步驟:
檢測(cè)消息隊(duì)列中是否記錄有新的告警消息,其中,消息隊(duì)列用于記錄接收到的告警消息;在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,從消息隊(duì)列中取出新的告警消息;將新的告警消息轉(zhuǎn)換為告警對(duì)象;通過(guò)告警處理模塊對(duì)告警對(duì)象執(zhí)行告警處理。
通過(guò)上述實(shí)施例,消息隊(duì)列專(zhuān)門(mén)用于存儲(chǔ)接收到的告警消息,在后臺(tái)網(wǎng)管服務(wù)器上啟動(dòng)一個(gè)進(jìn)程實(shí)時(shí)檢測(cè)消息隊(duì)列中是否有新的告警消息,在檢測(cè)到新的告警消息的情況下,從消息隊(duì)列中取出該新的告警消息,并生成該新的告警消息的告警對(duì)象,通過(guò)告警處理模塊對(duì)該告警對(duì)象進(jìn)行處理。在該實(shí)施例中,通過(guò)消息隊(duì)列將消息的接收邏輯和消息的處理邏輯進(jìn)行了解耦,也即,消息的接收和消息的處理互不影響,消息處理速度的快慢不會(huì)影響消息的接收,如告警處理模塊處理消息的速度慢,也可以將接收到的消息寫(xiě)入消息隊(duì)列,從而解決了現(xiàn)有技術(shù)中告警消息的處理速度慢導(dǎo)致消息丟失的問(wèn)題,達(dá)到了告警消息的處理速度不影響消息的接收的效果,提高了系統(tǒng)的穩(wěn)定性。
處理器201還用于執(zhí)行下述步驟:在檢測(cè)消息隊(duì)列中是否記錄有新的告警消息之前,方法還包括:接收遠(yuǎn)程設(shè)備上報(bào)的告警消息,將接收到的告警消息寫(xiě)入消息隊(duì)列;檢測(cè)消息隊(duì)列中是否記錄有新的告警消息包括:檢測(cè)消息隊(duì)列是否為空;若消息隊(duì)列不為空,則檢測(cè)出消息隊(duì)列中記錄有新的告警消息。
處理器201還用于執(zhí)行下述步驟:在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,獲取新的告警消息的當(dāng)前消息計(jì)數(shù)器;基于當(dāng)前消息計(jì)數(shù)器檢測(cè)是否發(fā)生消息丟失;在檢測(cè)出發(fā)生消息丟失的情況下,啟動(dòng)同步進(jìn)程進(jìn)行消息同步。
處理器201還用于執(zhí)行下述步驟:從數(shù)據(jù)庫(kù)獲取與新的告警消息對(duì)應(yīng)的上一次消息計(jì)數(shù)器;若當(dāng)前消息計(jì)數(shù)器與上一次消息計(jì)數(shù)器的值的差值大于預(yù)定閾值,則確定檢測(cè)出發(fā)生消息丟失。
處理器201還用于執(zhí)行下述步驟:向上報(bào)新的告警消息的設(shè)備發(fā)送同步命令,其中,同步命令用于獲取設(shè)備上存儲(chǔ)的第一告警列表;從數(shù)據(jù)庫(kù)中讀取設(shè)備的第二告警列表;比較第一告警列表和第二告警列表,確定丟失的告警消息;將丟失的告警消息插入第二告警列表,并將告警消息寫(xiě)入消息隊(duì)列。
處理器201還用于執(zhí)行下述步驟:獲取新的告警消息的消息標(biāo)識(shí)和設(shè)備類(lèi)型,其中,設(shè)備類(lèi)型為上報(bào)新的告警消息的設(shè)備的類(lèi)型;若消息標(biāo)識(shí)是已配置的消息標(biāo)識(shí)、且在數(shù)據(jù)庫(kù)中記錄有設(shè)備類(lèi)型,則生成新的告警消息的告警對(duì)象。
處理器201還用于執(zhí)行下述步驟:獲取告警對(duì)象的事件類(lèi)型;在事件類(lèi)型為告警類(lèi)型的情況下,將告警對(duì)象對(duì)應(yīng)的信息增加到實(shí)時(shí)告警表中;在事件類(lèi)型為取消類(lèi)型的情況下,將告警對(duì)象對(duì)應(yīng)的信息從實(shí)時(shí)告警表中刪除。
處理器201還用于執(zhí)行下述步驟:在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,獲取新的告警消息的設(shè)備類(lèi)型和告警類(lèi)型;按照設(shè)備類(lèi)型和告警類(lèi)型將新的告警消息展示在鏈路拓?fù)鋱D上。
處理器201還用于執(zhí)行下述步驟:確定告警處理模塊是否具有空閑資源;在告警處理模塊具有空閑資源的情況下,從消息隊(duì)列中取出新的告警消息。
處理器201還用于執(zhí)行下述步驟:在新的告警消息為一條的情況下,從消息隊(duì)列中取出該新的告警消息;在新的告警消息為一條或多條的情況下,從消息隊(duì)列中取出全部或部分新的告警消息。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例中所描述的示例,本實(shí)施例在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解,圖9所示的結(jié)構(gòu)僅為示意,終端可以是智能手機(jī)(如Android手機(jī)、iOS手機(jī)等)、平板電腦、掌上電腦以及移動(dòng)互聯(lián)網(wǎng)設(shè)備(Mobile Internet Devices,MID)、PAD等終端設(shè)備。圖9其并不對(duì)上述電子裝置的結(jié)構(gòu)造成限定。例如,終端還可包括比圖9中所示更多或者更少的組件(如網(wǎng)絡(luò)接口、顯示裝置等),或者具有與圖9所示不同的配置。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令終端設(shè)備相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:閃存盤(pán)、只讀存儲(chǔ)器(Read-Only Memory,ROM)、隨機(jī)存取器(Random Access Memory,RAM)、磁盤(pán)或光盤(pán)等。
本發(fā)明的實(shí)施例還提供了一種存儲(chǔ)介質(zhì)??蛇x地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以用于執(zhí)行消息處理方法的程序代碼。
可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以位于上述實(shí)施例所示的網(wǎng)絡(luò)中的多個(gè)網(wǎng)絡(luò)設(shè)備中的至少一個(gè)網(wǎng)絡(luò)設(shè)備上。
可選地,在本實(shí)施例中,存儲(chǔ)介質(zhì)被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:
S1,檢測(cè)消息隊(duì)列中是否記錄有新的告警消息,其中,消息隊(duì)列用于記錄接收到的告警消息;
S2,在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,從消息隊(duì)列中取出新的告警消息;
S3,將新的告警消息轉(zhuǎn)換為告警對(duì)象;
S4,通過(guò)告警處理模塊對(duì)告警對(duì)象執(zhí)行告警處理。
通過(guò)上述實(shí)施例,消息隊(duì)列專(zhuān)門(mén)用于存儲(chǔ)接收到的告警消息,在后臺(tái)網(wǎng)管服務(wù)器上啟動(dòng)一個(gè)進(jìn)程實(shí)時(shí)檢測(cè)消息隊(duì)列中是否有新的告警消息,在檢測(cè)到新的告警消息的情況下,從消息隊(duì)列中取出該新的告警消息,并生成該新的告警消息的告警對(duì)象,通過(guò)告警處理模塊對(duì)該告警對(duì)象進(jìn)行處理。在該實(shí)施例中,通過(guò)消息隊(duì)列將消息的接收邏輯和消息的處理邏輯進(jìn)行了解耦,也即,消息的接收和消息的處理互不影響,消息處理速度的快慢不會(huì)影響消息的接收,如告警處理模塊處理消息的速度慢,也可以將接收到的消息寫(xiě)入消息隊(duì)列,從而解決了現(xiàn)有技術(shù)中告警消息的處理速度慢導(dǎo)致消息丟失的問(wèn)題,達(dá)到了告警消息的處理速度不影響消息的接收的效果,提高了系統(tǒng)的穩(wěn)定性。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:在檢測(cè)消息隊(duì)列中是否記錄有新的告警消息之前,方法還包括:接收遠(yuǎn)程設(shè)備上報(bào)的告警消息,將接收到的告警消息寫(xiě)入消息隊(duì)列;檢測(cè)消息隊(duì)列中是否記錄有新的告警消息包括:檢測(cè)消息隊(duì)列是否為空;若消息隊(duì)列不為空,則檢測(cè)出消息隊(duì)列中記錄有新的告警消息。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,獲取新的告警消息的當(dāng)前消息計(jì)數(shù)器;基于當(dāng)前消息計(jì)數(shù)器檢測(cè)是否發(fā)生消息丟失;在檢測(cè)出發(fā)生消息丟失的情況下,啟動(dòng)同步進(jìn)程進(jìn)行消息同步。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:從數(shù)據(jù)庫(kù)獲取與新的告警消息對(duì)應(yīng)的上一次消息計(jì)數(shù)器;若當(dāng)前消息計(jì)數(shù)器與上一次消息計(jì)數(shù)器的值的差值大于預(yù)定閾值,則確定檢測(cè)出發(fā)生消息丟失。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:向上報(bào)新的告警消息的設(shè)備發(fā)送同步命令,其中,同步命令用于獲取設(shè)備上存儲(chǔ)的第一告警列表;從數(shù)據(jù)庫(kù)中讀取設(shè)備的第二告警列表;比較第一告警列表和第二告警列表,確定丟失的告警消息;將丟失的告警消息插入第二告警列表,并將告警消息寫(xiě)入消息隊(duì)列。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:獲取新的告警消息的消息標(biāo)識(shí)和設(shè)備類(lèi)型,其中,設(shè)備類(lèi)型為上報(bào)新的告警消息的設(shè)備的類(lèi)型;若消息標(biāo)識(shí)是已配置的消息標(biāo)識(shí)、且在數(shù)據(jù)庫(kù)中記錄有設(shè)備類(lèi)型,則生成新的告警消息的告警對(duì)象。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:獲取告警對(duì)象的事件類(lèi)型;在事件類(lèi)型為告警類(lèi)型的情況下,將告警對(duì)象對(duì)應(yīng)的信息增加到實(shí)時(shí)告警表中;在事件類(lèi)型為取消類(lèi)型的情況下,將告警對(duì)象對(duì)應(yīng)的信息從實(shí)時(shí)告警表中刪除。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:在檢測(cè)出消息隊(duì)列中記錄有新的告警消息的情況下,獲取新的告警消息的設(shè)備類(lèi)型和告警類(lèi)型;按照設(shè)備類(lèi)型和告警類(lèi)型將新的告警消息展示在鏈路拓?fù)鋱D上。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:確定告警處理模塊是否具有空閑資源;在告警處理模塊具有空閑資源的情況下,從消息隊(duì)列中取出新的告警消息。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:在新的告警消息為一條的情況下,從消息隊(duì)列中取出該新的告警消息;在新的告警消息為一條或多條的情況下,從消息隊(duì)列中取出全部或部分新的告警消息。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例中所描述的示例,本實(shí)施例在此不再贅述。
可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以包括但不限于:U盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、移動(dòng)硬盤(pán)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
上述實(shí)施例中的集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在上述計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)或多臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。
在本發(fā)明的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的終端,可通過(guò)其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。