muninでサーバの各種ステータスをグラフ化する(CentOS 6.4)

自宅サーバ(ノートPC)のCPU温度を計りたくなったので、この機会にmuninでグラフ化させてみることにした。 muninはCPU温度に限らず、ロードアベレージトラフィックなどさまざまな情報をグラフ化し、Webブラウザから確認できるようにするサーバモニタリングツールである。

環境

$ uname -a
Linux serv 2.6.32-358.11.1.el6.x86_64 #1 SMP Wed Jun 12 03:34:52 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/redhat-release
CentOS release 6.4 (Final)

epelリポジトリの追加

muninはExtra Packages for Enterprise Linux (EPEL)リポジトリを使うと、簡単にインストールできる。 EPELリポジトリを追加していない場合は、下記のようにして追加する。

$ wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm
$ sudo rpm -ivh epel-release-6-8.noarch.rpm

設定ファイルを編集し、明示的に指定した場合以外は参照しないようにする。

$ sudo vi /etc/yum.repos.d/epel.repo
[epel]
enabled=0

インストール

EPELを利用して、muninのサーバ (munin)とクライアント (munin-node)をインストールする。 また、事前にWebサーバとしてApache (httpd)をインストールしておく。

$ sudo yum install httpd
$ sudo yum --enablerepo=epel install munin munin-node
$ sudo service httpd start

iptablesを利用している場合は、80/tcpでのinbound通信を許可する。

$ sudo vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
$ sudo service iptables restart

初期設定

muninのWeb UIはデフォルトでBasic認証がかかるようになっている。 下記のようにして、Basic認証に用いるアカウントを作成する。

$ sudo htpasswd -c /etc/munin/munin-htpasswd john

munin-nodeを起動し、起動時にmuninクライアントが自動実行されるようにしておく。

$ sudo service munin-node start
$ sudo chkconfig munin-node on

動作確認

http://localhost/munin/から、muninのWeb UIにアクセスする。 Basic認証は前項で作成したアカウントで認証できる。

うまく表示されない場合は、muninクライアントが情報を収集するまで5~10分程度待ち、再度アクセスする。

グラフ画像を動的生成する

デフォルトではmuninは5分置きにグラフ画像を静的生成するようになっている。 監視サーバが複数ある場合は静的生成でよいのだが、ここではlocalhost1台のみの監視しかしないため、アクセス時に動的生成するように設定変更する。

$ sudo vi /etc/munin/munin.conf
graph_strategy cgi
$ sudo service munin-node restart

この状態でWeb UIにアクセスすると、グラフ画像の動的生成時にログファイルが新規作成できないことにより次のようなエラーメッセージが表示され、画像が表示されない。

Can't open /var/log/munin/munin-graph.log (Permission denied) at ...

そこで、ログフォルダの所有グループをapacheに変更することで、ログファイルが作成され画像が表示されるようになる。

$ sudo chgrp apache /var/log/munin

なお、HTMLページについても動的生成させることが可能だが、Apache側で設定が必要になるためここでは行わない。

CPU温度、ファン回転数、電圧数も表示させる

muninに付属しているプラグインを利用することで、CPU温度などの情報もグラフで表示させることができる。

CPU温度などを表示させるため、まずlm_sensorsパッケージをインストールし、sensorsコマンドで情報が表示できるようにしておく。

$ sudo yum install lm_sensors
$ sudo sensors-detect
$ sudo sensors

シンボリックリンクを張り、プラグインを有効にする。

$ sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp
$ sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_fan
$ sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_volt
$ sudo service munin-node restart

Web UIにアクセスすると、sensorsの項目が追加されていることが確認できる。