LoginSignup
5
5

More than 5 years have passed since last update.

運用中のAPIに対するリクエストがこけていた場合にログから抜き出してリトライするワンライナー

Last updated at Posted at 2014-08-01

ユースケース

(自社サービスのドメインが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"にて。

デバッグ時のお供に。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5