Linux
如何 grep 響應以確定有多少呼叫超時?
我有一個 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
我建議使用
jq
所有與 JSON 相關的文本處理操作。當然,您可以管理解析 JSON,grep
但 IMO 這不是要走的路。假設超時等於錯誤程式碼 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'