Muninでサーバ監視(インストール)

Muninは、Perlで書かれていてRRD Toolと連携して、サーバに関する様々な情報をグラフ化・HTML化するツールです。
監視項目は、プラグインで簡単に追加できます。
Muninのサイトには、以下のように記載されています。

Munin is a networked resource monitoring tool that can help analyze resource trends and "what just happened to kill our performance?" problems. It is designed to be very plug and play. A default installation provides a lot of graphs with almost no work.

今回は、監視サーバと監視対象(被監視)サーバを別ノードで動かす形でインストールしました。
環境は以下のとおりです。

    • 監視サーバ: munin(192.168.0.100/CentOS 5.5)
    • 監視対象サーバ: munin-node01(192.168.0.101/Debian Lenny)

インストール

  • 監視サーバ

CentOSの標準パッケージには、muninパッケージが含まれていないので、"dag"リポジトリの提供しているmuninパッケージを使用します。

$ sudo rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
$ sudo rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
$ sudo yum -y install munin
$ sudo yum -y install httpd
  • 監視対象サーバ
$ sudo aptitude install munin-node

設定

Muninは監視対象サーバから監視サーバへ定期的に監視情報を送信して、監視サーバ上で情報収集および管理を行ないますので、監視サーバでは監視対象サーバの指定、監視対象サーバでは監視サーバの指定を行えば動きます。

  • 監視サーバ
##
# /etc/munin/munin.conf
##
[munin-node01]
    address 192.168.0.101
    use_node_name yes

デフォルトでは、muninのHTMLファイルは"/var/www/munin"に出力されるので、ApacheのAlias設定を追加し、"http://192.168.0.100/munin"というURLでアクセスできるように設定します。

##
# /etc/httpd/conf/httpd.conf
##
Alias /munin/ "/var/www/munin/"
<Directory "/var/www/munin">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

5分毎に実行される"munin-cron"(収集した情報のHTML化とか)は"munin"ユーザ権限で実行されるので、"/var/www/munin"のパーミッションを変更します。

$ sudo chown -Rf munin:munin /var/www/munin
  • 監視対象サーバ
##
# /etc/munin/munin-node.conf
##
host_name munin-node01
allow ^192\.168\.0\.100$

監視項目の追加

Muninの監視項目は、監視対象サーバ上で動くプラグインによって変更できます。
プラグインは"/usr/share/munin/plugins"以下にあり、"/etc/munin/plugins"以下へシンボリックリンクを作成することで監視項目に追加されます。
デフォルトでは以下のようなプラグインが存在します。

$ ls /usr/share/munin/plugins
acpi                    exim_mailstats      munin_graph        plugins.history       smart_                     squid_icp
apache_accesses         forks               munin_update       port_                 snmp__df                   squid_requests
apache_processes        fw_conntrack        mysql_bytes        postfix_mailqueue     snmp__fc_if_               squid_traffic
apache_volume           fw_forwarded_local  mysql_isam_space_  postfix_mailstats     snmp__fc_if_err_           swap
apt                     fw_packets          mysql_queries      postfix_mailvolume    snmp__if_                  sybase_space
apt_all                 hddtemp_smartctl    mysql_slowqueries  postgres_block_read_  snmp__if_err_              tomcat_access
courier_mta_mailqueue   if_                 mysql_threads      postgres_commits_     snmp__load                 tomcat_jvm
courier_mta_mailstats   if_err_             netstat            postgres_locks        snmp__processes            tomcat_threads
courier_mta_mailvolume  interrupts          nfs_client         postgres_queries_     snmp__sensors_fsc_bx_fan   tomcat_volume
cps_                    iostat              nfsd               postgres_space_       snmp__sensors_fsc_bx_temp  uptime
cpu                     ip_                 ntp_               processes             snmp__sensors_fsc_fan      vlan_
cupsys_pages            ircu                ntp_offset         ps_                   snmp__sensors_fsc_temp     vlan_inetuse_
df                      irqstats            ntp_states         psu_                  snmp__sensors_mbm_fan      vlan_linkuse_
df_abs                  load                open_files         sendmail_mailqueue    snmp__sensors_mbm_temp     vmstat
df_inode                loggrep             open_inodes        sendmail_mailstats    snmp__sensors_mbm_volt
entropy                 memory              ping_              sendmail_mailtraffic  snmp__users
exim_mailqueue          multips             plugin.sh          sensors_              squid_cache

また、Debianにはmunin-plugins-extraパッケージが存在し、以下のようなプラグインが準備されています。
Debian -- Error

$ sudo ln -s /usr/share/munin/plugins/cpu /etc/munin/plugins/
$ sudo ln -s /usr/share/munin/plugins/smart_ /etc/munin/plugins/smart_hda
$ sudo /etc/init.d/munin-node restart

"/usr/share/munin/plugins"以下のプラグイン名が"_"で終わっているものについては、シンボリックリンク作成時に対象デバイスを追加します。
上記の実行例では"smart_"プラグインを使用する際に、"smart_hda"として対象デバイスを追加しています。
プラグイン追加後は、"munin-node"サービスを再起動します。

その他

  • メール通知

サーバリソースが設定した閾値を超えた場合などに、メール通知を行うことができます。
メール通知は、"munin-limit"で設定します。

以下のサイトでプラグインを検索することができます。
http://muninexchange.projects.linpro.no/?search
また、Muninのプラグインはシンプルな仕様となっているようなので、自作することも可能です。


Munin