我有两个具有不同日志结构的梭子鱼固件和一个需要解析它们的 Logstash grok 过滤器插件。
值仅记录条目
+02:00 Info blabla Detect: FWD|TCP|bond0.777|1.1.1.1|53329|00:00:00:00:00:00|20.190.159.32|443||bond1.182||0|80.231.71.252|20.190.159.32|0|1|0|0|0|0||SSL|Microsoft Services Base|graph.microsoft.com||Computing/Technology (82)
字段 + 值日志条目
+02:00 Info blabla Remove: type=FWD|proto=UDP|srcIF=pvpn0|srcIP=1.1.1.1|srcPort=61661|srcMAC=00:00:00:00:00:00|dstIP=10.248.0.10|dstPort=53|dstService=dns|dstIF=pvpn0|rule=V2L-DNS-IN|info=Balanced Session Idle Timeout|srcNAT=10.248.11.215|dstNAT=127.0.0.1|duration=20|count=1|receivedBytes=444|sentBytes=82|receivedPackets=1|sentPackets=1|user=johba|protocol=|application=|target=|content=|urlcat=
对于第一个场景,我已经有了一个正则表达式。但是,我希望有一个在这两种情况下都匹配的正则表达式,无论提交的名称是否存在。
例如,我希望我的正则表达式同时匹配FWD
和type=FWD
- 我首先尝试使用 char 类,即
[type=]*\w+
. 缺点是,例如,如果我有dstService=dns
,并且我的正则表达式的部分是[dstService=]*\w+
grok 过滤器将ns
只匹配而不是dns
- 然后我尝试了
d*s*t*S*e*r*v*i*c*e*=*\w+
,这奏效了。但是,我在想是否有更优雅的方式来实现这个目标?