Ubuntu で Nginx のステータスを Munin でモニタリング

さくら VPSUbuntu 12.04 LTS を入れたホストで Munin による Nginx の監視を始めたので設定方法をメモしておく。 Node サービスのみセットアップ。

$ sudo apt-get install munin-node

Nginx - stub_status 設定

Nginx には指定したパスを HTTP 叩くと自身の状況をレポートしてくれる HttpStubStatusModule がある。これは Ubuntu 12.04 で apt-get install nginx すると標準で付いている。

stub_status ディレクティブは、 nginx.conf 等のどこかに /nginx_status パスで stub_status が返るように設定する。サーバ内からのアクセスだけ許可するようにも設定しておく。

server {
    listen 80;
    server_name localhost;

    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }   
}

設定したらリロードして試しに叩いて確認しておく。

$ sudo /etc/init.d/nginx reload
$ wget -q -O - http://localhost/nginx_status
Active connections: 1 
server accepts handled requests
 2214 2214 5846 
Reading: 0 Writing: 1 Waiting: 0

Munin の Nginx プラグインを設定

標準で入っている nginx_requestnginx_status を設定しました。 plugins ディレクトリにプラグインスクリプトシンボリックリンクを張ります。

$ cd /etc/munin/plugins
$ sudo ln -s /usr/share/munin/plugins/nginx_request
$ sudo ln -s /usr/share/munin/plugins/nginx_status

プラグインの設定ファイルを編集します。

$ sudo vi /etc/munin/plugin-conf.d/munin-node

最後にnginxのセクションを追加し、env.url として先ほどの stub_status の URL を定義します。

[nginx*]
env.url http://localhost/nginx_status

Munin-node 再起動と確認

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

/var/log/munin/munin-node.log にエラーが出ていないかチェックしておきます。 これで少しおいてからブラウザで集計ページを見ると Nginx requestsNginx Status セクションが増えています。

プラグインのグラフについて

Nginx requests

1秒間当たりのリクエスト数のグラフ

Nginx Status

  • Active connections - 接続数
  • reading - リクエストヘッダの読み込み
  • writing - リクエストボディの読み込みからリクエストの処理そしてクライアントのレスポンス書き込みまで
  • waiting - keep-alive の待ち状態

HttpStubStatusModule - Nginx Community