提取字段和数据整理
编辑提取字段和数据整理
编辑本节介绍的插件可用于提取字段并将非结构化数据解析为字段。
- 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 和其他 Web 服务器日志、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 功能,因此免费使用。