MuninでServersMan@VPSを監視: nginx その2

監視カメラ

前回はMuninのプラグインを使ってnginxの監視項目を追加しました。

今回はその続きとしてさらに監視項目を増やします。Muninでnginx関連で監視できる項目については前回を参照してください。

準備

今回紹介するプラグインではnginx_statusというNginxのステータス情報を使います。

まずこのステータス情報を取得できるようにします。

次の内容のファイルをlocalhostと言う名前で/etc/nginx/site-availableに作成します。

server {
       listen 127.0.0.1;
       server_name localhost;
       location /nginx_status {
                stub_status on;
                access_log   off;
                allow 127.0.0.1;
                deny all;
       }
}

用意できたらこの設定を有効化します。

sudo ln -s /etc/nginx/sites-available/localhost /etc/nginx/sites-enabled/
sudo service nginx restart

動作確認をして見ます。nginxが動いているサーバにログインしてhttp://localhost/nginx_statusというURLのデータを取得できればOKです。

wget http://localhost/nginx_status
--2014-01-26 14:51:26--  http://localhost/nginx_status
localhost をDNSに問いあわせています... 127.0.0.1
localhost|127.0.0.1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 109 `nginx_status.1' に保存中

100%[======================================>] 109         --.-K/s 時間 0s

2014-01-26 14:51:26 (12.4 MB/s) - `nginx_status' へ保存完了 [109/109]
cat nginx_status
Active connections: 4
server accepts handled requests
 13209 13209 26569
Reading: 0 Writing: 1 Waiting: 3

これで準備完了です。

nginx-combinedプラグイン

このプラグインは上記のnginx_statusの設定ができていればすぐに使用できます。まずシンボリックリンクを作成してこのプラグインを有効にします。

cd /etc/munin/plugins
sudo ln -s /usr/local/share/munin/contrib/plugins/nginx/nginx-combined .

muninを再起動します。

/etc/init.d/munin-node restart

これで次のような情報が表示されるようになります。

nginx-combined

nginx_connection_requestプラグイン

このプラグインもnginx_statusの設定が完了していれば簡単です。シンボリックリンクを作成してこのプラグインを有効にします。

cd /etc/munin/plugins
sudo ln -s /usr/local/share/munin/contrib/plugins/nginx/nginx_connection_request .

そして/etc/munin/plugin-conf.dのmunin-nodeに次の内容を記載します。

[nginx*]
env.url http://localhost/nginx_status
env.ua nginx-status-verifier/0.1

念のためmuninを再起動します。

sudo /etc/init.d/munin-node restart

これで次のような情報が表示されるようになります。

nginx_connection_request

なんか急激に接続数が上がっていますが、自分がWordpressのダッシュボードにアクセスしたのが理由のようです。

nginx_errorプラグイン

このプラグインを使用するにはnginxの設定が必要です。nginxで監視したいサイトの設定のaccess_logをcombinedに設定します。

これには/etc/nginx/site-availableのファイルに次のような行を付け加えます。

access_log /var/log/nginx/サイト名-access.log combined;

nginxを再起動し、このログファイルにリードパーミッションをつけます。

sudo service nginx restart
sudo chmod +r /var/log/nginx/サイト名-access.log

プラグインファイルに実行権限をつけたあと、シンボリックリンクを作成します。

sudo chmod +x /usr/local/share/munin/contrib/plugins/nginx/nginx_error
cd /etc/munin/plugins
sudo ln -s /usr/local/share/munin/contrib/plugins/nginx/nginx_error nginx_error_サイト名

/etc/munin/plugin-conf.dのmunin-nodeに次を追記します。

[nginx_error]
env.logpath    /var/log/nginx
env.logpattern *-access.log

あとはmuninを再起動すれば完了です。

sudo /etc/init.d/munin-node restart

表示される情報は次のように一つのグラフに複数のエラーの発生頻度が表示されます。

nginx_error

短期的なグラフですよくわかりませんが、より長期間のグラフを見るとエラー発生の傾向がつかめる場合があります。このサイトの場合は「404 Not Found」エラーが増加傾向にありました。古いページ内から参照しているリンクが切れているようです。

nginx_memoryプラグイン

このプラグインには特に設定はいりません。プラグインを有効にするだけです。

cd /etc/munin/plugins
sudo ln -s /usr/local/share/munin/contrib/plugins/nginx/nginx_memory .
sudo /etc/init.d/munin-node restart

表示されるグラフは次のようになります。

nginx_memory

このサイトでは特に消費メモリの増減はないようです。

nginx_working_setプラグイン

このプラグインは設定が非常に簡単です。シンボリックリンクを作成してmuninを再起動させるだけです。

sudo ln -s /usr/local/share/munin/contrib/plugins/nginx/nginx_working_set /etc/munin/plugins/
sudo /etc/init.d/munin-node restart

その他のプラグイン

githubにはそのほかに、nginx_upstream・nginx_upstream_multi・nginx_vhost_trafficというプラグインがありますが、うまく設定できなかったので、今回の紹介からは省きます。

まとめ

今回はMuninにnginx用のプラグインを4つ導入して監視項目を増やしてみました。

これらのデータがWebサイトの安定性向上にどれくらい有効かはわかりませんが、動作状態を確認できるというのは便利なものです。

次回はmuninを使ったmysqlの監視について紹介したいと思います。