>我从记录多行类型的日志文件中读取日志。在阅读QRadar时,组装两个记录并将其视为一个日志。
我将日志行的开始和结束模式描述为将日志源添加到 QRadar 时:
-
启动模式正则表达式:
^(d{7}),
-
结束模式正则表达式:
(d{2}:d{2}:d{2})$
我应该阅读这样的日志:
1158896,someuser,Inner User,Minor,10.6.130.11,2019-09-29 03:01:15,Security Management,Log in to the server,Network Management,Succeeded,User name: someuser,2019-09-29 03:01:15
1158897,someuser,Inner User,Minor,10.6.130.11,2019-09-29 03:03:16,Security Management,Log out the server,Network Management,Succeeded,"User name: someuserOnline duration: 0 day(s) 0 hour(s) 2 minute(s) 1 second(s)",2019-09-29 03:03:16
但我收到了其中一些组装的,例如:
1158896,someuser,Inner User,Minor,10.6.130.11,2019-09-29 03:01:15,Security Management,Log in to the server,Network Management,Succeeded,User name: someuser,2019-09-29 03:01:151158897,someuser,Inner User,Minor,10.6.130.11,2019-09-29 03:03:16,Security Management,Log out the server,Network Management,Succeeded,"User name: someuserOnline duration: 0 day(s) 0 hour(s) 2 minute(s) 1 second(s)",2019-09-29 03:03:16
以下是我的正则表达式开始和结束模式的 regex101.com 记录。
https://regex101.com/r/2IfMR7/3
https://regex101.com/r/2IfMR7/4
如您所见,它在 regex101.com 中正常工作 为什么QRadar将它们作为一个整体来阅读?
您(或qradar(可能正在使用贪婪量词和多行捕获字符。
如果你正在做这样的事情:^(d{7}),(?:n|.)*(d{2}:d{2}:d{2})$
中心组(?:n|.)*
或跨多行匹配的任何类似短语,贪婪的运算符*
意味着它将尝试从前 7 位数字匹配到整个日志页面上的最后一个时间戳,忽略您的开始和结束锚点。尝试改用*?
;?
使它不贪婪,因此它将在第一个时间戳处停止。
比较:贪婪与非贪婪。