server-memo.net

muninでNginxを監視

   

CentOS7にインストールされているnginxをmuninで監視する方法です。

nginx設定

初期状態の「nginx」は、「munin-node」での監視に必要なステータスの情報が取得できないため、ステータスを取得できるように設定を追加する必要があります。

ステータス取得設定

「nginx」には自分の状況をレポートするための「HttpStubStatusModule」が用意されているので、それを使用できるように「stub_status on」の設定を「location」ディレクティブ内で行う必要があります。

設定するファイルは「CentOS7」であれば「/etc/nginx/nginx.conf」の「server」ディレクティブに設定を追加していけば良いでしょう

※CentOS6であれば「/etc/nginx/conf.d/default.conf」となります。

設定例

下記は「CentOS7」環境の「nginx」の設定ファイルである、「/etc/nginx/nginx.conf」に設定を行った例となります。


    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

#######  設定追加部分  #######

        location /nginx_status {
            stub_status on;
            allow ::1;
            allow 127.0.0.1;
            deny all;
        }

ステータスを取得するためのURLは「location」ディレクティブで指定したものとなるため、上記の例では「http://localhost/nginx_status」にアクセスすることでステータスを表示することが出来ます。

設定反映

設定の書式に間違いがないかを確認してから、「nginx」を再起動して設定を反映させます。

設定書式確認
# nginx -t
nginx再起動
# nginx -s reload

動作確認

設定の反映が完了しましたら、「nginx」のステータスが取得できるかどうかの確認を行ってください。

# wget -q -O - http://localhost/nginx_status
Active connections: 1
server accepts handled requests
 51 51 64
Reading: 0 Writing: 1 Waiting: 0

上記のようにステータスが取得できていれば問題ありません。

ちなみに、ここで取得できる情報は下記の内容となります。

項目名 説明
Active connections 現時点の接続数
server accepts handled requests この項目はnginxが起動してからの総数となり、左からそれぞれ下記の接続数となります

  • クライアントからの接続総数
  • 処理された接続総数
  • クライアントからのリクエスト総数

 

Reading リクエストヘッダーを読み込んでいる現在の接続数
Writing クライアントに応答を返している現在の接続数
Waiting クライアントからのリクエストを待っている状態の現在の接続数

munin-node設定

「nginx」のステータスを取得できるようになりましたら、今度は「munin-node」にプラグインを追加して監視を行えるようにしていきます。

nginx監視用プラグインの追加

「nginx」を監視するためのプラグインとして、下記のプラグインが用意されています。

  • nginx_request
  • nginx_status

プラグイン追加

「/usr/share/munin/plugins/」ディレクトリに格納されているnginx監視用プラグインへのリンクを、「/etc/munin/plugins」に作成することでプラグインが追加され監視が可能となります。

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

動作確認

プラグインの追加作業が完了しましたら、「munin-run」コマンドを使用して、実際にステータスを取得することができるかの確認を行っていきます。

nginx_request情報取得確認
# munin-run nginx_request
request.value 66
nginx_status情報取得確認
# munin-run nginx_status
total.value 1
reading.value 0
writing.value 1
waiting.value 0

こんな感じで、ステータス情報が取得できていれば問題ありません。

設定反映

「munin-node」を再起動して、追加したプラグインを有効化します。

CentOS7の場合
# systemctl restart munin-node
CentOS6以前の場合
# service munin-node restart

Munin動作確認

「Munin」によるデータ収集は通常5分間隔で行われているため、5分ぐらいまってからwebブラウザで「Munin」の管理画面にアクセスして「nginx」についてのグラフが表示されているか確認してみてください。

もし、そんなに待てないというのであれば、監視サーバ側で下記のコマンドを実行すると、手動で情報を取得することが出来ますので、実行してから「Munin」の管理画面にアクセスしてグラフを確認してみたください。

# su - munin --shell=/usr/bin/munin-cron

 - Munin