我有一个curl 命令正在调用我们的一项服务,因此如果我的服务超时,它会返回如下JSON 响应:
[{"results":{"response":null},"error":{"errorCode":1001,"message":"Service Timeout","status":"FAILURE"}}]
下面是我运行时的curl命令,如果有超时,我会得到上面的响应
curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120";
我在 for 循环中运行上面的 curl 命令 x 次。现在我想通过检查"message"
JSON 响应来查看有多少调用超时?我的意思是,如果我拨打了 100 万个电话,那么有多少个电话超时,超时的百分比是多少?
所以我得到了下面一行调用curl命令的循环,但我不确定如何计算出有多少调用超时以及超时的百分比是多少?这可以吗?
for ((i=1;i<=1000000;i++)); do curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120"; done
更新:-
这是运行命令后我看到的输出:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 226 100 226 0 0 12798 0 --:--:-- --:--:-- --:--:-- 17384
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 226 100 226 0 0 4591 0 --:--:-- --:--:-- --:--:-- 7290
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 226 100 226 0 0 6318 0 --:--:-- --:--:-- --:--:-- 8370
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 226 100 226 0 0 5252 0 --:--:-- --:--:-- --:--:-- 7793
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 226 100 226 0 0 6139 0 --:--:-- --:--:-- --:--:-- 8071
1
答案1
我建议用于jq
所有 JSON 相关的文本处理操作。当然,你可以使用它来解析 JSON grep
,但在我看来,这不是正确的方法。
假设超时等于错误代码 1001 的快速示例。返回的数字是已发生的超时次数:
for ((i=1;i<=1000000;i++)); do
curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120"
done \
| jq '.[].error.errorCode == 1001' | grep -c true
或者,如果您只想使用 grep(假设 JSON 回复是单行):
for ((i=1;i<=1000000;i++)); do
curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120"
done \
| grep -wcoE '"errorCode":1001'