簡體   English   中英

行尾的 Grok Pattern 可選字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM