创建通用Grok正则模式匹配含可选KV段的VPN客户端日志
调整Grok模式匹配两类VPN客户端日志
修正后的Grok模式
^{vpnclient} %{WORD}\[\%{IP:[client][ip]}:%{NUMBER:[source][port]}\]\(%{INT:[process][pid]}\): %{GREEDYDATA:message}(?: - %{GREEDYDATA:kv_vpn_message})?
修改说明
- 给键值对匹配段添加
?标记,将整个组设为可选,确保无附加键值对的日志也能正常匹配 - 明确匹配键值对开头的连字符(包含前置空格,若你的日志里消息和连字符之间无空格,可去掉空格改为
(?:-%{GREEDYDATA:kv_vpn_message})?) - 保留
?:非捕获组语法,避免生成多余的临时组字段
测试验证
分别用两类日志测试:
- 无键值对的日志示例:
vpnclient INFO192.168.1.1:12345: Connection established
匹配后message字段为Connection established,kv_vpn_message字段不会生成 - 带键值对的日志示例:
vpnclient INFO192.168.1.1:12345: Connection established - user=john duration=3600
匹配后message字段为Connection established,kv_vpn_message字段为user=john duration=3600,可直接传入kv过滤器处理
内容的提问来源于stack exchange,提问作者h0llym0lly
相关产品推荐
相关产品推荐

