grok

grok 命令使用 Grok 模式解析一个文本字段,并将提取的结果附加到搜索结果中。

语法

grok 命令的语法如下:

grok <field> <pattern>

参数

grok 命令支持以下参数。

参数 必需/可选 描述
<field> 必需 要解析的文本字段。
<pattern> 必需 用于从指定文本字段提取新字段的 Grok 模式。如果新字段名已存在,它将覆盖原始字段。

示例 1:创建新字段

以下查询展示了如何使用 grok 命令为每个文档创建一个新字段 hosthost 字段捕获 email 字段中 @ 符号后的主机名。解析空字段会返回空字符串:

source=accounts
| grok email '.+@%{HOSTNAME:host}'
| fields email, host

该查询返回以下结果:

../../../../_images/grok-1.png

示例 2:覆盖现有字段

以下查询展示了如何使用 grok 命令覆盖现有的 address 字段,移除其中的街道号码:

source=accounts
| grok address '%{NUMBER} %{GREEDYDATA:address}'
| fields address

该查询返回以下结果:

../../../../_images/grok-2.png

示例 3:使用 grok 解析日志

以下查询解析原始日志:

source=apache
| grok message '%{COMMONAPACHELOG}'
| fields COMMONAPACHELOG, timestamp, response, bytes

该查询返回以下结果:

COMMONAPACHELOG timestamp response bytes
177.95.8.74 - upton5450 [28/Sep/2022:10:15:57 -0700] "HEAD /e-business/mindshare HTTP/1.0" 404 19927 28/Sep/2022:10:15:57 -0700 404 19927
127.45.152.6 - pouros8756 [28/Sep/2022:10:15:57 -0700] "GET /architectures/convergence/niches/mindshare HTTP/1.0" 100 28722 28/Sep/2022:10:15:57 -0700 100 28722
118.223.210.105 - - [28/Sep/2022:10:15:57 -0700] "PATCH /strategize/out-of-the-box HTTP/1.0" 401 27439 28/Sep/2022:10:15:57 -0700 401 27439
210.204.15.104 - - [28/Sep/2022:10:15:57 -0700] "POST /users HTTP/1.1" 301 9481 28/Sep/2022:10:15:57 -0700 301 9481

限制

grok 命令有以下限制:

  • grok 命令与 parse 命令具有相同的限制