サーバーのシソース管理「munin」を設定

ネットで調べたところサーバのリソース管理は、今は、「Munin」という便利なのがある、ということで、早速仮想環境で

確認したところ、なかなかいい感じです。

以前、20台以上の Linux 機を、net-snmp と MRTG で苦労して構築した環境が、ものの数分でできてしまう。いや、い

い時代になりました。デフォルトの設定では、「こんなの見るかな?」と思えるグラフもあるのですが、削除や追加は簡

単にできるし、いろいろとやれそうです。

仮想環境でいい感じなので本番に入れようとしたら、はまりました。

本番のサーバーは、CentOS 5.7 (古い!)。
CentOSなので、yum で epel から簡単に入ると思っていたのですが、ダメみたいです。
メッセージは、こんなの。

# yum --enablerepo epel install munin
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.nara.wide.ad.jp
 * updates: ftp.nara.wide.ad.jp
epel                                                     | 3.6 kB     00:00     
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package munin.noarch 0:2.0.25-11.el5 set to be updated
--> Processing Dependency: sysstat for package: munin
--> Processing Dependency: perl(Taint::Runtime) for package: munin
--> Processing Dependency: perl(RRDs) for package: munin
--> Processing Dependency: perl(Params::Validate) for package: munin
--> Processing Dependency: perl(Net::Server::Fork) for package: munin
--> Processing Dependency: perl(Net::Server) for package: munin
--> Processing Dependency: perl(Net::SSLeay) for package: munin
--> Processing Dependency: perl(Net::SNMP) for package: munin
--> Processing Dependency: perl(Net::CIDR) for package: munin
--> Processing Dependency: perl(Munin::Node::ProxySpooler) for package: munin
--> Processing Dependency: perl(Munin::Node::Config) for package: munin
--> Processing Dependency: perl(Munin::Common::Timeout) for package: munin
--> Processing Dependency: perl(Munin::Common::TLSClient) for package: munin
--> Processing Dependency: perl(Munin::Common::Defaults) for package: munin
--> Processing Dependency: perl(Munin::Common::Config) for package: munin
--> Processing Dependency: perl(Log::Log4perl) for package: munin
--> Processing Dependency: perl(IO::Socket::INET6) for package: munin
--> Processing Dependency: perl(HTML::Template) for package: munin
--> Processing Dependency: perl(File::Copy::Recursive) for package: munin
--> Processing Dependency: perl(FCGI) for package: munin
--> Processing Dependency: perl(Digest::SHA1) for package: munin
--> Processing Dependency: perl(Digest::HMAC) for package: munin
--> Processing Dependency: perl(DateTime) for package: munin
--> Processing Dependency: perl(Date::Manip) for package: munin
--> Processing Dependency: perl(Crypt::DES) for package: munin
--> Processing Dependency: perl(Carp::Always) for package: munin
--> Processing Dependency: perl(Cache::Memcached) for package: munin
--> Processing Dependency: perl(Cache::Cache) for package: munin
--> Running transaction check
---> Package fcgi-perl.x86_64 0:2.4.0-13.el5 set to be updated
--> Processing Dependency: fcgi = 2.4.0-13.el5 for package: fcgi-perl
---> Package munin-common.noarch 0:2.0.25-11.el5 set to be updated
---> Package munin-node.noarch 0:2.0.25-11.el5 set to be updated
--> Processing Dependency: perl(XML::Parser) for package: munin-node
--> Processing Dependency: perl(XML::LibXML) for package: munin-node
--> Processing Dependency: perl(Net::DNS) for package: munin-node
--> Processing Dependency: perl(List::MoreUtils) for package: munin-node
--> Processing Dependency: perl(DBD::Pg) for package: munin-node
---> Package perl-Cache-Cache.noarch 0:1.05-1.el5 set to be updated
--> Processing Dependency: perl(IPC::ShareLite) for package: perl-Cache-Cache
--> Processing Dependency: perl(Error) for package: perl-Cache-Cache
---> Package perl-Cache-Memcached.noarch 0:1.26-3.el5 set to be updated
---> Package perl-Carp-Always.noarch 0:0.09-2.el5 set to be updated
---> Package perl-Crypt-DES.x86_64 0:2.05-3.el5 set to be updated
---> Package perl-DateManip.noarch 0:5.44-1.2.1 set to be updated
---> Package perl-DateTime.x86_64 1:0.41-1.el5 set to be updated
--> Processing Dependency: perl(Class::Singleton) >= 1.03 for package: perl-DateTime
--> Processing Dependency: perl(Class::Singleton) for package: perl-DateTime
---> Package perl-Digest-HMAC.noarch 0:1.01-15 set to be updated
---> Package perl-Digest-SHA1.x86_64 0:2.11-1.2.1 set to be updated
---> Package perl-File-Copy-Recursive.noarch 0:0.35-1.el5 set to be updated
---> Package perl-HTML-Template.noarch 0:2.9-1.el5.2 set to be updated
---> Package perl-IO-Socket-INET6.noarch 0:2.51-2.fc6 set to be updated
--> Processing Dependency: perl(Socket6) for package: perl-IO-Socket-INET6
---> Package perl-Log-Log4perl.noarch 0:1.13-2.el5 set to be updated
--> Processing Dependency: perl(Log::Dispatch::FileRotate) >= 1.10 for package: perl-Log-Log4perl
--> Processing Dependency: perl(XML::DOM) for package: perl-Log-Log4perl
--> Processing Dependency: perl(Log::Dispatch::Syslog) for package: perl-Log-Log4perl
--> Processing Dependency: perl(Log::Dispatch::Screen) for package: perl-Log-Log4perl
--> Processing Dependency: perl(Log::Dispatch::File) for package: perl-Log-Log4perl
--> Processing Dependency: perl(IPC::Shareable) for package: perl-Log-Log4perl
---> Package perl-Net-CIDR.noarch 0:0.13-2.el5 set to be updated
---> Package perl-Net-SNMP.noarch 0:5.2.0-1.el5.1 set to be updated
---> Package perl-Net-SSLeay.x86_64 0:1.30-4.fc6 set to be updated
---> Package perl-Net-Server.noarch 0:0.96-2.el5 set to be updated
--> Processing Dependency: perl(IO::Multiplex) for package: perl-Net-Server
---> Package perl-Params-Validate.x86_64 0:0.88-3.el5 set to be updated
---> Package perl-Taint-Runtime.x86_64 0:0.03-1.el5.1 set to be updated
---> Package rrdtool-perl.x86_64 0:1.2.27-4.el5 set to be updated
--> Processing Dependency: rrdtool = 1.2.27-4.el5 for package: rrdtool-perl
--> Processing Dependency: librrd.so.2()(64bit) for package: rrdtool-perl
---> Package sysstat.x86_64 0:7.0.2-13.el5 set to be updated
--> Running transaction check
---> Package fcgi.x86_64 0:2.4.0-13.el5 set to be updated
---> Package perl-Class-Singleton.noarch 0:1.03-3.el5 set to be updated
---> Package perl-DBD-Pg.x86_64 0:1.49-4.el5_8 set to be updated
---> Package perl-Error.noarch 1:0.17010-1.el5 set to be updated
---> Package perl-IO-Multiplex.noarch 0:1.08-5.el5 set to be updated
---> Package perl-IPC-ShareLite.x86_64 0:0.13-4.el5 set to be updated
---> Package perl-List-MoreUtils.x86_64 0:0.33-5.el5 set to be updated
---> Package perl-Log-Dispatch.noarch 0:2.20-1.el5 set to be updated
--> Processing Dependency: perl(Mail::Sendmail) for package: perl-Log-Dispatch
--> Processing Dependency: perl(Mail::Sender) for package: perl-Log-Dispatch
--> Processing Dependency: perl(Mail::Send) for package: perl-Log-Dispatch
--> Processing Dependency: perl(MIME::Lite) for package: perl-Log-Dispatch
---> Package perl-Log-Dispatch-FileRotate.noarch 0:1.16-1.el5 set to be updated
---> Package perl-Log-Log4perl.noarch 0:1.13-2.el5 set to be updated
--> Processing Dependency: perl(IPC::Shareable) for package: perl-Log-Log4perl
---> Package perl-Net-DNS.x86_64 0:0.59-3.el5 set to be updated
--> Processing Dependency: perl(Net::IP) for package: perl-Net-DNS
---> Package perl-Socket6.x86_64 0:0.19-3.fc6 set to be updated
---> Package perl-XML-DOM.noarch 0:1.44-2.el5 set to be updated
--> Processing Dependency: perl(XML::RegExp) for package: perl-XML-DOM
---> Package perl-XML-LibXML.x86_64 0:1.58-6 set to be updated
--> Processing Dependency: perl-XML-NamespaceSupport for package: perl-XML-LibXML
--> Processing Dependency: perl-XML-LibXML-Common for package: perl-XML-LibXML
--> Processing Dependency: perl(XML::SAX::Exception) for package: perl-XML-LibXML
--> Processing Dependency: perl(XML::LibXML::Common) for package: perl-XML-LibXML
--> Processing Dependency: perl-XML-SAX for package: perl-XML-LibXML
--> Processing Dependency: perl(XML::SAX::DocumentLocator) for package: perl-XML-LibXML
--> Processing Dependency: perl(XML::SAX::Base) for package: perl-XML-LibXML
--> Processing Dependency: perl(XML::NamespaceSupport) for package: perl-XML-LibXML
---> Package perl-XML-Parser.x86_64 0:2.34-6.1.2.2.1 set to be updated
---> Package rrdtool.x86_64 0:1.2.27-4.el5 set to be updated
--> Running transaction check
---> Package perl-Log-Log4perl.noarch 0:1.13-2.el5 set to be updated
--> Processing Dependency: perl(IPC::Shareable) for package: perl-Log-Log4perl
---> Package perl-MIME-Lite.noarch 0:3.01-5.el5 set to be updated
---> Package perl-Mail-Sender.noarch 0:0.8.13-2.el5.1 set to be updated
---> Package perl-Mail-Sendmail.noarch 0:0.79-9.el5.1 set to be updated
---> Package perl-MailTools.noarch 0:1.77-1.el5.centos set to be updated
--> Processing Dependency: perl(Date::Format) for package: perl-MailTools
--> Processing Dependency: perl(Date::Parse) for package: perl-MailTools
---> Package perl-Net-IP.noarch 0:1.25-2.fc6 set to be updated
---> Package perl-XML-LibXML-Common.x86_64 0:0.13-8.2.2 set to be updated
---> Package perl-XML-NamespaceSupport.noarch 0:1.09-1.2.1 set to be updated
---> Package perl-XML-RegExp.noarch 0:0.03-2.el5 set to be updated
---> Package perl-XML-SAX.noarch 0:0.14-13.el5 set to be updated
--> Running transaction check
---> Package perl-Log-Log4perl.noarch 0:1.13-2.el5 set to be updated
--> Processing Dependency: perl(IPC::Shareable) for package: perl-Log-Log4perl
---> Package perl-TimeDate.noarch 1:1.16-5.el5 set to be updated
--> Finished Dependency Resolution
perl-Log-Log4perl-1.13-2.el5.noarch from epel has depsolving problems
  --> Missing Dependency: perl(IPC::Shareable) is needed by package perl-Log-Log4perl-1.13-2.el5.noarch 

(epel)
Error: Missing Dependency: perl(IPC::Shareable) is needed by package perl-Log-Log4perl-1.13-2.el5.noarch 

(epel)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.
#
#

エラーが出ている、
perl-Log-Log4perl-1.13-2.el5.noarch
ですが、どうやってもインストールできませんでした。

やってみのは、次のとおり。
(1) yum で perl-Log-Log4perl-1.13-2.el5.noarch をインストールしようとしたがダメ。
(2) yum の設定で、epel は、国内のミラーを参照しているのですが、このミラー4つを直接指定してみたのですが、それ

ぞれ全てでエラーでした。
(3) じゃ、ということで perl-Log-Log4perl-1.13-2.el5.noarch.rpm をダウンロードして、rpm コマンドで入れてみよう

としたのですが、これもダメ。

もしかして、perl の全パッケージをインストールする必要があるのかな。

# rpm -ivh perl-Log-Log4perl-1.13-2.el5.noarch.rpm
error: Failed dependencies:
	perl(IPC::Shareable) is needed by perl-Log-Log4perl-1.13-2.el5.noarch
	perl(Log::Dispatch::File) is needed by perl-Log-Log4perl-1.13-2.el5.noarch
	perl(Log::Dispatch::FileRotate) >= 1.10 is needed by perl-Log-Log4perl-1.13-2.el5.noarch
	perl(Log::Dispatch::Screen) is needed by perl-Log-Log4perl-1.13-2.el5.noarch
	perl(Log::Dispatch::Syslog) is needed by perl-Log-Log4perl-1.13-2.el5.noarch
	perl(RRDs) is needed by perl-Log-Log4perl-1.13-2.el5.noarch
	perl(XML::DOM) is needed by perl-Log-Log4perl-1.13-2.el5.noarch

yum は、パッケージの依存関係をチェックして必要なパッケージもいっしょにインストールするはず。
実際、仮想に入れたCentOS 6.7 では、すべてのパッケージが1つのコマンドでインストールされました。

ですが、CentOS 5.7 に入っている yum は、これがダメなのかもしれません。

ということで、チェックしたら、

# yum list yum
Loaded plugins: fastestmirror
base                                                     | 1.1 kB     00:00
extras                                                   | 2.1 kB     00:00
updates                                                  | 1.9 kB     00:00
Installed Packages
yum.noarch                    3.2.22-37.el5.centos                     installed
Available Packages
yum.noarch                    3.2.22-40.el5.centos                     base
#

古いじゃん。ということで、yum でアップデートしてから実行したのですが、やはり同じ。
yum コマンドだけの問題ではないようです。

じゃ、ということでそれぞれ個別に入れていきます。

# yum --enablerepo epel install perl-IPC-ShareLite.x86_64
...
# yum --enablerepo epel install perl-IPC-Cmd.noarch
...
# yum --enablerepo epel install perl-Log-Dispatch.noarch
...
# yum --enablerepo epel install rrdtool-perl
...
# yum --enablerepo epel install perl-XML-DOM
...
# yum --enablerepo epel install perl-Log-Log4perl
...
perl-Log-Log4perl-1.13-2.el5.noarch from epel has depsolving problems
  --> Missing Dependency: perl(IPC::Shareable) is needed by package perl-Log-Log4perl-1.13-2.el5.noarch 

(epel)
Error: Missing Dependency: perl(IPC::Shareable) is needed by package perl-Log-Log4perl-1.13-2.el5.noarch 

(epel)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest

やっぱりこれは、perl のバグなのか?
念のため、perl のパッケージもアップしてみます。

# perl --version

This is perl, v5.8.8 built for x86_64-linux-thread-multi

# yum list perl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * extras: ftp.nara.wide.ad.jp
 * updates: ftp.nara.wide.ad.jp
Installed Packages
perl.x86_64                     4:5.8.8-32.el5_7.6                     installed
Available Packages
perl.i386                       4:5.8.8-43.el5_11                      updates
perl.x86_64                     4:5.8.8-43.el5_11                      updates
# yum update perl
...

無事、バージョンアップ完了。とはいえ、perl 自体のバージョンは、v5.8.8 で変わらず。
やはり、

  --> Missing Dependency: perl(IPC::Shareable) is needed by package perl-Log-Log4perl-1.13-2.el5.noarch 

(epel)
Error: Missing Dependency: perl(IPC::Shareable) is needed by package perl-Log-Log4perl-1.13-2.el5.noarch 

(epel)

というエラーが発生します。

じゃ、ということで、ネットで検索したら見つかった IPC-Shareable の CentOS5 用のパッケージを入れてみる。


http://pkgs.repoforge.org/perl-IPC-Shareable/
rpm -ivh perl-IPC-Shareable-0.60-1.2.el5.rf.noarch.rpm

これを入れたら、yum –enablerepo epel install perl-Log-Log4perl が成功しました。
さらに、yum –enablerepo epel install munin もうまくいきました。

munin は、デフォルトでパスワードを聞いてくるのですが、認証なしで入れるようにしておきます。
/etc/httpd/conf.d の下にある munin.conf の認証関係をコメントします。
また、URLを「 http://localhost/munin/」で参照できるように、次の行を追加しました。


Alias /munin /var/www/html/munin

まあ、なんとかインストールはできた。
しかし、いろいろやりながらとはいえ、朝から初めてインストールが終わったのは夕方、というのはちょっと。
この CentOS 5.7 は、早く新しいのにリプレースしてほしい、と改めて思う。