gpt4 book ai didi

logstash - 使用 Grok Debugger 测试 Logstash 过滤器的 Apache 错误

转载 作者:行者123 更新时间:2023-12-05 01:04:57 25 4
gpt4 key购买 nike

我试图了解使用 grok 过滤我的 apache 错误日志。

我的错误日志文件如下所示:

[Thu Feb 27 13:22:44 2014] [error] [client 10.110.64.71] script not found or unable to stat: /var/www/cgi-bin/php4

我如何使用 grok 来过滤它?我已经走了这么远:
filter {
grok {
type => "apache-error"
pattern => "\[%{HTTPDATE:timestamp}\] \[%{WORD:class}\] \[%{WORD:originator} %{IP:clientip}\] %{GREEDYDATA:errmsg}"
}
}

我尝试使用 Grok Debugger但我几乎不知道我在做什么。我真的是logstash的新手。

最佳答案

所以使用 grok 调试器应用程序的方法是这样的:

在“输入”框中插入您的输入,并在“模式”框中找到匹配此输入的模式。其工作方式是,正则表达式引擎尝试查找您在输入文本中指定的模式的匹配项。提取任何匹配项并显示在输出框中(以 JSON 格式,作为您指定的键值对)

Grok 模式类似于可以重用的合并和重命名的正则表达式。在你的情况下:

Input:  [Thu Feb 27 13:22:44 2014] [error] [client 10.110.64.71] script not found or unable to stat: /var/www/cgi-bin/php4

Your_Pattern: \[%{HTTPDATE:timestamp}\] \[%{WORD:class}\] \[%{WORD:originator} %{IP:clientip}\] %{GREEDYDATA:errmsg}

现在,这显示“无匹配”。这是因为 HTTPDATE 模式由以下正则表达式组成: %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT} 如您所见 here .

因此它无法匹配您输入的不同日期格式。比赛本身就失败了。正则表达式引擎将开始解析您输入的第一个可能与指定正则表达式匹配的输入。但是由于它没有找到开始模式本身,它不会返回任何匹配项。

要指定的正确模式是这样的:
\[(?<timestamp>%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[%{WORD:class}\] \[%{WORD:originator} %{IP:clientip}\] %{GREEDYDATA:errmsg}

在这里,我重新命名了 grok 模式 %{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR}
到'时间戳'。这样做的语法是:
(?<new_name>regular expression / grok). 

post提供了使用 grok 的一个很好的解释。

关于logstash - 使用 Grok Debugger 测试 Logstash 过滤器的 Apache 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22078355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com