fluentd record_transformer - 将$[record]包装成额外的json对象。

问题描述 投票:0回答:1

我正在改变我消费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个回答
1
投票

你可以通过以下配置对记录进行格式化,并用所需的键进行包装

<filter gcp.logs>
  @type record_transformer
  enable_ruby true
  renew_record true
  <record>
    message ${ {data: record } }
  </record>
</filter>
© www.soinside.com 2019 - 2024. All rights reserved.