先日ISUCON8に出場して、ログ解析ツールの alp を使う想定で準備をしていたのですが、h2oのログをそのままalpに食わせられないのでログフォーマットをカスタマイズしたときのメモです。
講評ブログにも書くつもりだけど、h2oだから慣れてなくて手間取ったまでは分かるけど、h2oは十分に高速だしDNS RRでLBできるしアクセスログだってカスタムできてalpとかに食わせられるので、慣れてるものに変えるという目的以外ではh2oを使い続けて何も損はなかったはずですよ #isucon
— かるぱねるら@9/30千葉LOOM (@karupanerura) September 18, 2018
nginxでは alpのインストールからNginxのアクセスログ解析までの手順【ISUCON】
の通りltsv形式かつカスタムされた形式でログを吐けばよかったので、alpでもこの形式で吐いてくれるように /etc/h2o/h2o.conf
を書き換えます。こんな感じで↓
access-log:
path: /var/log/h2o/access.log
format: "time:%t\thost:%h\tua:\"%{User-agent}i\"\tstatus:%s\treq:%r\turi:%U\treqtime:%{duration}x\tsize:%b\tmethod:%m\t"
これで吐かれたログを
cat /var/log/h2o/access.log | alp --aggregates="/api/users/.*","/api/events/.*","/admin/api/reports/events/.*"
てな感じで解析できます。
以下はISUCON8当日初期状態の解析結果です。