如何解析fail2ban日志中可能带空格的动作类型字段
问题原因
当前规则使用的内置%{word}模式仅可匹配无空格的连续字符,无法适配Restore Ban这类带空格的双词动作字段。
解决方案
由于动作字段后固定跟随IPv4地址,可将原有%{word:ActionType}替换为自定义非贪婪正则,匹配IP之前所有由字母和空格组成的动作内容,不会侵占后续字段的匹配。
修改后完整Grok规则
fail2banRule01 %{date("yyyy-MM-dd HH:mm:ss,SSS"):Datetime}\s+fail2ban.%{word}\s+\[%{number:PID}\]\:\s+%{word:Level}\s+\[%{word:Jail}\]\s+(?<ActionType>[a-zA-Z ]+?)\s+%{ipv4:ClientIP}(\s+-\s+%{date("yyyy-MM-dd HH:mm:ss"):ActionDate})?
适配验证
针对提供的3条示例日志,修改后的规则可正确提取所有动作字段:
- 日志1提取
ActionType值为Restore Ban - 日志2提取
ActionType值为Ban - 日志3提取
ActionType值为Found
该规则完全兼容Datadog日志处理架构的Grok语法,无需额外调整配置。
内容的提问来源于stack exchange,提问作者infrabill
相关产品推荐
相关产品推荐

