2月 052014
 

Varnishでヒット率などの統計情報を見たい時はvarnishstatを利用しますが
この統計ではそのインスタンス丸ごとの統計情報しか取得できません。
複数のドメインをホストしている場合や、特定のパスでは動的にコンテンツを生成していたりするすると
本当に適切なキャッシュ戦略となっているか判断するにはvarnishstatだけでは不十分です。
ヒット率を押し上げているのはスペーサーの1×1のgifファイルで、キャッシュすべき生成コストが高いコンテンツは低いヒット率かもしれません。
そこで今回はホスト別・パス指定が可能なvarnishhoststatというスクリプトを作成しました。
出力はこんな感じです

vhs1

取得している項目は
・トラフィック(ヘッダを除く)
・RPS
・ヒット率(バックエンドにフェッチしない場合はHitとして扱っています)
・平均レスポンスタイム
・ヒット時の平均レスポンスタイム
・ミス時の平均レスポンスタイム
・平均ファイルサイズ
・HTTPステータスごとのRPS(2xx, 3xx, 4xx, 5xx)
です。

また、-Fオプションを使うことでホスト・パスでの絞り込みが可能です。
このように指定します。


-F [後方一致のホスト名]@[パスの正規表現(省略可能)]

-Fは複数指定可能で指定された順で評価されます。
たとえば
example.netで/img/ /css/ その他で集計したい場合は以下のように指定します


python varnishhoststat.py -F example.net@^/img/ -F example.net@^/css/ -F example.net

出力はこんな感じになります
vhs2

またjsonで出力したり(-j)
ファイルに書き出したり(-w)
することもできます。

最後に使用上の注意ですが、VSLにアクセスして取得しているのでそれなりに負荷が高いです。
大体varnishdのCPU使用率の40~50%ぐらいを使います。
本番で使おうと思われる方は一応負荷をみてください。

ということで、よかった使ってみてください。
varnishhoststat