我使用以下Splunk查询来获取所有响应内容及其对应的响应状态代码。index=main env=nonprod sourcetype="*sample-service*" "response"
上面Splunk查询的响应日志示例如下所示:||INFO||||Response:{"requestId:"369018b6-0fd4-11ee-be56-0242ac120002","headers":{"Content-Type":["application/json"]},"url":"https://sample-service.abcCompany.com","statusCode":200,"method":"POST","timeTaken":98,"body":{"..":"..","...":"..."}}
我尝试将statusCode
提取为一个字段,以便可以从服务响应中看到每个http statusCode的出现次数。
下面是我尝试提取statusCode的正则表达式:"statusCode":([\d]*)
我尝试在Splunk查询中使用上面的正则表达式:index=main env=nonprod sourcetype="*sample-service*" "response" | rex "statusCode":([\d]*)
但在搜索解析器中出现错误:Error in 'SearchParser': Missing a search command before '\'.
不知道如何实现这一点来提取statusCode字段,以便我可以可视化每个statusCode的出现次数。
我的预期结果示例是:
| 状态代码|计数|
| - -----|- -----|
| 两百|五千|
| 四百零四|4|
1条答案
按热度按时间vaqhlq811#
尽管正则表达式
"statusCode":([\d]*)
捕获statusCode是正确的,但我认为如果为"
放置转义字符并指定一个命名组,它也会起作用。因此,正则表达式将是:
\"statusCode\":(?<statusCode>[\d]*)
所以,最终的Splunk查询看起来像这样:
正则表达式匹配和命名捕获组的演示:https://regex101.com/r/UWdib7/1