【问题标题】:Process nested JSON with Fluentd使用 Fluentd 处理嵌套的 JSON
【发布时间】:2016-02-25 08:25:31
【问题描述】:

使用 Fluentd 日志管道,输入为:

{"event" : {"name" : "toto", "date" : 14....11}}

如何将字段 event.date 转换为有效日期?

我试过了:

<filter *.*> @type record_transformer <record> event.date ${Time.at(event.date).strftime('%Y-%m-%dT%H:%M:%S')} </record> </filter>

但这会增加一个字段“event.date”:/

【问题讨论】:

    标签: json fluentd


    【解决方案1】:

    已经有一段时间了,但我来到这里只是对如何做到这一点有了一点想法。似乎在较新的版本中,一些 JSON 处理已成为 fluentd 核心的一部分,并且根据文档:

    https://docs.fluentd.org/v1.0/articles/filter_parser

    这里是:

    <filter foo.bar>
      @type parser
      key_name log
      reserve_data true
      remove_key_name_field true
      <parse>
        @type json
      </parse>
    </filter>
    

    应该可以解决问题。

    我们有:

    • key_name - 要查看的字段的名称
    • reserve_data - 是否保留外部 JSON 中的字段
    • remove_key_name_field - 是否删除包含嵌套 JSON 的字段。

    【讨论】:

      【解决方案2】:

      您必须启用 rubby:

      <filter **>
        @type record_transformer
        enable_ruby
        <record>
          event_date ${time.strftime('%Y-%m-%dT%H:%M:%S')}
      
        </record>
      
      </filter>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-06
        • 1970-01-01
        • 2014-04-15
        • 1970-01-01
        • 2016-07-16
        • 1970-01-01
        • 2021-07-21
        相关资源
        最近更新 更多