Snmp 陷阱接收器作为 Apache Nifi 中的自定义处理器

Snmp trap receiver as a custom processor in Apache Nifi

Objective:- 寻找一个选项来使用 SNMP 陷阱接收机制作为 Apache Nifi 中的自定义处理器。

查看了参考资料,例如如何在 Nifi 中创建自定义处理器 (Apache docs and youtube videos), Nifi GetSNMP(含AbstractSNMPProcessor)、ListenSysLog、GetFile等源码

有一个使用 SNMP4J 库的简单 (java code) SNMPTrap 接收器,可以使用基于 UDP 或 TCP 的端口侦听特定地址。然后在发生陷阱时(可以通过 SNMP4J 库的简单 Java 代码模拟)可以打印 PDU 详细信息。

现在尝试在 Nifi 中将此代码作为自定义处理器编写时,不确定将我的监听机制放在哪里,然后处理实际的 PDU 部分。 有点打击这里。

更多详情:-

GetSNMP 处理器讨论特定的 OID 并使用它我们可以选择 GET 或 Walk 策略来获取信息。在这里(对于我的 objective)寻找一个选项,其中 Nifi 服务器是 运行,并希望从 Nifi 是 运行 的特定系统中获取 SNMP 陷阱。对于我的 objective,没有获得扩展 GetSNMP 代码的上下文。

在ListenSyslogProcessor中,有一个阻塞队列机制。从中我无法得出在 ip 地址上侦听陷阱以及如何准确使用 ProcessContext,Nifi 自定义处理器的 onTrigger 方法的 ProcessSession 选项。

欢迎任何意见...

一个可能的解决方案:-

无法在 Apache Nifi 中创建自定义处理器来接收 SNMP 陷阱。其他事情是可能的,我将在这里说明。这可能对其他人有一些帮助。

  1. Java code
  2. 无变化
  3. 使用 Nifi 的 ExecuteProcess 处理器 运行 上述 Java 代码。
  4. 成功后,结果将推送到 Nifi Flow 中的其他组件。

实际上尝试使用 linux 命令(如 net-snmp、snmptrapd)捕获 SNMP 陷阱。这些选项实际上并没有捕获 SNMP 陷阱,通过 Java 代码陷阱发送器进行了测试,然后使用来自在线资源的命令生成了陷阱。

如果您有更好的想法,请分享。