当前位置: 代码迷 >> 综合 >> Apache NiFi 远程Debug
  详细解决方案

Apache NiFi 远程Debug

热度:94   发布时间:2024-02-24 03:57:50.0

Apache NiFi 远程Debug

参考

https://community.cloudera.com/t5/Community-Articles/NiFi-Debugging-Tutorial/ta-p/246082

前言

? 本文档涵盖了调试的两个重要方面:调整写入NiFi应用程序日志的日志的日志级别,以及将图形调试器附加到正在运行的NiFi实例。

? 在本教程中,{NIFI_ROOT}指的是NiFi源目录的位置,即git clone或解压缩的源目录。

要求

1)Apache NiFi 源码(已编译成功,NiFi 1.8.0)。

2)IntelliJ IDEA (2019.2.3 (Ultimate Edition))。

启用调试日志

? 默认情况下,NiFi的日志级别设置为INFO,这意味着禁止设置为DEBUG及以下的日志行。如果您正在开发NiFi或对其进行故障排除,可能会发现调整日志记录级别以显示更多详细的日志记录输出很有用。如果仅对附加调试器感兴趣,则可以跳过此部分。 日志级别由logback配置文件控制,源代码编译后,该文件位于:

{NIFI_ROOT}/nifi-assembly/target/nifi-1.8.0-bin/nifi-1.8.0/conf/logback.xml

? 在此文件中,您将找到如下一段XML:

<logger name="org.apache.nifi" level="INFO"/><logger name="org.apache.nifi.processors" level="WARN"/><logger name="org.apache.nifi.processors.standard.LogAttribute" level="INFO"/><logger name="org.apache.nifi.processors.standard.LogMessage" level="INFO"/><logger name="org.apache.nifi.controller.repository.StandardProcessSession" level="WARN" />
...<logger name="com.sun.jersey.spi.container.servlet.WebComponent" level="ERROR"/><logger name="com.sun.jersey.spi.spring" level="ERROR"/><logger name="org.springframework" level="ERROR"/>

? 如果要启用特定程序包或类的调试日志记录,只需添加覆盖:

<logger name="org.apache.nifi.PACKAGE_OF_INTEREST" level="DEBUG"/> 

? 除非子包具有新的覆盖,否则它将递归地应用于所有子包。如果要在启用调试日志记录的程序包中使嘈杂的类静音,则可以添加:

 <logger name="org.apache.nifi.PACKAGE_OF_INTEREST.NoisyClass" level="WARN"/> 

? 请注意,每条日志行中都包含原始记录器/类的名称,因此您可以使用它来确定要静音的内容。如果您不知道要查找的内容,也可以将“ org.apache.nifi”的整体日志级别更改为DEBUG:

<logger name="org.apache.nifi" level="DEBUG"/> 

? 如果这样做,我建议还至少添加这两个覆盖,以避免产生大量日志输出:

<logger name="org.apache.nifi.engine.FlowEngine" level="INFO"/>
<logger name="org.apache.nifi.controller.repository" level="INFO"/>

? 完成更改后,保存并关闭此文件。 请注意,在修改logback.xml之后,您不必重新启动NiFi。几分钟后,将进行配置更改,并且记录器的行为将反映新的设置。

将调试器附加到NiFi

? 为了启用NiFI的远程调试,我们需要编辑位于此处的引导程序配置:

{NIFI_ROOT}/nifi-assembly/target/nifi-1.8.0-bin/nifi-1.8.0/conf/bootstrap.conf 

? 在您选择的文本编辑器中打开此文件,然后取消注释该行:

java.arg.debug=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

? 记下“ address = XXXX”值,在此示例中为默认值“ 8000”。这是调试器将连接到的端口。

? 通过脚本启动NiFi:

? 在目录

{NIFI_ROOT}/nifi-assembly/target/nifi-1.8.0-bin/nifi-1.8.0/bin

? 下,双击run-nifi.bat文件。

? 通过在Web浏览器中访问以下URL,验证您可以访问本地NiFi实例:

http:// localhost:8080 / nifi /

? 现在,让我们设置一个IntelliJ IDEA项目,我们将使用它来调试NiFi。

? S1: 导入Nifi Maven工程后,点击如下的:Run > Edit Configurations…:

在这里插入图片描述

弹出如下界面:
在这里插入图片描述

S2: 点击+号,选择remote。

S3: 然后根据具体情况进行配置:

? 为新配置命名,例如"nifi-remote-debug";

? 将“port”字段更改为与上面的bootstrap.conf中的address = XXXX行匹配的端口(在我的情况下为8000);

在这里插入图片描述

S4: 可选步骤:设置IntelliJ控制台以显示此配置的NiFi日志。

log file 路径:

{NIFI_ROOT}/nifi-assembly/target/nifi-1.8.0-bin/nifi-1.8.0/logs/nifi-app.log

在这里插入图片描述

S5:保存设置即可。

  相关解决方案