【问题标题】:Nifi processor to route flows based on changeable list of regexNifi 处理器根据可变的正则表达式列表路由流
【发布时间】:2019-05-04 00:46:38
【问题描述】:

我正在尝试使用 Nifi 作为 syslog 的路由器,基于与 syslog.body 匹配的正则表达式列表(注意,这只是一个概念证明,如果需要,我可以更改任何部分)

思考过程是,通过一个单独的系统(现在,vi 和一个文本文件 ????),管理员可以定义一个标准列表(每个标准的正则表达式格式似乎很合理),如果匹配,将导致系统日志消息被发送到特定的单独系统(例如,所有关键审计数据(与正则表达式列表匹配)都被发送到审计系统,所有其他数据都被发送到标准日志存储

我知道这可以通过内容处理器在 Route 上完成,但属性是在处理器启动之前配置的,管理员每次需要进行编辑时都必须停止处理器

我想定期(自动)加载正则表达式列表并更新处理器属性

我不介意这一切都是在 Nifi 中本地完成的(但为了优雅和保存正在编写的外部应用程序更可取)或通过由 python 脚本或其他东西驱动的 REST API 调用(或者 Nifi 可以发送REST 调用自身?!)

我很欣赏处理器属性在运行时无法更新,因此必须停止更新,但这很好,因为队列会在短时间内缓冲。也许检查文件是否已更改可以避免无缘无故的中断,而不是定期更新,我可以稍后解决这个问题。

谢谢

克里斯

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

    我认为最简单的解决方案是使用ScanContent,这是一个处理器,它指定磁盘上的字典文件,其中包含搜索词列表并监视文件的更改,并在该事件中重新加载。然后,处理器将搜索词应用于传入流文件的内容,并允许您根据匹配对它们进行路由。虽然此处理器不支持将正则表达式作为字典术语,但您可以对代码进行轻微修改或将其用作具有这些更改的自定义处理器的基线。

    如果这对您不起作用,有许多 LookupService 实现展示了控制器框架如何监视和读取 CSV、XML、属性文件等,以提供更新的 key/ 映射值对。这些也可以作为使用加载的术语/模式构建更复杂的扫描/匹配流程的基础。

    最后,如果您必须依赖直接处理器属性更新,您可以使用 NiFi API 调用编写脚本来停止、更新和重新启动处理器,以便近乎实时地完成。要确定这些 API,请访问 API documentation 或通过浏览器中的 UI 执行所需的任务,并使用开发人员工具来捕获正在发出的 HTTP 请求。

    【讨论】:

    • 改变扫描内容实际上是一个很好的呼声,谢谢,我会调查的。
    • 如果您愿意这样做,通过 PR 回馈该功能肯定会对社区有所帮助。谢谢。
    • 先看看我有多成功! ? 但是如果它有效,我会的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多