Apache NiFi是否可以配置logback.xml文件以通过UDP将日志发送到远程服务器



我有一个Apache NiFi实例,需要将消息记录到远程Graylog服务器。我希望nifi-app.log、nifi-bootstrap.log和nifi-user.log的输出都发送到此服务器,以及它们的默认本地策略。

我正试图通过UDP将日志发送到服务器,因为网络配置需要UDP连接。

我的问题:

  1. logback支持通过UDP发送日志吗
  2. 如果是,该配置是什么样子的
  3. 有没有更好的方法可以配置Apache NiFi通过UDP发送日志

据我所知,Logback没有提供开箱即用的UDP附加程序,因此您需要为某些UDP附加程序添加必要的JAR,可能是logstash的一个:

https://github.com/logstash/logstash-logback-encoder

这可能会奏效,但将JAR添加到NiFi的lib目录有点危险,因为它们最终会出现在所有NiFi处理器的类路径上,并可能产生意想不到的后果。

其他选项。。。

1( 使用TCP

logback已经提供了套接字附加程序:https://logback.qos.ch/manual/appenders.html#SocketAppender

2( 使用一个单独的NiFi实例,该实例用于监视第一个NiFi示例的日志。流将是TailFile->PutUDP,其中TailFile指向第一个nifi的nifi-app.log。

使用LogMessage处理器&确保所有LogMessage日志条目都转到特定的文件(flow events.log(&然后跟踪它?

<appender name="EVENTS_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${org.apache.nifi.bootstrap.config.log.dir}/flow-events.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/flow-events_%d.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
</encoder>
</appender>
<logger name="org.apache.nifi.processors.standard.LogMessage" level="INFO" additivity="false">
<appender-ref ref="EVENTS_FILE" />
</logger>

最新更新