我有一个Apache NiFi实例,需要将消息记录到远程Graylog服务器。我希望将输出到nifi-app.log,nifi-bootstrap.log和nifi-user.log的所有输出以及它们的默认本地策略发送到此服务器。
由于网络配置需要UDP连接,我正在尝试通过UDP将日志发送到服务器。
我的问题:
答案 0 :(得分:3)
据我所知,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。
答案 1 :(得分:0)
使用 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>