Logstash 带转义“的Grok正则表达式;[&&x201C;,&x201C;(“;,和“;)和”;字符问题

Logstash 带转义“的Grok正则表达式;[&&x201C;,&x201C;(“;,和“;)和”;字符问题,logstash,logstash-grok,Logstash,Logstash Grok,弹性新手-使用新的5.5安装。我有一个日志行,看起来是这样的: [2015/10/01@19:48:22.785-0400]P-4780 T-2208 I DBUTIL:(451)prostrct 在CON:上为timk519创建会话开始 我有以下正则表达式: \[%{DATE:date}@%{TIME:time}-(?<gmtoffset>\d{4})\]\s*(?<procid>P-[0-9]+)\s*(?<threadid>T-[0-9]+)\s*(?&

弹性新手-使用新的5.5安装。我有一个日志行,看起来是这样的:

[2015/10/01@19:48:22.785-0400]P-4780 T-2208 I DBUTIL:(451)prostrct 在CON:上为timk519创建会话开始

我有以下正则表达式:

\[%{DATE:date}@%{TIME:time}-(?<gmtoffset>\d{4})\]\s*(?<procid>P-[0-9]+)\s*(?<threadid>T-[0-9]+)\s*(?<msgtype>[ifIF])\s*(?<processtype>[a-zA-Z]+)\s*(?<usernumber>[0-9]+|[:])\s*\((?<msgnum>[0-9]+|[\-]+)\)\s*%{GREEDYDATA:message}
我在grok声明中实现了如下内容:

\[%{DBTIMESTAMP:dbdatetime}\]\s*%{PROCESSID:processid}\s*%{DBTHREADID:threadid}\s*%{DBMSGTYPE:msgtype}\s*%{PROCESSTYPE:processtype}?\s*%{USERNUMBER:usernumber}?\s*:\s*[(]%{MSGNUMBER:msgnumber}[)].\s*%{GREEDYDATA:eventmessage}\s*\r

然后,我使用日期过滤器将dbdatetime转换为@timestamp设置,现在正则表达式匹配传入的日志流,这正是我想要的。Thx!

魔鬼在细节中,错误一开始并不明显。Grok调试器失败的原因是因为您使用了
日期
模式这:

DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
MONTHNUM
MONTHDAY
都是两位数的模式,这实际上意味着它们与你一年中的15位数匹配。这就是为什么模式不起作用的原因,因为
\[%{DATE}
实际上不匹配(它缺少20位数)。为什么模式
%{DATE}
努力工作?因为你没有将
[
与点匹配,所以你是在匹配年度
0

如何修复此问题?请使用自定义模式匹配日期。类似于此的操作:

\[(?<date>%{YEAR}/%{MONTHNUM}/%{MONTHDAY})@%{TIME:time}-(?<gmtoffset>\d{4})\]\s*(?<procid>P-[0-9]+)\s*(?<threadid>T-[0-9]+)\s*(?<msgtype>[ifIF])\s*(?<processtype>[a-zA-Z]+)\s*(?<usernumber>[0-9]+|[:])\s*\((?<msgnum>[0-9]+|[\-]+)\)\s*%{GREEDYDATA:message}

绝对是史诗般的收获!
DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
\[(?<date>%{YEAR}/%{MONTHNUM}/%{MONTHDAY})@%{TIME:time}-(?<gmtoffset>\d{4})\]\s*(?<procid>P-[0-9]+)\s*(?<threadid>T-[0-9]+)\s*(?<msgtype>[ifIF])\s*(?<processtype>[a-zA-Z]+)\s*(?<usernumber>[0-9]+|[:])\s*\((?<msgnum>[0-9]+|[\-]+)\)\s*%{GREEDYDATA:message}
{
  "date": "2015/10/01",
  "msgnum": "451",
  "procid": "P-4780",
  "processtype": "DBUTIL",
  "message": "prostrct create session begin for timk519 on CON:.",
  "threadid": "T-2208",
  "usernumber": ":",
  "gmtoffset": "0400",
  "time": "19:48:22.785",
  "msgtype": "I"
}