You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Fluent Bit采集的Kubernetes Job事件附加Job标签?

问题

我正在使用Fluent Bit的kubernetes_events插件直接从API Server采集Kubernetes事件,目标是将这些事件导入OpenSearch集群。核心需求是为每个事件添加上触发该事件的Kubernetes对象的标签,具体来说,对于Job事件,需要包含Job配置中定义的标签。

我尝试通过配置kubernetes_events插件和kubernetes Filter来实现,期望它能自动附加标签,但未达到预期效果。以下是我使用的ConfigMap,测试环境采用Rancher Desktop:

[SERVICE]
    flush           1
    log_level       info

[INPUT]
    name            kubernetes_events
    tag             k8s_events
    kube_url        https://kubernetes.default.svc

[FILTER]
    Name rewrite_tag
    Match k8s_events
    Rule $involvedObject['kind'] ^(Job)$ $TAG.pod.$involvedObject['name'].$involvedObject['namespace'].event false

[FILTER]
    Name kubernetes
    Buffer_Size 32MB
    K8S-Logging.Parser On
    K8S-Logging.Exclude On
    Keep_Log Off
    Match k8s_events.pod.*
    Owner_References On
    Kube_Tag_Prefix k8s_events.Job.
    Merge_Log On
    tls.verify Off
    Use_Kubelet true

# Output for job events
[OUTPUT]
    name            stdout
    match           k8s_events.Job.*
    format          json_lines

输出的事件为JSON格式,但未包含Job的相关标签。请问我遗漏了什么配置?


解决方案

你的配置存在几个关键问题,导致无法正确获取Job的标签:

  • Tag匹配规则混乱
    rewrite_tag生成的tag格式和后续filter、output的匹配规则完全不兼容,导致Job事件根本没经过kubernetes filter处理。需要修正rewrite_tag的规则,生成统一的前缀:

    [FILTER]
        Name rewrite_tag
        Match k8s_events
        Rule $involvedObject['kind'] ^(Job)$ k8s_events.Job.$involvedObject['name'].$involvedObject['namespace'] false
    
  • Kubernetes Filter核心配置缺失

    • Use_Kubelet true会让插件从kubelet获取元数据,但Job的元数据需要直接从API Server拉取,需改为Use_Kubelet false并指定Kube_URL;
    • 缺少Labels On参数,这是开启附加目标对象标签的关键开关;
    • 修正Match规则与rewrite_tag生成的tag前缀一致。
      调整后的kubernetes filter配置:
    [FILTER]
        Name kubernetes
        Buffer_Size 32MB
        K8S-Logging.Parser On
        K8S-Logging.Exclude On
        Keep_Log Off
        Match k8s_events.Job.*
        Owner_References On
        Kube_Tag_Prefix k8s_events.Job.
        Merge_Log On
        tls.verify Off
        Use_Kubelet false
        Kube_URL https://kubernetes.default.svc
        Labels On
    
  • Output匹配规则保持一致
    保持Output的match k8s_events.Job.*即可,确保能匹配到经过处理的Job事件。


修正后的完整ConfigMap
[SERVICE]
    flush           1
    log_level       info

[INPUT]
    name            kubernetes_events
    tag             k8s_events
    kube_url        https://kubernetes.default.svc

[FILTER]
    Name rewrite_tag
    Match k8s_events
    Rule $involvedObject['kind'] ^(Job)$ k8s_events.Job.$involvedObject['name'].$involvedObject['namespace'] false

[FILTER]
    Name kubernetes
    Buffer_Size 32MB
    K8S-Logging.Parser On
    K8S-Logging.Exclude On
    Keep_Log Off
    Match k8s_events.Job.*
    Owner_References On
    Kube_Tag_Prefix k8s_events.Job.
    Merge_Log On
    tls.verify Off
    Use_Kubelet false
    Kube_URL https://kubernetes.default.svc
    Labels On

# Output for job events
[OUTPUT]
    name            stdout
    match           k8s_events.Job.*
    format          json_lines

内容的提问来源于stack exchange,提问作者rav2001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 23:53:21