サービスの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'