当前位置: 首页 > 知识库问答 >
问题:

使用一个SNMP代理监控同一设备的多个实例

冷翼
2023-03-14

我有未启用SNMP的设备。我有API来获取其状态,并正在为其实现SNMP代理。我使用SNMP4j做到了这一点,并且可以回答GET请求并发送陷阱。

我的问题是,有几个(2)这样的设备来监控我的程序的同一个实例。到目前为止,我为MIB中的每个设备添加了一个分支,如1.3.6.1.4.1。PEN。devices.1.xxx1.3.6.1.4.1。PEN。devices.2.xxx,但1-这很丑陋,2-我不能为每个设备提供一个MIB,但为整个系统提供一个MIB,其中包含冗余信息,这也很丑陋;)

我不确定MIBTable对象是否适合,但它听起来不像是要走的路(我有固定数量的设备)。我还看到RFC 3413§3.5描述了SNMP代理转发器,但我不确定它是我需要实现的(我的设备未启用SNMP),SNMP4jProxyForwarder似乎将一个MIB映射到另一个MIB。

使用SNMP4j,我实现了CommandResponder接口的processPDU()方法,我希望如果监控软件配置为将我的程序用作“代理转发器”,CommandResponderEvent中可能有一些信息可供我发送正确的响应PDU(虽然我没有找到任何此类信息,但我可能遗漏了一些信息)。

我可以启动我的代理的多个实例(每个设备一个),但出于资源稀少的原因,我宁愿不启动。解决这个问题的最佳方法是什么?桌子代理另外不可能?

编辑:

我发现一些NNM在GET请求中添加了一个额外的变量绑定来指示要寻址的设备(类似SNMP代理),而另一些NNM通过更改GET中的社区来映射设备。这些选项可行吗?哪一个是最常见/可接受的?

共有1个答案

饶曦之
2023-03-14

在这里使用一个简单的表来显示表和行的一般概念。。。

这是如何检索示例表(带有一个索引和另外2列)。也许您的每个设备都将是您自己表中的一行(在您自己的列中包含一堆数据)

snmptable  -M +.  -m +ALL -v 2c -c public  -Ci  myhost   SNMPv2-MIB::sysORTable
SNMP table: SNMPv2-MIB::sysORTable

 index                                        sysORID                                              sysORDescr  sysORUpTime
     1          SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1         The MIB for Message Processing and Dispatching. 0:0:00:00.33
     2       SNMP-USER-BASED-SM-MIB::usmMIBCompliance         The MIB for Message Processing and Dispatching. 0:0:00:00.33

走那张桌子:

snmpwalk   -M +.  -m +ALL -v 2c -c public  myhost  SNMPv2-MIB::sysORTable
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (33) 0:00:00.33
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (33) 0:00:00.33 

步行进入上述部分:

snmpwalk   -M +.  -m +ALL -v 2c -c public  myhost  SNMPv2-MIB::sysORDescr.2
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for SNMPv2 entities

通过获取访问上述内容的一部分:

snmpget   -M +.  -m +ALL -v 2c -c public  myhost  SNMPv2-MIB::sysORDescr.2
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for SNMPv2 entities

编辑:要查看此OID如何适合树,请查看。。。

snmptranslate -M+. -m +ALL    1.3.6.1.2.1.1
SNMPv2-MIB::system
snmptranslate -M+. -m +ALL    1.3.6.1.2.1.1.9
SNMPv2-MIB::sysORTable
snmptranslate -M+. -m +ALL    1.3.6.1.2.1.1.9.1
SNMPv2-MIB::sysOREntry
snmptranslate -M+. -m +ALL    1.3.6.1.2.1.1.9.1.3
SNMPv2-MIB::sysORDescr
snmptranslate -M+. -m +ALL    1.3.6.1.2.1.1.9.1.3.2
SNMPv2-MIB::sysORDescr.2
 类似资料:
  • 例如,我可以启动两个程序侦听端口371。第二个没有任何问题地启动并接收传入连接,而第一个没有。一旦最后开始的进程终止,第一个接收它们。 假设这是Windows(XP)行为,它怎么可能是安全的行为呢?这意味着人们可以“过载”任何已经侦听的端口,而不是获得通常的“地址已经在使用”错误消息,并简单地绕过防火墙,规则只是说“允许端口371上的任何传入TCP连接”。

  • 本文向大家介绍使用Python实现一个简单的项目监控,包括了使用Python实现一个简单的项目监控的使用技巧和注意事项,需要的朋友参考一下 在公司里做的一个接口系统,主要是对接第三方的系统接口,所以,这个系统里会和很多其他公司的项目交互。随之而来一个很蛋疼的问题,这么多公司的接口,不同公司接口的稳定性差别很大,访问量大的时候,有的不怎么行的接口就各种出错了。 这个接口系统刚刚开发不久,整个系统中,

  • 是否有方法创建登录用户范围的注册id。我有一个应用程序,允许用户以不同的用户身份登录(例如一个用户作为学生,另一个用户作为家长)。用户可以在用户之间切换。这种情况有点类似于gmail应用程序,可以同时登录多个电子邮件ID。 问题是我们什么时候打电话 它将给出该应用程序实例的设备id。因此,如果我要针对登录的特定用户,我不能。 我可以实现以用户为目标的一种方法是显式地将用户id作为数据发送,在我的情

  • 对不起,如果这是一个微不足道的问题,我是新的指南。假设我有下面这个类: 然后在其他地方我想做: 我希望有两个“MyClass”实例,一个名为“foo ”,一个名为“bar ”(也就是说,它们中的每一个都有一个不同的依赖实例)。我如何将这两个实例添加到我的注入器中,如何用“injector.getInstance”检索它们中的每一个? 我不想为每个可能的依赖项创建一个“MyClass”的子类。 谢谢

  • 我对SNMP代理实现有一些基本问题,其中一些问题可能也无效,但请让我知道 是否有任何方法可以从SNMP Manager中找到代理支持的SNMP版本

  • python 怎么实现监控电脑是否有usb或其他可移动设备插入,最好也能检测手机插入。 用来在办公室里防止usb设备插入内部电脑里、 试过是做了一个pyqt的程序,然后开机后读取当前盘符,并保存下来,如果出现新的盘符就报错然后提醒用户拔掉,但是这样显然是有bug。 国内暂时没有特别靠谱的解决方法。