一種可配置的Trap告警解析處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種Trap告警處理方法。特別是涉及一種可配置的Trap告警解析處理方法。
【背景技術(shù)】
[0002]snmp Trap是網(wǎng)管產(chǎn)品采集告警的一種常用的方式。網(wǎng)管產(chǎn)品的告警數(shù)據(jù)需要包含告警名稱(chēng),告警類(lèi)型,告警級(jí)別,故障設(shè)備,告警定位信息,告警描述,告警時(shí)間等信息。Trap告警解析程序的功能就是將2進(jìn)制的Trap報(bào)文解析成文本,然后從中提取各種數(shù)據(jù),并對(duì)其進(jìn)行翻譯關(guān)聯(lián),最終形成告警報(bào)文。
[0003]Trap報(bào)文種類(lèi)眾多,格式多樣,跟實(shí)際應(yīng)用的告警報(bào)文之間的轉(zhuǎn)化方式種類(lèi)繁多,因此,開(kāi)發(fā)一個(gè)統(tǒng)一的可配置的,普遍適用的解析器是必要的。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問(wèn)題是,提供一種通過(guò)以數(shù)據(jù)庫(kù)配置和枚舉映射為主體,動(dòng)態(tài)庫(kù)為補(bǔ)充方式的可配置的Trap告警解析處理方法。
[0005]本發(fā)明所采用的技術(shù)方案是:一種可配置的Trap告警解析處理方法,通過(guò)以數(shù)據(jù)庫(kù)配置和枚舉映射為主體,動(dòng)態(tài)庫(kù)為補(bǔ)充的方式,實(shí)現(xiàn)可配置的Trap數(shù)據(jù)包解析,所述數(shù)據(jù)庫(kù)配置包含一張Trap定義表,解析程序啟動(dòng)的時(shí)候,加載所述的定義表,當(dāng)收到Trap數(shù)據(jù)包的時(shí)候,首先將2進(jìn)制的Trap數(shù)據(jù)包按照協(xié)議解析成文本格式,其中包含ip地址,Trap的OID和變量列表,然后,跟據(jù)報(bào)文的Trap的OID,找到Trap定義表的解析規(guī)則,解析變量列表,生成初級(jí)告警報(bào)文,最后,調(diào)用再解析策略,將初級(jí)告警報(bào)文轉(zhuǎn)化為最終報(bào)文,發(fā)送到對(duì)應(yīng)的數(shù)據(jù)處理模塊。
[0006]本發(fā)明的一種可配置的Trap告警解析處理方法,包括如下步驟:
[0007]I)初始化,并接收Trap數(shù)據(jù)包,所述的初始化包括:將告警定義表的數(shù)據(jù)加載到內(nèi)存,加載所有支持的特殊解析所用到的動(dòng)態(tài)庫(kù)和函數(shù),形成包含動(dòng)態(tài)庫(kù)名、函數(shù)名和函數(shù)指針的動(dòng)態(tài)庫(kù)鏈表,加載映射策略到內(nèi)存中,形成包含映射策略名和映射名值對(duì)列表的映射策略鏈表,以及啟動(dòng)Trap數(shù)據(jù)包的循環(huán)收取功能;
[0008]2)將2進(jìn)制的Trap數(shù)據(jù)包解析成文本格式,并根據(jù)Trap數(shù)據(jù)中的Trap的OID查詢(xún)告警定義表,查詢(xún)到相應(yīng)的數(shù)據(jù);
[0009]3)根據(jù)步驟2)查詢(xún)出的告警名稱(chēng)、設(shè)備標(biāo)識(shí)、告警類(lèi)型、Trap類(lèi)型、告警級(jí)別、告警對(duì)象、告警描述和關(guān)鍵變量字段的配置,從Trap數(shù)據(jù)包的變量組中提取相應(yīng)的數(shù)據(jù),完成對(duì)字段的解析和處理,形成基本告警信息;
[0010]4)根據(jù)步驟2)查詢(xún)出的映射策略字段,檢查映射策略字段是否為空,為空,進(jìn)入特殊解析策略流程,非空,則按照字段包含的策略名稱(chēng),查找對(duì)應(yīng)的映射策略組,遍歷映射策略組,按照映射策略組中的映射關(guān)系,對(duì)步驟3)形成的基本告警信息進(jìn)行處理,所有字段處理完成之后,進(jìn)入特殊解析策略流程;
[0011]5)動(dòng)態(tài)庫(kù)實(shí)現(xiàn)特殊解析策略,特殊解析策略主要針對(duì)特殊功能需求,包括某一個(gè)變量包含多種信息,需要對(duì)字符串進(jìn)行再解析,某些字段使用數(shù)字編碼,需要對(duì)應(yīng)的算法來(lái)解析這些數(shù)字編碼,具體運(yùn)行是:
[0012]根據(jù)步驟2)查詢(xún)出的動(dòng)態(tài)庫(kù)配置字段,檢查動(dòng)態(tài)庫(kù)配置字段是否為空,為空,這個(gè)Trap數(shù)據(jù)包的解析結(jié)束,非空,則根據(jù)動(dòng)態(tài)庫(kù)配置字段的存儲(chǔ)的動(dòng)態(tài)庫(kù)名和函數(shù)名,在步驟I)中所述的動(dòng)態(tài)庫(kù)鏈表中查找相應(yīng)的鏈表節(jié)點(diǎn),調(diào)用鏈表節(jié)點(diǎn)中的函數(shù)指針指向的函數(shù)對(duì)上一個(gè)步驟的處理結(jié)果進(jìn)行處理,完成特殊解析策略,這個(gè)Trap數(shù)據(jù)包的解析結(jié)束,將解析后的數(shù)據(jù)傳到消息服務(wù),返回步驟I)開(kāi)始下一個(gè)Trap數(shù)據(jù)包的解析。
[0013]步驟I)所述的Trap數(shù)據(jù)包包含的信息有:數(shù)據(jù)包的源地址,收包時(shí)間,包長(zhǎng),Trap的0ID,變量鍵值對(duì)列表配置告警定義表。
[0014]步驟I)所述的告警定義表包括有:Trap編號(hào)、Trap的0ID、告警解析類(lèi)型、Trap名稱(chēng)、告警名稱(chēng)、設(shè)備標(biāo)識(shí)、告警類(lèi)型、Trap類(lèi)型、告警級(jí)別、告警對(duì)象、告警描述、關(guān)鍵變量、映射策略和動(dòng)態(tài)庫(kù)配置,其中,
[0015]Trap編號(hào):定義Trap的一個(gè)流水號(hào)
[0016]Trap的OID:告警標(biāo)識(shí)告警的OID
[0017]告警解析類(lèi)型:0 —需要組合OID生成新的Trap ;1 一不需要組合Trap的OID
[0018]Trap名稱(chēng):如果告警解析類(lèi)型為0,此處配置的Trap的變量包含能夠進(jìn)一步區(qū)分告警的字段序號(hào)
[0019]告警名稱(chēng):Trap數(shù)據(jù)包中包含告警名稱(chēng)的變量序號(hào)
[0020]設(shè)備標(biāo)識(shí):Trap數(shù)據(jù)包中包含設(shè)備標(biāo)識(shí)的變量序號(hào)
[0021]告警類(lèi)型:Trap數(shù)據(jù)包中包含告警的類(lèi)型的變量序號(hào),包括有鏈路告警,溫度告警,端口告警
[0022]Trap類(lèi)型:Trap數(shù)據(jù)包中包含Trap類(lèi)型的變量序號(hào),Trap類(lèi)型包含:普通告警、恢復(fù)告警
[0023]告警級(jí)別:Trap數(shù)據(jù)包中包含告警級(jí)別的變量序號(hào),告警級(jí)別包含:緊急、主要、次要、警告、不確定
[0024]告警對(duì)象:Trap數(shù)據(jù)包中包含告警對(duì)象的變量序號(hào)
[0025]告警描述:Trap數(shù)據(jù)包中包含告警描述的變量序號(hào)
[0026]關(guān)鍵變量:Trap數(shù)據(jù)包中包含關(guān)鍵變量的變量序號(hào)
[0027]映射策略:存儲(chǔ)映射規(guī)則名稱(chēng),一個(gè)映射關(guān)系包含若干個(gè)名值對(duì),所述的名值對(duì)中:名指名稱(chēng),內(nèi)容是:字段名+ +原始值,值指數(shù)值,內(nèi)容是:目標(biāo)值。
[0028]動(dòng)態(tài)庫(kù)配置:此處填寫(xiě)動(dòng)態(tài)庫(kù)名和函數(shù)名。
[0029]步驟2)所述的查詢(xún)包括:檢查記錄的告警解析類(lèi)型,當(dāng)告警解析類(lèi)型為非0,進(jìn)入變量解析流程;為0,則根據(jù)Trap名稱(chēng)字段存儲(chǔ)的變量序號(hào),在Trap數(shù)據(jù)包包含的變量組中找到相應(yīng)序號(hào)的變量值,拼組出新的Trap的0ID,然后根據(jù)新的0ID,查找告警定義表,找到這個(gè)OID對(duì)應(yīng)的定義表記錄,包括:告警名稱(chēng)、設(shè)備標(biāo)識(shí)、告警類(lèi)型、Trap類(lèi)型、告警級(jí)別、告警對(duì)象、告警描述、關(guān)鍵變量、映射策略和動(dòng)態(tài)庫(kù)配置。
[0030]步驟3)所述的對(duì)字段的解析和處理,是根據(jù)所述告警名稱(chēng)、設(shè)備標(biāo)識(shí)、告警類(lèi)型、Trap類(lèi)型、告警級(jí)別、告警對(duì)象、告警描述和關(guān)鍵變量字段的內(nèi)容來(lái)完成的,這些內(nèi)容包含文字和若干數(shù)字#’組合,其中數(shù)字對(duì)應(yīng)的是Trap數(shù)據(jù)包中相應(yīng)的變量序號(hào),采用替換的方式,將數(shù)字#’處的內(nèi)容替換為T(mén)rap數(shù)據(jù)包中相應(yīng)序號(hào)的變量的值,當(dāng)所有變量都替換完成,變量解析流程結(jié)束,進(jìn)入枚舉替換策略流程。
[0031]步驟4)所述的映射關(guān)系,是映射策略字段存儲(chǔ)的是映射策略的名字,根據(jù)映射策略的名字,查找出映射用的名值對(duì)列表,根據(jù)這名值對(duì)列表,對(duì)步驟3)的解析結(jié)果進(jìn)行處理,跟名值對(duì)列表中名稱(chēng)的相匹配的字段內(nèi)容替換成對(duì)應(yīng)的名值對(duì)中的數(shù)值。
[0032]本發(fā)明的一種可配置的Trap告警解析處理方法,用一個(gè)主程序?qū)崿F(xiàn)了對(duì)幾乎所有廠(chǎng)家的各類(lèi)型設(shè)備Trap的支持。程序開(kāi)發(fā)完成后,只需要使用工程手段,增加Trap定義表的配置,就可以實(shí)現(xiàn)對(duì)于大部分新類(lèi)型的Trap的支持。只有對(duì)于一些需要特殊方式解析的Trap報(bào)文,才需要通過(guò)再解析策略來(lái)處理,而這也需要很少的開(kāi)發(fā)量。因此,這種設(shè)計(jì)大大縮減了開(kāi)發(fā)和維護(hù)成本。
【附圖說(shuō)明】
[0033]圖1是本發(fā)明中告警定義表跟Trap數(shù)據(jù)包之間的關(guān)系圖;
[0034]圖2是本發(fā)明可配置的Trap告警解析處理方法流程圖。
【具體實(shí)施方式】
[0035]下面結(jié)合實(shí)施例和附圖對(duì)本發(fā)明的一種可配置的Trap告警解析處理方法做出詳細(xì)說(shuō)明。
[0036]—種可配置的Trap告警解析處理方法,通過(guò)以數(shù)據(jù)庫(kù)配置和枚舉映射為主體,動(dòng)態(tài)庫(kù)為補(bǔ)充的方式,實(shí)現(xiàn)可配置的Trap數(shù)據(jù)包解析,所述數(shù)據(jù)庫(kù)配置包含一張Trap定義表,它的作用是按照Trap oid來(lái)配置解析規(guī)則。解析程序啟動(dòng)的時(shí)候,加載所述的Trap定義表,當(dāng)收到Trap數(shù)據(jù)包的時(shí)候,首先將2進(jìn)制的Trap數(shù)據(jù)包按照協(xié)議,解析成文本格式,其中包含ip地址,Trap的OID和變量列表等幾個(gè)部分。然后,跟據(jù)報(bào)文的Trap的OID,找到Trap定義表的解析規(guī)則,解析變量列表,生成初級(jí)告警報(bào)文,最后,調(diào)用再解析策略,將初級(jí)告警報(bào)文轉(zhuǎn)化為最終報(bào)文,發(fā)送到其他對(duì)應(yīng)的數(shù)據(jù)處理模塊。
[0037]本發(fā)明的一種可配置的Trap告警解析處理方法,具體包括如下步驟:
[0038]I)初始化,并接收Trap數(shù)據(jù)包;
[0039]所述的初始化包括:將告警定義表的數(shù)據(jù)加載到內(nèi)存,加載所有支持的特殊解析所用到的動(dòng)態(tài)庫(kù)和函數(shù),形成包含動(dòng)態(tài)庫(kù)名、函數(shù)名和函數(shù)指針的動(dòng)態(tài)庫(kù)鏈表,加載映射策略到內(nèi)存中,形成包含映射策略名和映射名值對(duì)列表的映射策略鏈表,以及啟動(dòng)Trap數(shù)據(jù)包的循環(huán)收取功能;
[0040]Trap編號(hào)、Trap的0ID、告警解析類(lèi)型、Trap名稱(chēng)、告警名稱(chēng)、設(shè)備標(biāo)識(shí)、告警類(lèi)型、Trap類(lèi)型、告警級(jí)別、告警對(duì)象、告警描述、關(guān)鍵變量、映射策略和動(dòng)態(tài)庫(kù)配置,其中,
[0041 ] Trap編號(hào):定義Trap的一個(gè)流水號(hào)
[0042]Trap的OID:告警標(biāo)識(shí)告警的OID
[0043]告警解析類(lèi)型:0 —需要組合OID生成新的Trap ;1 一不需要組合Trap的OID
[0044]Trap名稱(chēng):如果告警解析類(lèi)型為0,此處配置的Trap的變量包含能夠進(jìn)一步區(qū)分告警的字段序號(hào)
[0045]告警名稱(chēng):Trap數(shù)據(jù)包中包含告警名稱(chēng)的變量序號(hào)
[0046]設(shè)備標(biāo)識(shí):Trap數(shù)據(jù)包中包含設(shè)備標(biāo)識(shí)的變量序號(hào)
[0047]告警類(lèi)型:Trap數(shù)據(jù)包中包含告警的類(lèi)型的變量序號(hào),包括有鏈路告警,溫度告警,端口告警
[0048]Trap類(lèi)型:Trap數(shù)據(jù)包中包含Trap類(lèi)型的變量序號(hào),Trap類(lèi)型包含:普通告警、恢復(fù)告警
[0049]告警級(jí)別:Trap數(shù)據(jù)包中包含告警級(jí)別的變量序號(hào),告警級(jí)別包含:緊急、主要、次要、警告、不確定
[0050]告警對(duì)象:Trap數(shù)據(jù)包中包含告警對(duì)象的變量序號(hào)
[0051]告警描述:Trap數(shù)據(jù)包