複数のサーバーのリソース監視を、専用の監視サーバーをLinuxで構築して行いたい場合、監視ツールとしていくつもの選択肢がありますが、ここでは小規模環境向けのリソース監視ツールとして最適な「Munin」を使った方法を紹介します。
目次
Muninとは
Muninは、エージェント型のリソース監視ツールで、おもにCPU利用率、ディスク使用率、メモリ使用量、ネットワーク通信量等を監視できます。
構成としては、監視対象マシンに、エージェントソフトウェア「munin-node」をインストールし、監視サーバーには「munin-server」をインストールします。
Muninの特徴は、次のとおりです。
- 設定が他の監視ツールに比べてカンタン
- インターフェースがWebブラウザ
- リソースの使用量をグラフで確認できる
- プラグインを導入することで、監視項目を増やすことができる
各種のリソース使用量の推移をグラフで確認できると、過去から現在にかけてどのように変化しているかがよくわかるため、サーバー環境のトラブルシューティングをする場合に、トラブルの発生時期を特定したり、トラブルの兆候をとらえるのにとても便利なのです。
なお、Muninについてより詳細な情報を知りたい方は、以下の「Munin Guide(英語)」が役立ちます。
Muninサーバーの構築手順
ここでは、RedHat系Linux(CentOS 7)を最小構成(Minimal)でインストールした環境に、Muninを導入する手順を紹介します。なお、インターフェース用のWebサーバーソフトとしては「Nginx」を使用します。
Nginxのインストール
Nginxは、Mainlineの最新バージョンをインストールしたいので、リポジトリファイルを作成してからインストールします。
# vi /etc/yum.repos.d/nginx-mainline.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
ファイルを作成したら、以下のコマンドでNginxをインストールします。
# yum install --enablerepo=nginx nginx
インストールが完了したらサービスの起動と自動起動設定を行っておきます。
# systemctl start nginx
# systemctl enable nginx
Muninのインストール
Muninは、epeplリポジトリからインストールするため、まずは以下のパッケージをインストールします。
# yum install epel-release
次に、以下のコマンドでMuninと必要なパッケージをインストールします。
# yum install munin --enablerepo=epel
Muninの設定
Muninの設定ファイルは「/etc/munin/munin.conf」にありますが、ここではデフォルト設定で利用するため、編集はしません。
Nginxの設定
NginxにMunin用の設定を追加するため、以下のファイルを新規作成します。
# vi /etc/nginx/conf.d/munin.conf
ここでは、次のような内容で設定しています。
- IPアドレス(192.168.10.170)、80番ポート(http)で待ち受け
- MuninのWebインターフェースには、同一ネットワークセグメントからのアクセスのみを許可
- FastCGI周りの設定は、Muninの公式ページなどを参考に
ローカルネットワーク内でのみの使用なら、アクセス制限は必要ないかもしれませんが、インターネット上に公開するサーバーにMuninをインストールする場合は、最低でもIPアドレスによる制限は必須でしょう。
server {
listen 80;
server_name 192.168.10.170;
root /var/www/html/munin/;
index index.html index.htm;
#アクセス制限設定
allow 192.168.10.0/24;
allow 127.0.0.1;
deny all;
# redirect server error pages to the static page /40x.html
error_page 404 /404.html;
location = /40x.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ^~ /munin-cgi/munin-cgi-graph/ {
access_log off;
fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/var/run/munin/munin-cgi-graph.sock;
include fastcgi_params;
}
location /static/ {
alias /etc/munin/static/;
}
}
Nginxの設定が済んだら、次のコマンドで設定ファイルに問題がないか確認しておきます。
# nginx -t
設定ファイルに問題がなければ、次のように表示されます。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
サービスの開始
Nginxのサービスを再起動して、Munin関連のサービスを開始し、マシン起動時にMuninが自動的に開始するよう設定しておきます。
# systemctl restart nginx
# systemctl start munin-cgi-graph
# systemctl enable munin-cgi-graph
# systemctl start munin-node
# systemctl enable munin-node
ファイアウォールの設定
Webインターフェースに外部からアクセスできるように、firewalldでhttp(TCP/80)の待ち受けを許可します。
# firewall-cmd --permanent --add-service=http
success
設定が済んだら、以下のコマンドで設定を反映させます。
# firewall-cmd --reload
success
Muninサーバーの設定は、以上で完了です。
動作確認
同一ネットワーク上の任意のマシンから、ブラウザでMuninサーバーにアクセスし、以下の画像のように表示されていればOKです。
なお、デフォルトでMuninサーバー自身も監視対象となり、画面中央に表示されている「localhost」がそれです。
監視対象マシンの設定
ここでは、CentOS 7を最小構成(Minimal)でインストールしたマシンを、監視対象マシンとして設定する手順を紹介します。
Munin-nodeのインストール
監視対象のマシンに「munin-node」をインストールします。
# yum -y install epel-release
# yum -y install munin-node --enablerepo=epel
Munin-nodeの設定
以下のファイルを編集して、接続を許可するMunin-serverのIPアドレスを入力します。
ここでは、監視サーバーのIPアドレスを「192.168.10.170」として設定しています。
# vi /etc/munin/munin-node.conf
…
allow ^192\.168\.10\.170$
…
サービスの開始
設定が完了したら、サービスを開始して自動起動するよう設定しておきます。
# systemctl start munin-node
# systemctl enable munin-node
動作確認
Munin-nodeが正常に動作しているか確認するために、以下のコマンドを実行して、ロードアベレージを取得してみます。
# munin-run load
load.value 0.04
上のように、何らかの数値が表示されていれば、OKです。
ファイアウォールの設定
Munin-serverは、Munin-nodeのTCP4949番ポートへアクセスして情報を収集するため、firewalldで待ち受けを許可します。
# firewall-cmd --add-service=munin-node --permanent
success
設定が済んだら、以下のコマンドで設定を反映させます。
# firewall-cmd --reload
success
Munin-serverに監視対象の情報を追加
Munin-serverにある設定ファイルに監視対象マシンの情報を追加します。
# vi /etc/munin/conf.d/local.conf
ここでは、監視対象マシン名を「munin-node01」とし、監視対象マシンのIPアドレスを「192.168.10.171」として設定しています。
#監視対象マシンの情報を追記
[munin-node01]
address 192.168.10.171
use_node_name yes
しばらく待っていると、MuninのWebインターフェース上に監視対象として設定したマシンが表示され、グラフなどを確認できるようになります。
即時で反映させたいときは、Munin-server上で、以下のコマンドを実行します。
# su - munin --shell=/usr/bin/munin-cron
あとがき
ここでは、Muninの基本的な構築手順を紹介しましたが、プラグインを追加すればWebサービスやデータベースを監視するといったこともできます。