PDU pdu = new PDU();
pdu.setType(PDU.SET);

pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.100.1.1"), new Counter64(System.currentTimeMillis())));
pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.100.2.1"), new OctetString("some string")));

TransportMapping transport = null;
Snmp snmp = null;

try {
    transport = new DefaultUdpTransportMapping();
    transport.listen();

    snmp = new Snmp(transport);
    snmp.send(pdu, getCommunityTarget());
} catch (Exception e) {
    // error occurred
}

这就是我发送SNMP陷阱以引起警报的方式。我将在SNMP代理中设置一个可变性,然后在MIB浏览器中浏览它。我想知道,如果将PDU类型设置为pdu.trap,该怎么办。它在端口162而不是161上工作,我看不到它MIB浏览器,而是在陷阱接收器中。有什么区别?使用pdu.trap的目的是什么?我的经纪人如何抓住它?提出和清除警报的最佳做法是什么?

有帮助吗?

解决方案 2

在实施SNMP实体时,通常最好实现所谓的“陷阱定向的投票”概念,而不是简单的“陷阱发送者”。对于后者可以使用的SNMP4J,可以使用第一个SNMP4J代理。这也是Apache 2开源许可证的许可。

由于陷阱可能会在网络上丢失,但陷阱定向的播放方法具有许多优势,尽管它需要更多(很少)来实施代理部分。

关于原始问题:

  • 发送集合PDU时,您要求命令响应者(代理)更改有关其实体的一些信息。
  • 在发送陷阱或更好的通知PDU时,您要向命令生成器(管理器)通知事件。借助陷阱定向的播放概念,命令生成器还将定期在 *Lastchanged对象上定期发送获取请求(例如,每5个截止点),以有效地检测命令响应者MIB的某些(症状)子树的数据更改。如果检测到更改(通过通知PDU或投票,则命令生成器从Comamnd响应器请求更改的数据。

其他提示

区别在于角色:设置由经理对代理执行,而陷阱是相反的。基本SNMP4J仅支持SNMP管理器的实现。它 也可以实施代理的某些方面,但不是微不足道的。不过,很难说出您实际上要实施的这两个中的哪一个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top