调试 grok 表达式

编辑

您可以在 Kibana 的Grok 调试器中构建和调试 grok 模式,然后再将其用于您的数据处理管道。Grok 是一种模式匹配语法,可用于解析任意文本并将其结构化。Grok 擅长解析 syslog、apache 和其他 Web 服务器日志、mysql 日志,以及通常任何为人类阅读而编写的日志格式。

Elasticsearch 运行时字段、Elasticsearch grok 摄取处理器 和 Logstash grok 过滤器 都支持 Grok 模式。有关语法,请参阅 Grokking grok

Elastic Stack 附带 120 多个可重用的 grok 模式。有关模式的完整列表,请参阅 Elasticsearch grok 模式Logstash grok 模式

由于 Elasticsearch 和 Logstash 共享相同的 grok 实现和模式库,因此您在 Grok 调试器 中创建的任何 grok 模式都可以在 Elasticsearch 和 Logstash 中工作。

开始使用

编辑

此示例将引导您使用 Grok 调试器。此工具在 Kibana 中自动启用。

如果您正在使用 Elastic Stack 安全功能,您必须拥有 manage_pipeline 权限才能使用 Grok 调试器。

  1. 通过使用导航菜单或全局搜索字段导航到开发工具页面来找到Grok 调试器
  2. 示例数据中,输入一条代表您要解析的数据的消息。例如

    55.3.244.1 GET /index.html 15824 0.043
  3. Grok 模式中,输入您要应用于数据的 grok 模式。

    要解析此示例中的日志行,请使用

    %{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}
  4. 点击模拟

    您将看到应用 grok 模式后产生的模拟事件。

    Grok Debugger

测试自定义模式

编辑

如果默认的 grok 模式字典不包含您需要的模式,您可以使用 Grok 调试器 定义、测试和调试自定义模式。

您在 Grok 调试器 中输入的自定义模式不会保存。自定义模式仅在当前调试会话中可用,并且没有副作用。

请按照此示例定义自定义模式。

  1. 示例数据中,输入以下示例消息

    Jan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<[email protected]>
  2. 输入此 grok 模式

    %{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{MSG:syslog_message}

    请注意,grok 模式引用了名为 POSTFIX_QUEUEIDMSG 的自定义模式。

  3. 展开自定义模式,并为要在 grok 表达式中使用的自定义模式输入模式定义。您必须在单独的行上指定每个模式定义。

    对于此示例,您必须为 POSTFIX_QUEUEIDMSG 指定模式定义

    POSTFIX_QUEUEID [0-9A-F]{10,11}
    MSG message-id=<%{GREEDYDATA}>
  4. 点击模拟

    您将看到应用包含自定义模式的 grok 模式后产生的模拟输出事件

    Debugging a custom pattern

    如果发生错误,您可以继续迭代自定义模式,直到输出与您期望的事件匹配。