はじめに
Muninは、2004年7月にバージョン1.0.0がリリースされた比較的新しいサーバー監視ツールです。Muninは、サーバー監視ツールとしてサーバーの現在の状況だけで無く、過去の状況もグラフを用いた視覚的によって、把握しやすくなっています。今回は、Muninを用いたサーバー監視システムの構築方法を解説します。
前提条件
構築に必要なサーバー要件および、導入パッケージは下記のとおりです。
- サーバー要件
サーバー要件は、次のとおりです。
Muninサーバー ホスト名 munin-server IPアドレス 192.168.0.50 OS CentOS 6.5 i386 Apache 2.2.15 サードパーティリポジトリ EPEL Muninクライアント ホスト名 munin-client IPアドレス 192.168.0.20 OS CentOS 6.5 i386 Apache 2.2.15 MySQL 5.5.35 サードパーティリポジトリ EPEL なお、Muninサーバーは、毎時0分/5分/10分など5分単位で閲覧用のウエブページとグラフを作成します。
公式サイトには、ハードウェアスペックについて言及されていませんが、メモリ不足はサーバーのパフォーマンスに影響を及ぼしますので、Muninサーバーに搭載するメモリ容量は多い方が良いでしょう。 - 導入するパッケージ
導入するパッケージは、次のとおりです。
サーバー パッケージ名 バージョン Muninサーバー munin 2.0.19 Muninクライアント munin-node 2.0.19
Muninサーバーの構築
下記の手順で構築します。
- Muninパッケージのインストール
EPELリポジトリから、Muninパッケージをインストールします。
$ sudo yum -y install munin --enablerepo=epel
[vagrant@munin-server ~]$ sudo yum -y install munin --enablerepo=epel Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile epel/metalink | 6.5 kB 00:00 Including mirror: www.ftp.ne.jp Including mirror: ftp.iij.ad.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp * base: www.ftp.ne.jp Including mirror: ftp.kddilabs.jp Including mirror: ftp.iij.ad.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.riken.jp Including mirror: ftp.jaist.ac.jp * epel: ftp.kddilabs.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.iij.ad.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp * extras: www.ftp.ne.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.iij.ad.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.riken.jp
perl-Mail-Sendmail.noarch 0:0.79-12.el6 perl-MailTools.noarch 0:2.04-4.el6 perl-Net-CIDR.noarch 0:0.14-1.el6 perl-Net-DNS.i686 0:0.65-5.el6 perl-Net-SNMP.noarch 0:5.2.0-4.el6 perl-Net-SSLeay.i686 0:1.35-9.el6 perl-Net-Server.noarch 0:0.97-7.el6 perl-Params-Validate.i686 0:0.92-3.el6 perl-Socket6.i686 0:0.23-4.el6 perl-String-CRC32.i686 0:1.4-9.el6 perl-Taint-Runtime.i686 0:0.03-9.el6 perl-Time-HiRes.i686 4:1.9721-136.el6 perl-TimeDate.noarch 1:1.16-11.1.el6 perl-URI.noarch 0:1.40-2.el6 perl-XML-DOM.noarch 0:1.44-7.el6 perl-XML-LibXML.i686 1:1.70-5.el6 perl-XML-NamespaceSupport.noarch 0:1.10-3.el6 perl-XML-Parser.i686 0:2.36-7.el6 perl-XML-RegExp.noarch 0:0.03-7.el6 perl-XML-SAX.noarch 0:0.96-7.el6 perl-YAML-Syck.i686 0:1.07-4.el6 perl-libwww-perl.noarch 0:5.833-2.el6 pixman.i686 0:0.26.2-5.1.el6_5 postgresql-libs.i686 0:8.4.18-1.el6_4 rrdtool.i686 0:1.3.8-6.el6 rrdtool-perl.i686 0:1.3.8-6.el6 sysstat.i686 0:9.0.4-22.el6 Complete!
- 管理ページへのユーザー認証設定
Muninをインストールすると、Muninの管理ページがインストールされますので、管理ページへのアクセス制御を行うためのユーザー認証情報を設定します、
$ sudo htpasswd -b /etc/munin/munin-htpasswd munin admin
ここでは、ユーザー名にmunin、パスワードにadminを指定しています。
- Apacheの再起動
Apacheを再起動し、変更を有効にします。
$ sudo service httpd restart
- munin-nodeの起動と自動起動設定
Muninをインストールすると、監視エージェントのmunin-nodeもインストールされますので、エージェントの起動と自動起動設定を行います。
$ sudo service munin-node start $ sudo chkconfig munin-node on
- 動作確認
Muninを起動すると、ディスク使用量やメモリ使用量などの監視データの収集が開始され、収集されたデータを元に管理ページが5分おきに作成されます。このため、動作確認の際には5分以上待ってから下記のページにアクセスします。
http://192.168.0.50/munin/
Muninが作成するコンテンツは、デフォルトの/var/html/www/munin下に作成されるため、下図のようにHTMLファイルが生成されたら、ウエブサイトにアクセスします。
初めて管理ページにアクセスすると、ユーザー認証画面が表示されますので、手順2で指定したID、パスワードを入力します。
認証に成功すると、Muninのトップページが表示され、監視中のサーバーが表示されます。
監視項目の追加
エージェントが監視するデフォルトの監視項目(Sensor)は、disk/network/postfix/processes/systemの6項目となっていますので、サーバー上で稼働するApacheのSensor(監視項目)を追加します。
- Apacheプラグインの設定
デフォルトのSensorは、プラグインの設定は不要ですが、デフォルト以外のSensorにはプラグインの設定が必要となります。
$ sudo ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses $ sudo ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes $ sudo ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume
- httpd.confの設定
/etc/httpd/conf/httpd.confを下記のとおり設定します。
LoadModule status_module modules/mod_status.so ExtendedStatus On
設定が終了したら、Apacheを再起動します。
$ sudo service httpd restart
- Apacheプラグインの動作確認
セットアップしたApache監視プラグインの動作を確認します。
$ munin-run apache_accesses $ munin-run apache_processes $ munin-run apache_volume
- munin-nodeの再起動
エージェントの再起動を行います。
$ sudo service munin-node restart
- 動作確認
追加したSensorがトップページに表示されるか確認します。
[disk]監視項目の左隣りに[apache]が追加されています。
Muninクライアントの構築
下記の手順で構築します。
ここでは、Apacheおよび、MySQL Sensorを追加します。
- munin-nodeパッケージのインストール
監視対象サーバーに、監視エージェントをインストールします。
$ sudo yum -y install munin-node --enablerepo=epel
[vagrant@munin-client ~]$ sudo yum -y install munin-node --enablerepo=epel Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile epel/metalink | 6.5 kB 00:00 Including mirror: www.ftp.ne.jp Including mirror: ftp.riken.jp Including mirror: ftp.iij.ad.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: mirror.fairway.ne.jp * base: www.ftp.ne.jp Including mirror: ftp.kddilabs.jp Including mirror: ftp.riken.jp Including mirror: ftp.iij.ad.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.jaist.ac.jp * epel: ftp.kddilabs.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.riken.jp Including mirror: ftp.iij.ad.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: mirror.fairway.ne.jp * extras: www.ftp.ne.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.riken.jp Including mirror: ftp.iij.ad.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: mirror.fairway.ne.jp
hdparm.i686 0:9.43-4.el6 munin-common.noarch 0:2.0.19-1.el6 perl-Compress-Raw-Zlib.i686 1:2.021-136.el6 perl-Compress-Zlib.i686 0:2.021-136.el6 perl-Crypt-DES.i686 0:2.05-9.el6 perl-DBD-Pg.i686 0:2.15.1-4.el6_3 perl-Digest-HMAC.noarch 0:1.01-22.el6 perl-Digest-SHA1.i686 0:2.12-2.el6 perl-HTML-Parser.i686 0:3.64-2.el6 perl-HTML-Tagset.noarch 0:3.20-4.el6 perl-IO-Compress-Base.i686 0:2.021-136.el6 perl-IO-Compress-Zlib.i686 0:2.021-136.el6 perl-IO-Multiplex.noarch 0:1.13-1.el6 perl-List-MoreUtils.i686 0:0.22-10.el6 perl-Net-CIDR.noarch 0:0.14-1.el6 perl-Net-DNS.i686 0:0.65-5.el6 perl-Net-SNMP.noarch 0:5.2.0-4.el6 perl-Net-Server.noarch 0:0.97-7.el6 perl-Time-HiRes.i686 4:1.9721-136.el6 perl-URI.noarch 0:1.40-2.el6 perl-XML-LibXML.i686 1:1.70-5.el6 perl-XML-NamespaceSupport.noarch 0:1.10-3.el6 perl-XML-Parser.i686 0:2.36-7.el6 perl-XML-SAX.noarch 0:0.96-7.el6 perl-libwww-perl.noarch 0:5.833-2.el6 postgresql-libs.i686 0:8.4.18-1.el6_4 sysstat.i686 0:9.0.4-22.el6 Complete!
- munin-node設定ファイルの編集
監視サーバーのIPアドレスを設定ファイルに追加します。
sudo vi /etc/munin/munin-node.conf
allow ^192\.168\.0\.50$
- Apache Sensorの追加
前述の”監視項目の追加”の手順1から3までを実行して、Apache Sensorを追加します。
- MySQL Sensorの追加
MySQLを監視項目として追加します。
プラグイン設定ファイルの編集MySQLのアクセスに必要な情報を、下記のとおり設定ファイルに追加します。
env.mysqloptsには、mysqlコマンドに渡すコマンドライン引数を指定します。
ここでは、MySQLのrootユーザーのパスワードを設定しています。$ sudo vi /etc/munin/plugin-conf.d/munin-node
[mysql*] env.mysqlopts -u root -padmin env.mysqladmin /usr/bin/mysqladmin
MySQLプラグインの設定MySQLプラグインを設定します。
$ for p in mysql_bytes mysql_innodb mysql_isam_space_ mysql_queries mysql_slowqueries mysql_threads; do sudo ln -s /usr/share/munin/plugins/$p /etc/munin/plugins/$p; done
- munin-nodeの起動と自動起動設定
エージェントの起動と自動起動設定を行います。
$ sudo service munin-node start $ sudo chkconfig munin-node on
[vagrant@munin-client ~]$ sudo service munin-node start Starting Munin Node: [ OK ] [vagrant@munin-client ~]$ sudo chkconfig munin-node on
監視対象サーバーの追加
Muninクライアントの設定が終了したら、MuninサーバーにMuninクライアントを追加します。
- munin-node設定ファイルの編集
MuninクライアントのIPアドレスを設定ファイルに追加します。
sudo vi /etc/munin/munin.conf
[munin-client] address 192.168.0.20 use_node_name yes
- 動作確認
追加したMuninクライアントとクライアントに追加したSensorがトップページに表示されるか確認します。
追加が成功すると、/var/www/html/munin下にmunin.conf内で指定した名前(ここでは、munin-client)のフォルダが作成され、エージェントから取得した監視データを元にHTMLファイルが作成されます。
まとめ
ここまで、Muninを用いたサーバー監視システムの構築方法を解説しました。Muninは、Nagiosと同様にサーバーの現在の状況を監視するだけでなく、監視結果を日次、週次、月次、年次単位でグラフ表示することで、サーバーの過去の状況も容易に把握することができます。Nagiosと組み合わせて使用することで、緊急時のアラートをNagiosで実行し、運用状況をMuninで把握することができます。