0

我正在尝试将日志从基本的 java maven 项目发送到远程机器上配置的 fluent-bit。Fluent-bit 然后将它们写入文件。这是我的基本 java 配置。

爪哇

private final static Logger logger = LoggerFactory.getLogger(App.class);

public static void main(String[] args) {
   for (int i = 0; ; i++) {
      logger.debug("Warn msg");
      try {
         Thread.sleep(5000);
       } catch (InterruptedException e) {
        // do nothing now
      }
   }
}

和 logback.xml

<appender name="fluentd" class="ch.qos.logback.more.appenders.DataFluentAppender">
   <remoteHost>xx.xxx.xxx.xxx</remoteHost>
   <port>7777</port>
   <encoder>
            <pattern>%message%n</pattern>
    </encoder>
</appender>

<root level="DEBUG">
    <appender-ref ref="fluentd" />
</root>

流利位配置:

td-agent-bit.conf

[INPUT]
    Name          tcp
    Listen        xx.xxx.xxx.xxx
    Port          7777
    Parsers_File  /etc/td-agent-bit/parsers.conf
    Parser        custom_parser

[OUTPUT]
    Name          file
    Match         *
    Path          /home/td-agent-bit/output.txt

解析器配置文件

[PARSER]
    Name    custom_parser
    Format  regex
    Regex   .*

应用程序运行时,我不断收到以下异常

[2018/09/27 08:29:13] [trace] [in_tcp] read()=74 pre_len=370 now_len=444

[2018/09/27 08:29:13] [debug] [in_serial] JSON 消息无效,跳过

但是当我尝试通过命令行测试配置时,它可以工作

echo '{"key 1": 10, "key 2": "YYY"}' | nc xx.xxx.xxx.xxx 7777

我没有得到任何异常,并且输出文件具有所有权限。远程机器也是基于光子操作系统的系统。

任何想法将不胜感激。

4

1 回答 1

3

所以经过一些研究和我在这里打开的票后,我发现我使用了错误的插件。

所有java配置都是正确的。只需对td-agent-bit.conf

[INPUT]
    Name          forward
    Listen        xx.xxx.xxx.xxx
    Port          7777

我们需要使用forward插件而不是tcp插件。该插件将侦听 7777 端口上的任何传入消息并将其重定向到文件。

请注意,TCP Input 插件只接受 JSON 映射作为记录,而不接受 msgpack 作为转发协议。

于 2018-10-02T10:11:12.313 回答