我的设备非SNMP启用。我有API来获取它的状态,并为它实现SNMP代理。我使用SNMP4j做到了这一点,可以回答GET请求并发送陷阱。
我遇到的问题是有几(2)台此类设备需要使用我的程序的相同的实例进行监控。到目前为止,我为MIB中的每个设备添加了一个分支,例如1.3.6.1.4.1.PEN.devices.1.xxx
和1.3.6.1.4.1.PEN.devices.2.xxx
,但是1 - 那是丑陋的,2-I不能为每个设备提供MIB但是整个系统的单个MIB具有冗余信息并且也很丑陋;)
我不确定MIB Table
对象是否适用于此,但它听起来不太合适(我有固定数量的设备)。我还看到RFC 3413 §3.5描述了SNMP代理转发器,但我不确定它是我需要实现的(我的设备没有启用SNMP),而且SNMP4j ProxyForwarder
似乎映射了MIB到另一个MIB。
使用SNMP4j,我实现了CommandResponder
接口的processPDU()
方法,我希望如果监控软件配置为使用我的程序作为"代理转发器" ,CommandResponderEvent
中可能有一些信息可供我发送正确的响应PDU(虽然我没有找到任何这样的东西,但我可能错过了一些东西)。
我可以启动我的代理的几个实例(每个设备一个),但我不是因为稀疏的资源原因。 解决这个问题的最佳方法是什么?表?代理?其他?不可能?
修改
我发现有些NNM在GET请求中添加了额外的变量绑定来指示要寻址的设备(类似SNMP代理),而其他一些NNM则通过更改GET中的社区来映射设备。这些可行的选择吗?哪一个最常见/可接受?
答案 0 :(得分:1)
在这里使用一个简单的表来显示表和行的一般概念......
这是如何检索示例表(带有索引和另外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
通过GET访问上面的一部分:
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