ユースケース
(自社サービスのドメインがhttp://example.com
として)
- 特定APIに対するリクエスト
http://example.com/api/v1/items
が失敗しているようだった。 - リクエストを再現してみたい/もしくは問題と思われる箇所を修正したので再度リクエストを流したい
ような時。
やってみる
アクセスログ(/var/log/nginx/access.log)
93.184.216.119 - - [08/Apr/2014:11:30:15 +0900] "GET /api/v1/items HTTP/1.1" 500 4373 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36"
例えばこんなログがあった場合。
任意のログを抜き出して、リクエストをリトライ
$ cat /var/log/nginx/access.log |grep "/api/v1/items" | awk '{print "curl -i \"http://example.com" $7 "\" >/dev/null"}' | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
105 1270 105 1270 0 0 6337 0 --:--:-- --:--:-- --:--:-- 12828
これで
http://example.com/api/v1/items
のリクエストたちをリトライできます。
見ての通りですが、リトライしたいログの抜き出しパターンの匙加減はgrep "/api/v1/items"
にて。
デバッグ時のお供に。