提取字段和整理数据
编辑提取字段和整理数据编辑
本节介绍的插件可用于提取字段并将非结构化数据解析为字段。
- dissect 过滤器
-
通过使用分隔符将非结构化事件数据提取到字段中。 dissect 过滤器不使用正则表达式,速度非常快。但是,如果数据的结构因行而异,则 grok 过滤器更适合。
例如,假设您有一个包含以下消息的日志
Apr 26 12:20:02 localhost systemd[1]: Starting system activity accounting tool...
以下配置对消息进行解析
filter { dissect { mapping => { "message" => "%{ts} %{+ts} %{+ts} %{src} %{prog}[%{pid}]: %{msg}" } } }
应用 dissect 过滤器后,事件将被解析为以下字段
{ "msg" => "Starting system activity accounting tool...", "@timestamp" => 2017-04-26T19:33:39.257Z, "src" => "localhost", "@version" => "1", "host" => "localhost.localdomain", "pid" => "1", "message" => "Apr 26 12:20:02 localhost systemd[1]: Starting system activity accounting tool...", "type" => "stdin", "prog" => "systemd", "ts" => "Apr 26 12:20:02" }
- kv 过滤器
-
解析键值对。
例如,假设您有一个包含以下键值对的日志消息
ip=1.2.3.4 error=REFUSED
以下配置将键值对解析为字段
filter { kv { } }
应用过滤器后,示例中的事件将具有以下字段
-
ip: 1.2.3.4
-
error: REFUSED
-
- grok 过滤器
-
将非结构化事件数据解析为字段。此工具非常适合 syslog 日志、Apache 和其他网络服务器日志、MySQL 日志,以及通常为人类而不是计算机使用而编写的任何日志格式。Grok 通过将文本模式组合成与您的日志匹配的内容来工作。
例如,假设您有一个包含以下消息的 HTTP 请求日志
55.3.244.1 GET /index.html 15824 0.043
以下配置将消息解析为字段
filter { grok { match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" } } }
应用过滤器后,示例中的事件将具有以下字段
-
client: 55.3.244.1
-
method: GET
-
request: /index.html
-
bytes: 15824
-
duration: 0.043
-
如果您在构建 grok 模式方面需要帮助,请尝试使用 Grok 调试器。Grok 调试器是基本许可证下的 X-Pack 功能,因此可以免费使用。