如何从Splunk解析日志数据?正则提取数值7810失败求助
Splunk日志数值提取问题解决办法
你的问题出在rex命令的正则表达式匹配逻辑上,原表达式写反了匹配规则:
原正则里的[^\\d]+是匹配非数字字符,但我们要提取的是方括号里的数字7810,自然抓不到目标内容。
修正后的查询有两种写法,任选其一即可:
写法一:精准匹配数字
index=my_index "Total number data found for processing:" | rex "processing: \[(?<Num>\d+)\]" | timechart values(Num) as Records span=60min
- 说明:
\d+匹配一个或多个数字,\[和\]是转义后的方括号(方括号在正则里属于特殊字符,必须转义才能匹配日志里的实际括号)。
写法二:匹配括号内所有非右括号内容
index=my_index "Total number data found for processing:" | rex "processing: \[(?<Num>[^\]]+)\]" | timechart values(Num) as Records span=60min
- 说明:
[^\]]+匹配除了右括号]之外的所有字符,适合括号内只有目标数值的场景。
另外,原查询里的搜索条件"Total number data found for processing *"可以简化为"Total number data found for processing:",能更精准匹配日志内容。
内容的提问来源于stack exchange,提问作者Anand Somani
相关产品推荐
相关产品推荐

