提取字段和整理数据

编辑

提取字段和整理数据编辑

本节介绍的插件可用于提取字段并将非结构化数据解析为字段。

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 功能,因此可以免费使用