使用grok模式提取日志中TLU前缀字段出现grokparsefailure报错如何解决
失败原因
- 分隔符匹配错误:原日志中TLU后接的是短横线
-,你现有规则写的是TLU=,和日志结构完全不匹配 - 字符范围规则错误:现有规则要求匹配8位十六进制字符
[0-9a-fx]{8},但样例日志中TLU-后接的是5位纯数字,规则和实际内容不符
修正方案
根据你要提取的字段内容选择对应规则即可:
方案1:提取完整的TLU-46356格式内容
完整配置如下:
if ([logMessage] =~ /TLU-/){ grok { match => { "logMessage" => '(?<TLU>TLU-[^_]+)' } } }
[^_]+会匹配TLU-之后到第一个下划线之前的所有字符,适配不同长度、不同字符类型的编号场景。
如果确认TLU-后只有纯数字,可以用更精准的规则:'(?<TLU>TLU-\d+)'
方案2:仅提取编号部分(即值为46356)
修改match规则为:
match => { "logMessage" => 'TLU-(?<TLU>[^_]+)' }
内容的提问来源于stack exchange,提问作者Marcos Vasquez
相关产品推荐
相关产品推荐

