[英]Grok Pattern optional fields on line end
我想“摸索”這兩行:
usg210 CEF:0|ZyXEL|USG210|4.65(AAPI.1)|0|Access Control|5|devID=bccf4fxxxxxx src=192.168.1.228 dst=255.255.255.255 spt=7303 dpt=7303 msg=Match default rule, DROP proto=17 app=others
usg210 CEF:0|ZyXEL|USG210||0|Blocked Web Sites|9|devID=bccf4fxxxxxx src=192.168.1.228 dst=23.57.22.128 spt=50938 dpt=443 msg=gameplay.intel.com : Games, Rule_id=5, SSI=N (HTTPS Domain Filter)
圖案:
\|(?:.*)\|%{DATA:class}\|%{WORD:loglevel}\|devID=%{WORD:mac} src=%{IPV4:ipsrc} dst=%{IPV4:ipdst} spt=%{WORD:spt} dpt=%{WORD:dpt} msg=%{GREEDYDATA:msg}( proto=%{WORD:proto} app=%{WORD:app})?
'proto' 和 'app' 字段是可選的,但我的調試器消息如下所示:“匹配默認規則,DROP proto=17 app=others”並且應用程序的原型是 null。
誰能解釋如果數據存在如何填寫字段,如果不存在我如何使它們成為可選的。
您正在使用GREEDYDATA
模式,並且不需要您的模式來匹配整個字符串。
在 Grok 中,您需要將GREEDYDATA
替換為DATA
並在模式末尾添加$
:
\|.*\|%{DATA:class}\|%{WORD:loglevel}\|devID=%{WORD:mac} src=%{IPV4:ipsrc} dst=%{IPV4:ipdst} spt=%{WORD:spt} dpt=%{WORD:dpt} msg=%{DATA:msg}( proto=%{WORD:proto} app=%{WORD:app})?$
請參閱msg=%{DATA:msg}( proto=%{WORD:proto} app=%{WORD:app})?$
部分,其中msg=%{DATA:msg}
和$
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.