Splunk索引数据提取:如何移除结果中的大括号?
解决Splunk日志提取字段时的大括号问题
你的问题出在没从原始日志字段_raw里直接提取,反而去处理不存在(或已带大括号)的_statusCode/_duration字段,导致提取结果仍带大括号。
正确的查询语句
直接从_raw字段匹配大括号内的内容,用精准正则避免多余字符:
index=my_index | rex "statusCode=\{ (?<statusCode>[^}]+) \}" | rex "duration=\{ (?<Duration>[^}]+) \}" | table statusCode Duration
或者用一条正则一次性提取两个字段,更高效:
index=my_index | rex "statusCode=\{ (?<statusCode>[^}]+) \}, duration=\{ (?<Duration>[^}]+) \}" | table statusCode Duration
关键修改说明
- 目标字段改为
_raw:原始日志的所有内容都存在_raw里,你之前指定的_statusCode和_duration是未正确生成的字段,自然提取无效。 - 正则用
[^}]+代替.*:[^}]+表示匹配任意非大括号的字符,能精准捕获大括号内的内容,不会误匹配到后面的},等字符。 - 直接捕获目标值:正则里的分组
(?<statusCode>[^}]+)会直接把大括号里的200、277.429137ms提取为干净的字段值,不带大括号。
这样提取后的statusCode和Duration字段就可以直接用于后续计算了。
内容的提问来源于stack exchange,提问作者Developer
相关产品推荐
相关产品推荐

