Filebeat 如何用正则判断字符串以数字开头?

Filebeat 的条件判断用正则 ^[0-9] 或 ^\\d 匹配"以数字开头"的字符串,配合 processors 里的 drop_event 或 add_fields 实现条件处理。本文给出具体配置示例与常见写法错误。

最佳实践
Filebeat 如何用正则判断字符串以数字开头?封面

在 Filebeat 的 processor 条件里用 regexp 匹配:regexp: {message: "^[0-9]"}——^ 锚定行首,[0-9](或 \\d)表示数字字符。

典型用法:丢弃以数字开头的行

processors:
  - drop_event:
      when:
        regexp:
          message: "^[0-9]"

典型用法:只保留以数字开头的行

processors:
  - drop_event:
      when:
        not:
          regexp:
            message: "^\\d"

典型用法:多行合并(把"不以数字开头的行"并入上一行)

堆栈跟踪等场景,日期/数字开头的行才是新日志:

parsers:
  - multiline:
      type: pattern
      pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'   # 日期开头算新行
      negate: true
      match: after

写法注意

  • YAML 里反斜杠注意转义:双引号字符串中 \\d,单引号中 \d
  • ^[0-9] 只判断"第一个字符是数字";要"整行是纯数字"用 ^[0-9]+$
  • Filebeat 的 when 条件还有 equalscontainsstarts_with 等——只判断开头其实是 starts_with 的活,但"以数字开头"必须正则

观测云对照

观测云 DataKit 的多行采集直接在控制台配置"行首匹配正则"(如日期格式),条件丢弃用 Pipeline 的 if match(message, "^[0-9]") { drop() } 一行搞定。

常见问题(FAQ)

Q:regexp 匹配不到带空格的行? 行首有空格时 ^ 后还有空格——先用 ^\\s*[0-9] 或 trim 处理。

Q:能同时判断"以数字开头且包含 ERROR"?and 组合多个条件。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台