2009-10-02 37 views
3

我需要使用SNMP(.NET)創建監視機制。我想我們將使用nsoftware component來處理大部分工作。在.NET中自定義SNMP陷阱實現

看來我們必須使用'陷阱'來從代理向服務器進行通信。我們將有許多不同的陷阱和各種信息詳述每個陷阱。實施自定義陷阱的最佳方式是什麼?也就是說,不僅要發送陷阱,還要將描述陷阱的信息發送給我們的「snmp manager」,最好的方法是什麼?我認爲這是通過「變量綁定」完成的。要使用「變量綁定」,我們是否需要創建自己的「企業編號」並使用「enterpriseSpecific」陷阱?我們應該實現自己的自定義MIB嗎?還是我們只需要發送我們需要的數據和陷阱(通過變量綁定)?

回答

4

除非您想通知5個預定義的陷阱之一(例如冷啓動,熱啓動):是的,您必須定義enterpriseSpecific陷阱,並且您需要分配對象標識符(以及大量的對象標識符) 。

參數實際上是在變量綁定中傳輸的;這些是結構定義爲

VarBind ::= 
     SEQUENCE { 
      name ObjectName, 
      value ObjectSyntax 
     } 

VarBindList ::= SEQUENCE OF VarBind 

ObjectName ::= OBJECT IDENTIFIER 
ObjectSyntax ::= CHOICE { 
    simple SimpleSyntax, 
    application-wide ApplicationSyntax 
} 

SimpleSyntax ::= CHOICE { 
    number INTEGER, 
    string OCTET STRING, 
    object OBJECT IDENTIFIER, 
    empty NULL 
} 

ApplicationSyntax ::= CHOICE { 
     address NetworkAddress, 
     counter Counter, 
     gauge Gauge, 
     ticks TimeTicks, 
     arbitrary Opaque 
} 

你以某種方式需要告訴你的圖書館名稱和價值是什麼;該庫應提供API以支持各種可用的數據類型作爲值。請注意,變量「名稱」也是對象標識符。

1

我建議你先確定你的代理將數據發送回服務器/監視器的情況。

然後,您需要決定如何區分這些情況(使用不同的ID或打包不同的變量綁定)。

現在在一張紙上寫下幾個包並開始在MIB文檔中創建陷阱定義。

下一步取決於您使用哪個庫來實現對話。那麼,'nsoftware one是一個不錯的選擇。

順便說一句,我寧願發出TRAP v2數據包或INFORM而不是TRAP v1。

問候,

萊克斯李 http://sharpsnmplib.codeplex.com