.NET 中的自定义 SNMP 陷阱实现

问题描述 投票:0回答:2

我需要使用 SNMP(在 .NET 中)创建一个监控机制。我认为我们将使用n软件组件来处理大部分工作。

看来我们必须使用“陷阱”从代理到服务器进行通信。我们将有许多不同的陷阱和详细说明每个陷阱的各种信息。实施自定义陷阱的最佳方法是什么?也就是说,不仅发送陷阱,而且还将描述陷阱的信息发送到我们的“snmp 管理器”的最佳方法是什么?我认为这是通过“变量绑定”来完成的。要使用“变量绑定”,我们是否需要创建自己的“企业编号”并使用“企业特定”陷阱? 我们应该实现自己的自定义 MIB,还是可以通过陷阱发送我们需要的数据(通过变量绑定)?

c# vb.net snmp snmp-trap
2个回答
4
投票

除非您想通知 5 个预定义陷阱之一(例如冷启动、热启动):是的,您必须定义一个企业特定陷阱,并且需要分配对象标识符(以及大量对象标识符)。

参数确实是在变量绑定中传递的;这些结构定义为

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 文档中编写陷阱定义。

接下来的操作取决于您使用哪个库来实现对话。嗯,软件是一个不错的选择。

顺便说一句,我宁愿发送 TRAP v2 数据包或 INFORM,而不是 TRAP v1。

© www.soinside.com 2019 - 2024. All rights reserved.