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

标签 c# vb.net snmp snmp-trap

我需要使用 SNMP(在 .NET 中)创建一个监控机制。我想我们会使用 nsoftware component处理大部分工作。

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

最佳答案

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

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

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
}

您需要以某种方式告诉您的图书馆名称和值(value)是什么;库应该提供 API 来支持作为值可用的各种数据类型。请注意,变量“名称”又是对象标识符。

关于c# - .NET 中的自定义 SNMP 陷阱实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1511965/

相关文章:

c# - asp.net mvc 父 subview ,父 View 更新 subview

c# - 在新实体中加载导航属性的最佳方法

vb.net - 无法移动 vb.net 中 tablelayoutpanel 中的控件

asp.net - 删除 SQL 更新中 WHERE 之前的最后一个逗号

linux - 如何向 bash 脚本添加线程?

SNMP MIB开发工具

c# - 要连接到 Git,Ruby 会比 c# 有优势吗?

c# - 没有端点在 https ://监听

.net - 为 WM_MOUSEWHEEL 设置 WindowsHookEx

printing - 如何以编程方式访问打印机的墨水量?