Splunk日志提取REGEX失效,如何修复正则实现字段提取与错误计数?
Splunk日志字段提取正则修复方案
原有正则问题说明
- 未添加TaskExecutor编号的捕获逻辑,缺失要求字段
- 特殊符号匹配逻辑存在偏移,导致服务名、错误消息字段匹配失败
- 原有统计逻辑按三个字段分组,不符合仅按错误消息统计计数的要求
修复后完整查询语句
index=my_index "ERROR * ---" "taskExecutor-*" | rex "^(?<Time>\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}\.\d{3})\s+ERROR\s+(?<Error_Code>\d+)\s+---\s+\[\s*taskExecutor-(?<TaskExecutor_Number>\d+)\s*\]\s+(?<Service_Name>\S+)\s*:\s+(?<Error_Message>.+)$" | eventstats count as Count by Error_Message | table Error_Message Time Error_Code TaskExecutor_Number Service_Name Count
正则逻辑说明
(?<Time>\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}\.\d{3}):精准匹配日志开头的标准时间格式(?<Error_Code>\d+):捕获ERROR标识后的错误码数字(?<TaskExecutor_Number>\d+):提取taskExecutor-后缀的编号(?<Service_Name>\S+):匹配报错的服务类全限定名(?<Error_Message>.+):捕获冒号后的完整错误描述内容- 多处添加
\s*兼容日志中随机出现的多余空格,提升匹配稳定性
统计逻辑说明
eventstats仅按Error_Message分组统计计数,相同错误消息的所有日志条目都会共享相同的Count值,符合需求中错误出现次数累加的要求。
内容的提问来源于stack exchange,提问作者user2769790
相关产品推荐
相关产品推荐

