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

如何移除Fluent-Bit发送至Slack日志中的timestamp字段?

解决Fluent-Bit发送Slack日志时自动添加timestamp字段的问题

问题说明

在搭载CRI运行时的K8s集群中部署Fluent-Bit,将容器日志转发到Slack频道时,Slack收到的日志会自动带上timestamp字段(格式类似1681315742.016981904),且日志内容被封装在log字段中,尝试多种Filter和Parser配置都无法移除这个自动添加的timestamp。

解决方案

要解决这个问题,需要从过滤字段和日志解析两个环节调整配置,同时优化Slack输出的格式:

1. 添加Modify过滤器删除timestamp字段

Fluent-Bit的Slack输出插件默认会自动注入timestamp字段,我们可以用modify过滤器显式移除它。

修改filter-kubernetes.conf,添加以下配置:

[FILTER]
    Name    modify
    Match   *
    Remove  timestamp

2. 修正CRI日志Parser配置

你的Parser存在两个问题:一是名字为cc但Input指定用cri,二是同时设置Format regex和Format cri会导致冲突,另外需要关闭Time_Keep避免保留原始时间字段。

修改parsers.conf为:

[PARSER]
    Name          cri
    Format        regex
    Regex         ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>[^ ]*) (?<message>.*)$
    Time_Key      time
    Time_Format   %Y-%m-%dT%H:%M:%S.%L%z
    Time_Keep     Off
  • Time_Keep Off:解析后不会保留原始的time字段,避免日志中出现重复时间信息
  • 统一Parser名字为cri,和Input配置中的Parser cri对应

3. 优化Slack输出格式

默认Slack输出会以JSON数组格式发送,我们可以指定输出为纯文本,并直接引用解析后的message字段,让日志更整洁。

修改output-syslog.conf为:

[OUTPUT]
    Name               slack
    Match              *
    webhook            [你的Slack Webhook链接]
    Format             text
    Template           {{.message}}
  • Format text:指定输出为纯文本格式
  • Template {{.message}}:直接输出解析后的日志内容(即原始日志里的请求信息)

修改后的完整ConfigMap配置

apiVersion: v1
kind: ConfigMap
metadata:
  name: fluent-bit-config
  namespace: logging1
  labels:
    k8s-app: fluent-bit
data:
  fluent-bit.conf: |
    [SERVICE]
        Flush         2
        Log_Level     info
        Daemon        off
        Parsers_File  parsers.conf
        HTTP_Server   On
        HTTP_Listen   0.0.0.0
        HTTP_Port     2020
 
    @INCLUDE input-kubernetes.conf
    @INCLUDE filter-kubernetes.conf
    @INCLUDE output-syslog.conf
 
  input-kubernetes.conf: |
    [INPUT]
        Name              tail
        Tag               kube.*
        Path              /var/log/containers/*
        Parser            cri
        DB                /var/log/flb_kube.db
        Mem_Buf_Limit     5MB
        Skip_Long_Lines   On

  filter-kubernetes.conf: |
    [FILTER]
        Name    modify
        Match   *
        Remove  timestamp

  output-syslog.conf: |
    [OUTPUT]
        Name               slack
        Match              *
        webhook            [你的Slack Webhook链接]
        Format             text
        Template           {{.message}}
        
 
  parsers.conf: |
    [PARSER]
        Name          cri
        Format        regex
        Regex         ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>[^ ]*) (?<message>.*)$
        Time_Key      time
        Time_Format   %Y-%m-%dT%H:%M:%S.%L%z
        Time_Keep     Off

验证结果

应用修改后的ConfigMap并重启Fluent-Bit Pod后,Slack收到的日志会变成原始的容器日志内容:

10.244.0.1 - - [12/Apr/2023 16:09:02] "GET / HTTP/1.1" 200 -

不再包含自动添加的timestamp字段和多余的log封装结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:57:49