如何在流畅位Kafka输出中使用内部记录字段作为消息键?

ctehm74n  于 2022-12-26  发布在  Apache
关注(0)|答案(1)|浏览(81)

使用以下配置:

[INPUT]
    Name tail
    Path /var/log/containers/*.log
    multiline.parser docker, cri
    Tag kube.*
    Mem_Buf_Limit 5MB
    Skip_Long_Lines On

[FILTER]
    Name kubernetes
    Match kube.*
    Merge_Log On
    Keep_Log Off
    K8S-Logging.Parser On
    K8S-Logging.Exclude On

[OUTPUT]
    Name kafka
    Match kube.*
    Brokers <some-broker>
    Topics <some-topic>

FluentBit向Kafka发送容器日志,消息值如下:

{
   "@timestamp":1670628155.720578,
   "log":"<some-container-log>",
   "stream":"stdout",
   "time":"2022-12-09T23:22:35.720578536Z",
   "kubernetes":{
      "pod_name":"<...>",
      "namespace_name":"<...>",
      "pod_id":"<...>",
      "annotations":{ <...> },
      "host":"<...>",
      "container_name":"<...>",
      "docker_id":"<...>",
      "container_hash":"<...>",
      "container_image":"<...>"
   }
}

现在我希望这条消息有关键。当添加到下面的Kafka输出配置行:

Message_Key_Field stream

我看到所有消息都有键stdout,这是消息值中stream键的值,但是,当我想在JSON中使用"kubernetes"中的一个字段时,比如"pod_name",下面的任何一个都不起作用,消息以空键结束:

- Message_Key_Field kubernetes.pod_id
- Message_Key_Field kubernetes['pod_id']
- Message_Key_Field $kubernetes['pod_id']

从输出插件引用记录的内部JSON值的正确语法是什么?

dfty9e19

dfty9e191#

这应该是你的第三个选择。这对你不起作用吗?你的完整配置是什么样子的?

相关问题