Logstash grok 常用语法和模式速查

Logstash grok 语法速查:%{模式:字段名} 提取字段,常用模式 WORD/NUMBER/INT/FLOAT/TIMESTAMP_ISO8601/LOGLEVEL/GREEDYDATA 等。本文汇总常用模式与示例。

最佳实践
Logstash grok 常用语法和模式速查封面

grok 的基本语法是 %{模式名:目标字段名}——用预定义正则模式匹配内容并提取为字段。模式可组合成完整的一行日志格式。

最常用模式

模式 匹配内容 示例
%{WORD} 单个单词 hello
%{NUMBER} 整数或小数 42、3.14
%{INT} 整数 42
%{FLOAT} 浮点数 3.14
%{DATA} 非贪婪任意字符 任意短文本
%{GREEDYDATA} 贪婪任意字符(常放最后) 剩余全部
%{LOGLEVEL} 日志级别 INFO、ERROR
%{TIMESTAMP_ISO8601} ISO 8601 时间 2024-01-15T10:30:00+08:00
%{IP} IP 地址 192.168.1.1
%{HOSTNAME} 主机名 web-01
%{UUID} UUID 550e8400-...
%{URIPATH} URL 路径 /api/users
%{QS} 带引号的字符串 "hello"

内置组合模式

%{COMMONAPACHELOG}    # Apache/Nginx 通用访问日志
%{COMBINEDAPACHELOG}  # 带 Referer 和 UA 的完整格式
%{SYSLOGLINE}         # syslog 行

组合示例

日志行:

2024-01-15 10:30:00 INFO User 42 logged in from 192.168.1.1

grok 模式:

%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} User %{NUMBER:user_id} %{WORD:action} from %{IP:client_ip}

实用技巧

  1. 只匹配不存字段%{NUMBER} 不带冒号字段名,只消耗匹配不生成字段;
  2. 类型转换%{NUMBER:status:int} 直接存为整数;
  3. 在线调试:用 grok debug 工具(如 grokdebug.herokuapp.com)或观测云 Pipeline 在线调试快速验证模式。

观测云对照

观测云 Pipeline 内置同样的 grok 函数和预置模式库,且在控制台中提供在线调试:粘贴真实日志样本即可验证模式是否正确提取字段,无需重启任何服务。

常见问题(FAQ)

Q:GREEDYDATA 和 DATA 的区别?
A:DATA 是非贪婪匹配(尽量少匹配),GREEDYDATA 贪婪匹配(尽量多匹配)。行尾剩余内容用 GREEDYDATA。

Q:模式不匹配的日志会怎样?
A:打上 _grokparsefailure 标签,原始 message 保留,不会丢数据。

Q:特殊字符(方括号、引号)怎么匹配?
A:用反斜杠转义,如 \[;注意 Logstash 配置里反斜杠本身也要转义:^\\[

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台