【问题标题】:Grok filter is not working when id has dashes当 id 有破折号时,Grok 过滤器不起作用
【发布时间】:2022-01-07 07:04:12
【问题描述】:

我有一个如下示例输入。

[2022-01-06 19:51:42,143] [http-nio-8080-exec-7] DEBUG  [50a4f8740c30b9ca,c1b11682-1eeb-4538-b7f6-d0fb261b3e1d]

我实现了一个 grok 过滤器来验证文本。

\[%{TIMESTAMP_ISO8601:timestamp}\] \[(?<threadname>[^\]]+)\] %{LOGLEVEL:logLevel}  \[%{WORD:traceId},%{WORD:correlationId}\]

当我验证它时,它说没有匹配项。 但是如果我删除 - 在相关 id 中,该过滤器工作正常。是否对过滤器进行任何修改以接受 - 在相关 ID 中?

【问题讨论】:

    标签: logstash-grok grok


    【解决方案1】:

    试试这个。

    \[%{TIMESTAMP_ISO8601:timestamp}\] \[%{DATA:threadName}\] %{LOGLEVEL:logLevel}  \[%{DATA:traceId},%{DATA:correlationId}\]
    

    【讨论】:

      【解决方案2】:

      根据this%{WORD}模式是由这个正则表达式\b\w+\b定义的

      • \w 捕获字母数字
      • \b 捕获单词边界。它可以帮助您执行whole words only

      因此,如果您的原始文本包含 -,它将永远不会捕获它。

      您可以尝试%{DATA},因为它捕获了.*?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-16
        相关资源
        最近更新 更多