2009-10-02 77 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