タイムアウトした呼び出しの数を確認するためにgrep応答をどのように確認しますか?

タイムアウトした呼び出しの数を確認するためにgrep応答をどのように確認しますか?

サービスの1つを呼び出すcurlコマンドがあるため、サービスがタイムアウトすると、次のJSON応答が返されます。

[{"results":{"response":null},"error":{"errorCode":1001,"message":"Service Timeout","status":"FAILURE"}}]

以下は、カールコマンドを実行するときです。タイムアウトがある場合は、上記の応答を取得します。

curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120";

forループで上記のカールコマンドをx回実行します。次に、"message"JSON応答を確認してタイムアウトした呼び出しの数を確認したいと思います。私の言葉は、私が100万回の呼び出しをした場合、何回もタイムアウトし、タイムアウトする割合はどのくらいですか?

したがって、カールコマンドを使用してループを呼び出す次の行がありますが、呼び出しタイムアウト回数とタイムアウト率を把握する方法がわかりません。大丈夫ですか?

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応答が1行であると仮定):

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'

関連情報