fluentd 根据键值创建标签

fluentd create tag based on key value

将日志从 Kubernetes 传送到 Fluentd 聚合器。

有没有办法将其中一个键值转换为标签值?例如,application_name 有键值。如果可以将其转换为标签值,则可以定向到不同的输出。

谢谢,

有一个 fluentd record_transformer 插件。 https://docs.fluentd.org/v1.0/articles/filter_record_transformer

<filter foo.bar>
  @type record_transformer
  <record>
    hostname "#{Socket.gethostname}"
    tag ${tag}
  </record>
</filter>

示例输入:{"message":"hello world!"}

示例输出:{"message":"hello world!", "hostname":"db001.internal.example.com", "tag":"foo.bar"}

记录创建后无法编辑标签。

执行此操作的方法是使用 rewrite tag filter

重新发出记录

你可以这样做:

<match kubernetes_logs>
  @type rewrite_tag_filter
  <rule>
    key application_name
    pattern (.+)
    tag 
  </rule>
</match>

就是说,这种方法使 fluentd 可以处理两倍多的记录。如果您只需要将记录定向到不同的端点,通常输出插件允许按键过滤记录。