Gab*_*iel 4 logstash logstash-grok
我试图理解使用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
Run Code Online (Sandbox Code Playgroud)
如何使用grok过滤?我到目前为止:
filter {
grok {
type => "apache-error"
pattern => "\[%{HTTPDATE:timestamp}\] \[%{WORD:class}\] \[%{WORD:originator} %{IP:clientip}\] %{GREEDYDATA:errmsg}"
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用Grok调试器,但我几乎不知道我在做什么.我对logstash来说几乎是全新的.
所以使用grok调试器应用程序的方法是这样的:
将输入插入"输入"框并使用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}
Run Code Online (Sandbox Code Playgroud)
现在,这显示'No Matches'.这是因为,在HTTPDATE图案由这个表达式的了:%{} MONTHDAY /%{MONTH} /%{YEAR}:%{TIME}%{} INT,你可以看到在这里.
因此它无法与您输入的日期格式相匹配.比赛失败了.正则表达式引擎将开始解析您的输入,以便与指定的正则表达式进行第一次匹配.但由于它没有找到启动模式本身,因此它不会返回任何匹配项.
要指定的正确模式是:
\[(?<timestamp>%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[%{WORD:class}\] \[%{WORD:originator} %{IP:clientip}\] %{GREEDYDATA:errmsg}
Run Code Online (Sandbox Code Playgroud)
在这里,我将grok模式重新命名为%{DAY:day}%{MONTH:month}%{MONTHDAY}%{TIME}%{YEAR}为'timestamp'.执行此操作的语法是:
(?<new_name>regular expression / grok).
Run Code Online (Sandbox Code Playgroud)
这篇文章提供了使用groks的一个很好的解释.
| 归档时间: |
|
| 查看次数: |
4456 次 |
| 最近记录: |