【问题标题】:fluentd record_transformer - wrapping $[record] in additional json objectsfluentd record_transformer - 将 $[record] 包装在额外的 json 对象中
【发布时间】:2025-12-05 04:20:18
【问题描述】:

我正在改变我使用 GCP 日志的方式,从直接接收 PubSub 订阅推送到我的日志分析工具中,改为使用 Fluentd 拉取 PubSub 订阅,然后将日志推送到日志分析工具中。问题是现在我没有在日志数据周围获得一些额外的 json 包装器对象,我需要将它们放回原处,否则更改会破坏我们所有的仪表板和预定的搜索。

我正在尝试使用record_transformer 添加包装对象,但不清楚如何执行此操作。

给定这样的消息:

{"foo": "bar"}

我需要它像这样出来:

{
  "message": {
     "data": {
        "foo": "bar"
      }
   }
}

(我不需要它漂亮的格式,我只是为了可读性而这样做。)

我试过这个:

<filter gcp.logs>
  @type record_transformer
  <record>
    message data $[record]
  </record>
</filter>

但这并不能实现我所希望的 json 对象的嵌套。

任何指向正确方向的指针将不胜感激。

【问题讨论】:

    标签: fluentd


    【解决方案1】:

    您可以使用以下配置格式化记录并使用所需的密钥包装它

    <filter gcp.logs>
      @type record_transformer
      enable_ruby true
      renew_record true
      <record>
        message ${ {data: record } }
      </record>
    </filter>
    

    【讨论】:

      最近更新 更多