日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenNMS全接触-事件及通知(九)

發布時間:2023/12/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenNMS全接触-事件及通知(九) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?在上一篇文章OpenNMS全接觸-事件及通知(八)中,介紹了OpenNMS在收到受管設備發出的SNMP Trap之后,如何將收到的SNMP Trap與eventconf.xml文件中定義的事件(event)進行匹配,從而觸發該事件的發生。主要是引入了<mask>標簽元素。在此基礎上,OpenNMS還提供了根據SNMP Trap帶上來的varbinds對SNMP Trap進一步過濾。

我們還是以ciscoC3800SysAggregateStatusChange事件為例,當Cisco C3800的Aggregate狀態發生變化時,便會發出SNMP Trap,并觸發該事件。然而該事件的嚴重度如何?該狀態變化是“好”(比如由不可操作變為可操作)還是“壞”(由可操作變為不可操作)?其實這個信息在發上來的SNMP Trap中就已經包含了,其對應的就是parm中的第三個參數,即trap的嚴重度等級。

OpenNMS從1.1版本開始,就加入了根據varbinds對SNMP trap進行過濾的功能。這也是通過在<mask>中實現的,我們可以重寫OpenNMS全接觸-事件及通知(八)中提到的event中的mask元素:

?

  • <mask>?
  • ??<maskelement>?
  • ????<mename>id</mename>?
  • ????<mevalue>.1.3.6.1.4.1.9.9.70.2</mevalue>?
  • ??</maskelement>?
  • ??<maskelement>?
  • ????<mename>generic</mename>?
  • ????<mevalue>6</mevalue>?
  • ??</maskelement>?
  • ??<maskelement>?
  • ????<mename>specific</mename>?
  • ????<mevalue>17</mevalue>?
  • ??</maskelement>?
  • ??<varbind>?
  • ????<vbnumber>3</vbnumber>?
  • ????<vbvalue>3</vbvalue>?
  • ??</varbind>?
  • </mask>?
  • 在原來的基礎上加入了<varbind>元素,加入該元素后,那么該匹配條件就更嚴格,在原來的基礎上,即OID為.1.3.6.1.4.1.9.9.70.2,且generic為6,而specific為17,又加入了對第三個參數即trap serverity只

    關注等級為3的snmp trap,當然這里的等級3是由設備在發送snmp trap時確定的。比如這里的3代表著Cisco給定的等級“主要的”。

    當然,我們還可以通過多個varbinds對snmp trap進行過濾。例如:

    ?

  • <varbind>?
  • ??<vbnumber>3</vbnumber>?
  • ??<vbvalue>2</vbvalue>?
  • ??<vbvalue>3</vbvalue>?
  • </varbind>?
  • <varbind>?
  • ??<vbnumber>4</vbnumber>?
  • ??<vbvalue>2</vbvalue>?
  • ??<vbvalue>3</vbvalue>?
  • </varbind>?
  • 該過濾條件將匹配出第3個參數為2或者3,第4個參數為2或者3的snmp trap。

    從OpenNMS1.6版本開始,還加入了通過正則表達式對varbinds的值進行過濾,只要在表達式之前加~

    ?

  • <varbind>?
  • ??<vbnumber>1</vbnumber>?
  • ??<vbvalue>~[Dd]own</vbvalue>?
  • </varbind>?
  • 該過濾條件將過濾出第1個參數取值為“Down”或者“down"。

    另外還可以通過通配符%進行快速前綴匹配,如:

    ?

  • <varbind>?
  • ??<vbnumber>1</vbnumber>?
  • ??<vbvalue>Error:%</vbvalue>?
  • </varbind>?
  • 這將會匹配出所有第一個參數以Error:開頭的所有值。

    很多MIB庫對某些OID的值進行了編碼,即分配了一些特定值,例如snmp agent對ifAdminStatus及ifOperStatus就進行了編碼處理:1代表Up,2代表Down。

    而因為OpenNMS沒有自帶的Mib Browser,所以OpenNMS是將這種映射關系定義在event的事件描述中的。只要event配置正確,也可以在event的logmsg中將snmp trap中帶的數值轉換為更有意義的字符描述信息。

    讓我們以Cisco?HSRP 的狀態變化為例,(該trap對應的OID .1.3.6.1.4.1.9.9.106.2 generic 6 and specific 1),對應的事件為uei.opennms.org/vendor/Cisco/traps/cHsrpStateChange。

    該trap中包含有一個varbind,其名稱為cHsrpGrpStandbyState,其取值范圍為從1到6,含義如下:

    initial(1) learn(2) listen(3) speak(4) standby(5) active(6).

    該事件的原始定義如下:

    ?

  • <event>?
  • ?<mask>?
  • ??<maskelement>?
  • ???<mename>id</mename>?
  • ???<mevalue>.1.3.6.1.4.1.9.9.106.2</mevalue>?
  • ??</maskelement>?
  • ??<maskelement>?
  • ???<mename>generic</mename>?
  • ???<mevalue>6</mevalue>?
  • ??</maskelement>?
  • ??<maskelement>?
  • ???<mename>specific</mename>?
  • ???<mevalue>1</mevalue>?
  • ??</maskelement>?
  • ?</mask>?
  • ?<uei>uei.opennms.org/vendor/Cisco/traps/cHsrpStateChange</uei>?
  • ?<event-label>CISCO-HSRP-MIB?defined?trap?event:?cHsrpStateChange</event-label>?
  • ?<descr><p>A?cHsrpStateChange?notification?is?sent?when?a?
  • ?cHsrpGrpStandbyState?transitions?to?either?active?or?
  • ?standby?state,?or?leaves?active?or?standby?state.?There?
  • ?will?be?only?one?notification?issued?when?the?state?change?
  • ?is?from?standby?to?active?and?vice?versa.</p><table>?
  • ?<tr><td><b>?
  • ?cHsrpGrpStandbyState</b></td><td>%parm[#1]%?
  • ?</td><td><p;>?
  • ?initial(1)?learn(2)?listen(3)?speak(4)?standby(5)?active(6)</p>?
  • ?</td;></tr></table>?
  • ?</descr>?
  • ?<logmsg?dest='logndisplay'><p>Cisco?Event:?HSRP?State?Change.</p></logmsg>?
  • ?<severity>Minor</severity>?
  • ?</event>?
  • 現在我們要求在事件的logmsg中看到狀態變化的值,即要求包含有cHsrpGrpStandbyState的當前值。而直接將其取值如2,顯示在logmsg中是沒有多大意義的,除非用戶自己知道

    這個數字的含義。那么現在我們就可以通過varbind解碼的方法將這個值映射為其字符串描述即learn。

    ?

  • <event>?
  • ?<mask>?
  • ??<maskelement>?
  • ???<mename>id</mename>?
  • ???<mevalue>.1.3.6.1.4.1.9.9.106.2</mevalue>?
  • ??</maskelement>?
  • ??<maskelement>?
  • ???<mename>generic</mename>?
  • ???<mevalue>6</mevalue>?
  • ??</maskelement>?
  • ??<maskelement>?
  • ???<mename>specific</mename>?
  • ???<mevalue>1</mevalue>?
  • ??</maskelement>?
  • ?</mask>?
  • ?<uei>uei.opennms.org/vendor/Cisco/traps/cHsrpStateChange</uei>?
  • ?<event-label>CISCO-HSRP-MIB?defined?trap?event:?cHsrpStateChange</event-label>?
  • ?<descr><p>A?cHsrpStateChange?notification?is?sent?when?a?
  • ?cHsrpGrpStandbyState?transitions?to?either?active?or?
  • ?standby?state,?or?leaves?active?or?standby?state.?There?
  • ?will?be?only?one?notification?issued?when?the?state?change?
  • ?is?from?standby?to?active?and?vice?versa.</p><table>?
  • ?<tr><td><b>?
  • ?cHsrpGrpStandbyState</b></td><td>%parm[#1]%?
  • ?</td><td><p;>?
  • ?initial(1)?learn(2)?listen(3)?speak(4)?standby(5)?active(6)</p>?
  • ?</td;></tr></table>?
  • ?</descr>?
  • ?<logmsg?dest='logndisplay'><p>Cisco?Event:?HSRP?State?Change?to?%parm[#1]%.</p></logmsg>?
  • ?<severity>Minor</severity>?
  • ?<varbindsdecode>?
  • ?<parmid>parm[#1]</parmid>?
  • ?<decode?varbindvalue="1"?varbinddecodedstring="initial"/>?
  • ?<decode?varbindvalue="2"?varbinddecodedstring="learn"/>?
  • ?<decode?varbindvalue="3"?varbinddecodedstring="listen"/>?
  • ?<decode?varbindvalue="4"?varbinddecodedstring="speak"/>?
  • ?<decode?varbindvalue="5"?varbinddecodedstring="standby"/>?
  • ?<decode?varbindvalue="6"?varbinddecodedstring="active"/>?
  • ?</varbindsdecode>?
  • </event>?
  • 那么在該定義中,第一個參數varbind將通過<varbindsdecode>定義的映射關系將其取值替換為字符描述。例如,如果該snmp trap的第一個參數其值為6的話,則在logmsg中將顯示:

    <p>Cisco?Event:?HSRP?State?Change?to?active</p>

    在后續文章中將介紹如何根據MIB庫中定義的trap轉換為eventconf.xml文件中的事件。

    ?

    轉載于:https://blog.51cto.com/njulinq/291192

    總結

    以上是生活随笔為你收集整理的OpenNMS全接触-事件及通知(九)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。