从 Kubernetes 元数据中提取字段

问题描述

我有一个由 Rancher 检测的 minikube kubernetes 集群。有可能通过 fluentd 从容器中收集日志。我想在 Grafana loki 中查看我的日志,因此我创建了另一个 fluentd 实例,它将日志(来自 Rancher 的 fluentd)发送到 loki。 收到的消息中有一个 kubernetes 字段,我会将其提取到字段中,例如:在检测到的字段下,最好有 kubernetes.container_name、kubernetes.container_image ... 等等。

enter image description here

这是我的流畅配置

<source>
    @type forward
    tag kubernetes.*
</source>


<match kubernetes.**>
    @type copy

    <store>
        @type loki
        url "http://loki:3100"
        extra_labels {"env":"dev"}
        flush_interval 10s
        flush_at_shutdown true
        buffer_chunk_limit 1m
    </store>

    <store>
        @type stdout
    </store>
</match>

<label @FLUENT_LOG> 
<match fluent.**>
  @type null
</match>
</label>

这是我试图从 kubernetes 字段中提取这些值的内容

<filter kubernetes**>
      @type record_transformer
      enable_ruby
      remove_keys kubernetes,docker

      <record>
        app ${ record.dig("kubernetes","labels","app") }
        job ${ record.dig("kubernetes","app") }
        namespace ${ record.dig("kubernetes","namespace_name") }
        pod ${ record.dig("kubernetes","pod_name") }
        container ${ record.dig("kubernetes","container_name") }
      </record>
    </filter>

但不幸的是,这些字段将始终为空,并且不会在 Loki 中显示。有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)