Linux

如何 grep 響應以確定有多少呼叫超時?

  • March 18, 2016

我有一個 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'

引用自:https://unix.stackexchange.com/questions/270317