在Fluentd中解析包含JSON的日志

时间:2019-08-27 13:30:58

标签: ruby kubernetes fluentd

我正在使用Fluentd跟踪k8s中的容器日志。我正在使用in_tail输入插件来跟踪容器日志,使用regexp parse插件进行解析以提取相关日志。日志是一个json,必须将其提取并发送到输出插件。我正在使用filter_parser解析器使用json插件进行提取。

    <source>
      @type tail
      tag proxy.*
      ...
      read_from_head true
      <parse>
       @type regexp
       expression \[proxy\]\[(?<type>(record|replay))\](?<log>.*)
      </parse>
    </source>

    <filter proxy.**>
      @type parser
      key_name log
      <parse>
        @type json
      </parse>
    </filter>

示例日志行:

[proxy][record]{"test":123}

这似乎产生一条记录:

record={"type"=>"record", "log"=>"{\\\"test\\\":123}"}

使用config运行安装程序时,看起来log正则表达式组中的值已被转义(两次?);由于该原因,过滤器部分中的json解析器无法解析它。

我怀疑这与regexp插件和/或in_tail的编写方式有关。可能会选择log作为字符串的值,并在将其传递之前将其转义。

还是我的正则表达式缺少了什么?

有人知道为什么会这样吗?可能的解决办法是什么?

0 个答案:

没有答案