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