【问题标题】:Can Apache NiFi configure logback.xml file to send logs to remote server over UDP?Apache NiFi 可以配置 logback.xml 文件以通过 UDP 将日志发送到远程服务器吗?
【发布时间】:2018-12-07 11:13:44
【问题描述】:

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

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

我的问题:

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

【问题讨论】:

  • 谁是 udp 消息的接收者?
  • @daggett 我的设置中的接收者是谁?一个 Graylog 服务器。 NiFi 服务器和 Graylog 服务器之间实际上存在一个网络二极管​​,因此 UDP 是唯一的选择。

标签: udp logback apache-nifi


【解决方案1】:

如何使用 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>

【讨论】:

    【解决方案2】:

    据我所知,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。

    【讨论】:

    • 谢谢 - 我担心没有开箱即用的 UDP 支持,并希望避免添加额外的依赖项。由于 TCP 不是一个选项,我需要解决这个问题。我喜欢你推荐一个额外的 NiFi 实例,但我很好奇你是否有理由推荐一个额外的实例,而不是同一实例中的不同处理器线程......这会导致问题吗?
    • 你绝对可以从同一个 NiFi 实例中跟踪日志,但它会创建一个循环循环,如果 TailFile 或 PutUDP 生成日志,那么它们会运行更多来获取自己的日志,它可能会起作用好吧
    猜你喜欢
    • 2012-05-24
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多