GROK 中的日志级别模式
Loglevel pattern in GROK
我是 logstash 和 grok 的新手,对模式有疑问。
我正在尝试为我的 apache 错误日志创建一个 grok 模式。
但是我对以下行为有点困惑。
如果我在 http://grokdebug.herokuapp.com/ 中使用基础匹配:
%{LOGLEVEL:severity%{IPV4:clientip}%{GREEDYDATA:errormsg}
我在以下日志片段中发现不匹配:
[Sun Apr 10 09:28:01 2016] [error] [client 111.11.111.111] File does
not exist: /var/www/html/favicon.ico
现在,如果我 运行 %{LOGLEVEL:severity} 或 %{IPV4:clientip}%{GREEDYDATA:errormsg} 分开,所有模式都有效。但如果我一起尝试,我会得到 "no match" return.
我认为发生这种情况是因为 %{LOGLEVEL:severity} t运行涵盖了日志的其余部分,但我不明白为什么。
有人对我做错了什么有什么建议吗?
提前致谢。
与所有未锚定的正则表达式一样,一旦开始匹配,就需要匹配字符串中的所有内容。在您的模式中,您没有考虑样本中存在的空格或括号。 (这还假设 "severity" 后缺少 } 是复制和粘贴错误)。
您编写的 grok 模式确实与日志消息不匹配,您为什么不尝试使用比 grok 过滤器更高效的 dissect {}
?
您的留言是:
[Sun Apr 10 09:28:01 2016] [error] [client 111.11.111.111] File does not exist: /var/www/html/favicon.ico
因此您可以编写一个 dissect
过滤器,例如:
dissect {
mapping => {
"message" => "[%{raw_date}] [%{loglevel}] [client %{client_ip}] %{log_message}"
}
}
我是 logstash 和 grok 的新手,对模式有疑问。 我正在尝试为我的 apache 错误日志创建一个 grok 模式。 但是我对以下行为有点困惑。
如果我在 http://grokdebug.herokuapp.com/ 中使用基础匹配:
%{LOGLEVEL:severity%{IPV4:clientip}%{GREEDYDATA:errormsg}
我在以下日志片段中发现不匹配:
[Sun Apr 10 09:28:01 2016] [error] [client 111.11.111.111] File does not exist: /var/www/html/favicon.ico
现在,如果我 运行 %{LOGLEVEL:severity} 或 %{IPV4:clientip}%{GREEDYDATA:errormsg} 分开,所有模式都有效。但如果我一起尝试,我会得到 "no match" return.
我认为发生这种情况是因为 %{LOGLEVEL:severity} t运行涵盖了日志的其余部分,但我不明白为什么。
有人对我做错了什么有什么建议吗?
提前致谢。
与所有未锚定的正则表达式一样,一旦开始匹配,就需要匹配字符串中的所有内容。在您的模式中,您没有考虑样本中存在的空格或括号。 (这还假设 "severity" 后缺少 } 是复制和粘贴错误)。
您编写的 grok 模式确实与日志消息不匹配,您为什么不尝试使用比 grok 过滤器更高效的 dissect {}
?
您的留言是:
[Sun Apr 10 09:28:01 2016] [error] [client 111.11.111.111] File does not exist: /var/www/html/favicon.ico
因此您可以编写一个 dissect
过滤器,例如:
dissect {
mapping => {
"message" => "[%{raw_date}] [%{loglevel}] [client %{client_ip}] %{log_message}"
}
}