无法将 Kubernetes 元数据作为标签添加到 FluentBit 中的 Loki 容器日志

无法将 Kubernetes 元数据作为标签添加到 FluentBit 中的 Loki 容器日志

我正在尝试使用 FluentBit、Loki 和 Grafana 收集 Kubernetes 环境中的容器日志。

我想附加 Kubernetes Pod 名称作为标签,这样当我在 Grafana 中查询日志时,就可以更容易地将日志与我的 Pod 匹配。

尽管我可以添加自定义标签,但我无法公开和附加 Kubernetes 元数据信息:

这是我的 FluentBit 配置图:

      custom_parsers.conf: |
        [PARSER]
          Name                docker_x
          Format              json
          Time_Key            time
          Time_Format         %Y-%m-%dT%H:%M:%S %z
          Decode_Field_as     escaped_utf8 log
      fluent-bit.conf: |
        [SERVICE]
          Daemon              Off
          Flush               180
          Log_Level           info
          Parsers_File        parsers.conf
          Parsers_File        custom_parsers.conf
          HTTP_Server         On
          HTTP_Listen         0.0.0.0
          HTTP_Port           2020
          Health_Check        On
          Retry_Limit         3
          scheduler.base      3
          scheduler.cap       30
        [INPUT]
          Name                tail
          Tag                 kube.*
          Exclude_Path        /var/log/containers/fluent*.log, /var/log/containers/traefik*.log
          Path                /var/log/containers/*.log
          multiline.parser    docker, cri
          Parser              docker
          DB                  /var/log/flb_scs.db
          Mem_Buf_Limit       64MB
          Buffer_Chunk_Size   6MB
          Buffer_Max_Size     6MB
          Refresh_Interval    60
          Skip_Long_Lines     On
          Skip_Empty_lines    On
        [FILTER]
          Name                kubernetes
          Match               kube.*
          Buffer_Size         0
          Kube_URL            https://kubernetes.default.svc:443
          Kube_Tag_Prefix     kube.var.log.containers.
          Merge_Log           On
          Merge_Log_Key       log_processed
          Merge_Log_Trim      On
          K8S-Logging.Parser  On
          K8S-Logging.Exclude Off
          Labels              On
        [FILTER]
          Name                grep
          Match               kube.*
          Exclude             $kubernetes['namespace_name'] kube-system
        [FILTER]
          Name                grep
          Match               *
          Exclude             $kubernetes['pod_name'] (flu|traefik).*
        [FILTER]
          Name                throttle
          Match               *
          Rate                2000
          Window              3
          Interval            30s
          Print_Status        true
        [OUTPUT]
          Name                loki
          Match               *
          Host                loki.svc.foo.bar
          Port                80
          labels              foo_bar=${FOO_BAR}, pod_name=$kubernetes['pod_name']
          auto_kubernetes_labels on

添加了自定义的“foo_bar”标签,但没有添加与 Kubernetes 相关的标签,例如“pod_name”。

知道我做错了什么吗?

答案1

我的错,我应该增加日志详细程度以便进行调试。“apiextensions.k8s.io”API 组存在权限问题,因此我必须创建服务帐户、RBAC 角色并进行绑定以获取/读取/监视命名空间和 pod。

相关内容