Nginx をリバースプロキシとして利用していて、さらにキャッシュ設定をしています。実際どれくらいプロキシキャッシュの効果があるのが、Munin で集計して監視してみる設定方法です。
前回は Nginx 自体の状態を監視設定してみました。
Ubuntu で Nginx のステータスを Munin でモニタリング - tilfin’s note
この続きです。
munin-monitoring
Munin はいくつかのプラグインを apt-get で入れると追加されてますが、さらにサードパーティ製のプラグインは GitHub で管理されています。
munin-monitoring/contrib · GitHub
Rootユーザで今回は /usr/local/munin にリポジトリをクローンします。
1 | $ sudo mkdir /usr/local/munin |
nginx-cache-hit-rate
リクエストのキャッシュヒット率などを集計するプラグインになります。これを利用します。 nginx-cache-hit-rate スクリプトは contrib/plugins/nginx/nginx-cache-hit-rate に入っています。
nginx-cache-hit-rate スクリプトをプラグインディレクトリにシンボリックリンクします。
1 | $ cd /etc/munin/plugins/ |
このスクリプトは Perl 製でモジュール File::ReadBackwards.pm が必要になります。
CPAN と File::ReadBackwards モジュールのインストール
設定中のさくら VPS の Ubuntu 12.04 には入っていないため、CPAN からインストールします。 Rootで cpan を実行します。未設定の場合はインタラクティブに初期設定を行います。終了後 cpan のシェルになるため、install コマンドで File::ReadBackwards.pm をインストールします。
1 | $ sudo -i |
Nginx 設定
キャッシュヒット率の算出するためのログデータを設定します。 キャッシュデータ専用のログフォーマット cache を nginx.conf の http ブロックに log_format ディレクティブで定義します。
1 | http { |
バーチャルホスト設定ファイルなどの server ブロック内にキャッシュ用 access_log ディレクティブを追加します。これで元のアクセスログはそのままにできます。
1 | server { |
Munin プラグイン設定
/etc/munin/plugin-conf.d/munin-node
ファイルに nginx* セクションに env.logfile としてキャッシュファイルへのパスを定義を追加します。ログファイルのリード可能なユーザを user に定義します。
1 | [nginx*] |
グラフについて
サービスを再起動してブラウザで確認すると、NGINX hit rates セクションが増えます。
- Hits - キャッシュヒットしたもの
- Misses - ヒットしなかったもの
- Expired Objects - キャッシュが期限切れだったもの
upstream(バックエンド)に行かないリクエストも含めて総数としているため、100%とは限りません。