Fluent Bit 中文文档
  • Fluent Bit 中文文档
  • 关于
    • Fluent Bit 是什么?
    • Fluent Bit 简要历史
    • Fluentd & Fluent Bit
    • 协议
  • 概念
    • 核心概念
    • 缓冲
    • 数据管道
      • 输入
      • 解析器
      • 过滤器
      • 缓冲
      • 路由
      • 输出
  • 安装
    • 升级说明
    • 平台支持
    • 依赖
    • 源码安装
      • 下载源码
      • 构建和安装
      • 以静态配置构建
    • Linux 软件包
      • Amazon Linux
      • Redhat / CentOS
      • Debian
      • Ubuntu
      • 树莓派
    • Docker
    • Kubernetes
    • Windows
  • 管理
    • 配置 Fluent Bit
      • 格式与模式
      • 配置文件
      • 变量
      • 命令
      • 上游服务负载均衡
      • 单位
    • 安全性
    • 缓冲与存储
    • 积压
    • 调度与重试
    • 内存管理
    • 监控
    • 内部状态导出/信号
  • 数据管道
    • 输入插件
      • Dummy
      • Memory Metics
      • Standard Input
      • Systemd
      • tail
    • 解析器
      • JSON
      • Regular Expression
      • LTSV
      • Logfmt
    • 过滤器
      • Grep
      • Kubernetes
      • Rewrite Tag
      • Modify
      • Nest
    • 输出插件
      • Counter
      • Elasticsearch
      • File
      • FlowCounter
      • HTTP
      • Kafka
      • NULL
      • PostgreSQL
      • Standard Output
      • TCP & TLS
  • 流处理
    • 简介
    • 总览
    • 快速开始
      • Fluent Bit + SQL
      • Check Keys and NULL values
      • Hands On! 101
  • FLUENT BIT FOR DEVELOPERS
    • C Library API
    • 手动提取记录
    • Golang 输出插件
Powered by GitBook
On this page

Was this helpful?

  1. 数据管道
  2. 解析器

Regular Expression

PreviousJSONNextLTSV

Last updated 4 years ago

Was this helpful?

regex 正则表达式解析器使用自定义的 Ruby 正则表达式,使用名称捕获来定义哪些内容属于哪个字段名。

Fluent Bit 使用 Ruby 模式的 正则表达式库,您可以使用以下 Web 编辑器来测试您的表达式:

重要提示: 如果您使用的是 输入插件,请不要尝试在正则表达式中添加多行支持,因为每行都作为单独的实例进行处理。而是使用 支持的多行功能。

注意: 了解正则表达式的工作原理超出了本内容的范围

从配置的角度来看,当 format 配置项设置为 regex 时,Regex 配置项也必须存在。

以下解析器配置示例提供了可应用于 Apache HTTP Server 日志记录的规则:

[PARSER]
    Name   apache
    Format regex
    Regex  ^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*?)(?: +\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$
    Time_Key time
    Time_Format %d/%b/%Y:%H:%M:%S %z

例如,使用以下 Apache HTTP Server 日志记录:

192.168.2.20 - - [29/Jul/2015:10:27:10 -0300] "GET /cgi-bin/try/ HTTP/1.0" 200 3395

以上内容没有为 Fluent Bit 提供结构化消息,但是启用适当的解析器后,我们可以对其进行结构化表示:

[1154104030, {"host"=>"192.168.2.20",
              "user"=>"-",
              "method"=>"GET",
              "path"=>"/cgi-bin/try/",
              "code"=>"200",
              "size"=>"3395",
              "referer"=>"",
              "agent"=>""
              }
]

一个常见的陷阱是,字段名中不能使用字母,数字和下划线以外的字符。例如,像 (?<user-name>.*) 之类的字段名将由于包含无效字符(-)而导致错误。

为了理解,学习和测试像上述示例一样的正则表达式,建议您尝试如下 Ruby 正则表达式编辑器:

http://rubular.com/r/X7BH0M4Ivm
Onigmo
http://rubular.com/
tail
Tail Multiline