だいぶ間があいてしまいました。前回紹介したMuninによるサーバ監視の続きです。
今回はMuninのプラグインを使ってnginxを監視する項目を追加していきます。
プラグインのダウンロード
MuninのプラグインはGithubを使って公開されています。
もちろんここから手動でダウンロードしても良いのですが、何かと面倒なのでgitで一気にダウンロードしてします。
まずはgitをインストールしておきます。
apt-get install git
次にダウンロードしたファイルを格納する場所を用意します。Debianの場合はパッケージ管理外のファイルは/usr/local以下に置くことになっているので、次のように準備しておきます。
mkdir –p /usr/local/share/munin
作成したディレクトリに移動してプラグインの全ファイルを一気にダウンロードしてしまいます。
cd /usr/local/share/munin git clone https://github.com/munin-monitoring/contrib.git
確認してcontroibディレクトリとその中にさらにディレクトリができていればOKです。
ls -F /usr/local/share/munin
contrib/
ls -F /usr/local/share/munin/contrib
README.md/ images/ plugins/ samples/ templates/ tools/
ここのplugins以下にプラグインが入っています。
nginxの監視を強化
下記のWebサイトを見ると10個のプラグインが登録されていることがわかります。
簡単に紹介します。
- nginx-cache-hit-rate
プロキシ・キャッシュのヒット率を表示 - nginx-cache-multi_
キャッシュのステータスを表示 - nginx-combined
一つのグラフで下記をまとめて表示- Request /sec
- Connection / sec
- Request / connection
- Active connections
- Reading
- Writing
- Waiting
- nginx_connection_request
1コネクションあたりのリクエスト数を表示 - nginx_error
httpのステータスコードを元にエラー率を表示 - nginx_memory
メモリ使用量を表示 - nginx_upstream
転送量を表示(?) - nginx_upstream_multi_
指定したサイトに関するリクエスト数・キャッシュ・ステータス・httpのステータスコードなどを表示 - nginx_vhost_traffic
指定したバーチャルホストのトラフィックを表示 - nginx_working_set
Working set(実メモリ上の使用サイズ)を表示
それぞれを設定してみます。
nginx-cache-hit-rateプラグイン
このプラグインにはReadBackwards.pmというperlのモジュールが必要なのでインストールします。
apt-get install libfile-readbackwards-per
次に/etc/nginx/nginx.confに次の記述を追記して新しいログのフォーマットをcacheという名前で定義します。
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';
キャッシュヒット率を監視したいサイトの設定ファイル(/etc/nginx/site-availableにあるファイル)を変更して、作成したフォーマット(cache)でログを記録するようにします。このためには次の行を追加します。
access_log /var/log/nginx/サイト名-cache.log cache;
ログファイルのファイル名は何でも良いです。なお、nginxは複数のログを記録できるので、必要であれば従来のacces_logの設定を残しておいても問題ありません。
次にプラグインのシンボリックリンクを/etc/munin/pluginsに作成します。シンボリックリンクの名前には「_サイト名」をつけるようにします。
cd /etc/munin/plugins ln -s /usr/local/share/munin/contrib/plugins/nginx/nginx-cache-hit-rate nginx-cache-hit-rate_サイト名
最後に/etc/munin/plugin-conf.dのmunin-nodeに次の内容を追記します。
[nginx-cache-hit-rate_サイト名] env.logfile /var/log/nginx/サイト名-cache.log
これで設定は完了です。念のためMuninを再起動しておきます。
/etc/init.d/munin-node restart
監視結果が表示されるのはログに1000行たまった後になります。
私のサイトはこんな感じになりました。
時間帯によってヒット率が大きく変わることが分かります。アクセス数が大目の日中から夜中にかけてはわりとヒット率が高いようです。ただ、「Hits」と「Misses」を足しても100%にならないのが不思議なところです。
nginx-cache-multiプラグイン
このプラグインも上記のniginx-cache-hit-rateで設定したログファイルを使用します。
このプラグインは若干の修正が必要でした。/usr/local/share/munin/contrib/plugins/nginx/nginx-cache-multi_の52行目を次のように変更します(BYPASSの部分)。
cache_status_list = { "MISS" : 0, "EXPIRED" : 0, "UPDATING" : 0, "STALE" : 0, "HIT" : 0, "NONE" : 0, "TOTAL" : 0, "BYPASS" : 0 }
次にプラグインのシンボリックリンクを/etc/munin/pluginsに作成します。シンボリックリンクの名前には「_サイト名」をつけ、さらに「_number」と「_percent」をつけたものを作成します。
cd /etc/munin/plugins ln -s /usr/local/share/munin/contrib/plugins/nginx/nginx-cache-multi_ nginx-cache-multi_サイト名_number ln -s /usr/local/share/munin/contrib/plugins/nginx/nginx-cache-multi_ nginx-cache-multi_サイト名_percent
最後に/etc/munin/plugin-conf.dのmunin-nodeに次の内容を追記します。
[nginx-cache-multi_サイト名_*] env.logfile /var/log/nginx/サイト名-cache.log
念のためMuninを再起動しておきます。
/etc/init.d/munin-node restart
監視結果は次のようになります。上がキャッシュヒット・キャッシュミスなどのイベントの発生回数を示すグラフで、下が割合を表すグラフです。このほかにも、イベントごとのグラフも生成されます。
まとめ
今回はMuninのプラグインを導入してnginxの監視項目を増やしてみました。
Muninのnginx用プラグインは10個あるのですが、今回はその中のnginx-cache-hit-rateとnginx-cache-multiを紹介しました。
長くなったので他のnginx用プラグインについては次回に続きます。
コメント