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

Fluentbit多行过滤器如何捕获含空行日志的空msg字段?

解决Fluentbit空msg字段导致日志拆分的问题

问题根源

你的配置中multiline过滤器的规则未覆盖msg字段为空的场景,导致空msg的日志行被判定为新日志条目,而非上一条的续行;同时原规则的逻辑顺序存在混淆,未能清晰区分新日志与续行的判断条件。

修正后的配置

multiline_parsers:
  - name: multiline-parser
    type: regex
    rules:
      # 若msg以时间戳开头,视为新日志,保持起始状态
      - state: start_state
        regex: '/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/'
        next_state: start_state
      # 匹配所有其他情况(包括空字符串、空格等),视为续行
      - state: start_state
        regex: '/.*/'
        next_state: continue
pipeline:
  inputs:
    - name: tail
      path: 'path_to_log_folder'
      parser: cri # 保留原CRI解析器,确保空msg被正确捕获
  filters:
    - name: multiline
      multiline.parser: multiline-parser
      multiline.key_content: msg
  outputs: # 修正拼写错误:outouts → outputs
    - name: stdout
      match: '*'

关键调整说明

  1. 覆盖空msg场景:用/.*/作为兜底规则,匹配所有字符串(包括空字符串和仅含空格的字符串),确保空msg的日志行被识别为续行。
  2. 修正规则逻辑顺序:先判断是否为新日志(msg以时间戳开头),其余情况一律合并到上一条日志,符合常规多行日志的处理逻辑。
  3. 修复配置笔误:将outouts改为正确的outputs,避免配置失效。

验证逻辑

  • message1的空msg行会被/.*/规则匹配,进入continue状态,成功合并到上一条日志。
  • message2的所有非空msg行仍会按预期合并,不受空行场景调整的影响。

内容的提问来源于stack exchange,提问作者J.M. Kenny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 22:13:17