我很抱歉这个神秘的题目,但是我不知道如何正确的表达它。这些是日志类型:
{vpnclient} Client[10.10.10.10:54576](11764): sending R_KEYCHANGE message
{vpnclient} Client[10.10.10.10:54576](16031): sending R_IPCONFIG message - client IP = 172.11.11.11/255.255.255.0, CEP = 3600 s, DNS = 172.11.1.101, 172.11.1.102
这是我的grok模式:
^{vpnclient} %{WORD}\[%{IP:[client][ip]}:%{NUMBER:[source][port]}\]\(%{INT:[process][pid]}\): %{GREEDYDATA:message} (:?%{GREEDYDATA:kv_vpn_message})
我想做的是将连字符后的日志(- client IP
)转发到kv
过滤器。我的问题是-这种类型的日志并不总是出现,所以我想 Package 整个grok模式,所以它匹配到%{GREEDYDATA:message}
和%{GREEDYDATA:kv_vpn_message}
,但只有当它出现时。
1条答案
按热度按时间hfyxw5xn1#
您可以使用
有以下几个变化:
%{DATA:message}
-message
图案转换为非贪婪点图案.*?
,GREEDYDATA
更改为DATA
(?: - %{GREEDYDATA:kv_vpn_message})?
-是可选的非捕获组,它匹配-
的一个或零个出现,然后将零个或更多个字符尽可能多地捕获到"kv_vpn_message"组中$
-字符串锚点的结尾,它允许"消息"DATA
模式匹配到行尾。