天天看點

用snmp4j開發網管應用(三) -- 簡單架構

工程的位址:

https://github.com/wangzijian777/snmptool

其中包含了一些通用的工具設計

1. xml中的随機數生成文法解析器

    在資料檔案中可以使用${randomstring(5)}這樣的格式來定義一些測試資料,會被解析為一個随機的長度為5的字元串,預設還可以使用${randomint(1, 14)} 定義1到14之間的字元串,${nowtime(yyyy-mm-dd't'hh:mm:ss.sss'z' h:mm)}某一個格式的時間

2. oid 注解

    提供了oid注解和從object到pdu的解析,以及從pdu到object的解析功能。現在有oidhibernate成熟的架構可以使用,但是因為自己沒有那麼高的需求,是以沒有用到

3. 考慮了可擴充性

    資料輸入部分使用的是generator接口,預設的實作是讀取xml檔案來解析的,這裡就可以自己實作其他類型的資料輸入内容,比如可以輸入一個類檔案,然後用注解解析的辦法來得到一組資料

提供了一下功能:

1. 建立agent端,執行stratup.java, 加入參數agent 和資料檔案的位置。資料檔案為resource/datasource.xml裡邊頂一個了一個smitable的内容,這樣就能夠根據這個檔案生成一些初始的假資料,建構成為一個agent,供給網管程式通路,這時可以使用mibbrower進行walk操作:

用snmp4j開發網管應用(三) -- 簡單架構

2. 作為一個trap receiver.

執行startup.java receiver為參數,會啟動一個trapreceiver,然後可以按照3中的發送trap消息,這一部分大多數都是寫在網管管理台中的。

将會列印如下資訊:

 資訊: listened on udp:127.0.0.1/162

1.3.6.1.2.1.1.3.0====0:00:00.00

1.3.6.1.6.3.1.1.4.1.0====1.3.6.1.4.1.7569.1.2.2.25

1.3.6.1.4.1.7569.1.2.1.23.3.1.2====eduuw

1.3.6.1.4.1.7569.1.2.1.23.3.1.3====2014-06-03t20:53:00.617z 20:53

1.3.6.1.4.1.7569.1.2.1.23.3.1.4====0

1.3.6.1.4.1.7569.1.2.1.23.3.1.5====dfdwf

1.3.6.1.4.1.7569.1.2.1.23.3.1.6====sgilp

1.3.6.1.4.1.7569.1.2.1.23.3.1.7====0

1.3.6.1.4.1.7569.1.2.1.23.3.1.8====svxhe

1.3.6.1.4.1.7569.1.2.1.23.3.1.9====1

3. 發送trap消息給網管程式

執行startup.java trap 和資料檔案,會發送一個或者多個trap消息給指定的位址。預設的資料檔案在/resource/trapdata/trapdata.xml中,能夠定義發送多少個,和發送的trap的oid及其包含的内容。

目前工程中沒有包含get和walk的示例,可能以後會加入,但是這一部分就不容易寫成通用的部分了,通常都是網管程式根據自己的業務去網元上擷取資料的了。