阿帕奇错误的logstash grok模式是什么??

问题描述 投票:0回答:1

我正在尝试为Apache日志错误过滤器定义配置logstash过滤器。它基本上是带有某些附加字段的“组合” LogFormat,这是Apache日志格式定义:

[[11446] [星期四1月30日07:50:49] [调试]:RT ::使用日期时间:: ParseDate做'2020-01-31T07:20:46Z'1580446800(/ app / rt4 / sbin /../ lib / RT / Date.pm:274)

或者它可能是这种格式:

[[Wed Jun 26 22:13:22 2013] [错误] [客户端10.10.10.100] PHP致命错误:未捕获的异常'\ Foo \ Bar'

我尝试了以下解决方案:

APACHE_ERROR_TIME%{DAY}%{MONTH}%{MONTHDAY}%{TIME}%{YEAR}APACHE_ERROR_LOG [%{APACHE_ERROR_TIME:timestamp}][%{LOGLEVEL:loglevel}](?:[客户端%{IPORHOST:clientip}]){0,1}%{GREEDYDATA:errormsg}

但是它给出一个grok_match_failure

请为我上面的字符串提供一个通用工作模式(这意味着即使字符串的一部分不存在也没关系)

apache elasticsearch logstash logstash-grok
1个回答
0
投票

使用提供的APACHE_ERROR_TIME,我得到了与该模式的匹配:

\[%{APACHE_ERROR_TIME:timestamp}\] \[%{LOGLEVEL:loglevel}\](?: \[client %{IPORHOST:clientip}\] ){0,1}%{GREEDYDATA:errormsg}

除了转义方括号外,还有一些放错位置的空格阻止了比赛。

对于:

[11446] [Thu Jan 30 07:50:49 2020] [debug]: RT::Date used Time::ParseDate to make '2020-01-31T07:20:46Z' 1580446800 (/app/rt4/sbin/../lib/RT/Date.pm:274)

结果:

timestamp   Thu Jan 30 07:50:49 2020
loglevel    debug
clientip    
errormsg    : RT::Date used Time::ParseDate to make '2020-01-31T07:20:46Z' 1580446800 (/app/rt4/sbin/../lib/RT/Date.pm:274)
before match:   [11446]

对于:

[Wed Jun 26 22:13:22 2013] [error] [client 10.10.10.100] PHP Fatal error: Uncaught exception '\Foo\Bar'

结果:

timestamp   Wed Jun 26 22:13:22 2013
loglevel    error
clientip    10.10.10.100
errormsg    PHP Fatal error: Uncaught exception '\Foo\Bar' 
© www.soinside.com 2019 - 2024. All rights reserved.