munin 楽々インストールでMySQLを監視する!
MySQLとかの状態監視したいんだけど、なんかいいツールないかな?と思ったのがきっかけて、muninとか入れてみました。負荷監視ツールとして有名なのはMRTGですが、私はよくわからんのと設定がめんどくさそうなので(もちろん人によっては、使いやすいと思うのですが)自宅のサーバはインストールと設定が簡単なmuninにしたわけです。
▼ munin とは何? ここ(http://gigazine.net/news/20060904_munin/)に詳しく書かれておりますが、『簡単に負荷やトラフィックをグラフ化できる』ツールです。プラグインの種類が豊富で、xenやらmysqlやらapacheやら、簡単利用することができます。個人的には、MySQLの計測関連が豊富なのと動作がものすっごく軽いので気に入りました。 ▼インストールはどうするの? インストールは簡単です。簡単ですといいながらも、私はソースをコンパイルしてメイクとかするのすら嫌なのですべてyumでインストルする方法で記載することにしました。
今回の例では
munin サーバ
ホスト名:muninsrv mysqlserver ホスト名:muninclient
という構成にして設定してみたいと思います。また、クラインアントは、MySQLなので、MySQLを中心としたプラグインで構成していきます。OSは、CENTOS5.7の64bit版で行いました。
でわ早速インストール手順などを書きます。
<<サーバ、クライアント共通手順>>
[code lang=text] [root@muninsrv html]# cd /usr/local/src/ [root@muninsrv src]# wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm [root@muninsrv src]# rpm -ivh epel-release-5-4.noarch.rpm [root@muninsrv src]# cp /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.20120304 [root@muninsrv src]# cd /etc/yum.repos.d/ [root@muninsrv yum.repos.d]# diff epel.repo epel.repo.20120304 7d6 < enabled=1
- remiのインストール [root@muninsrv yum.repos.d]# rpm -import http://rpms.famillecollet.com/RPM-GPG-KEY-remi [root@muninsrv yum.repos.d]# wget http://rpms.famillecollet.com/remi-enterprise.repo [root@muninsrv yum.repos.d]# cp /etc/yum.repos.d/remi-enterprise.repo /etc/yum.repos.d/remi-enterprise.repo.20120304 [root@muninsrv yum.repos.d]# vi /etc/yum.repos.d/remi-enterprise.repo [root@muninsrv yum.repos.d]# diff /etc/yum.repos.d/remi-enterprise.repo /etc/yum.repos.d/remi-enterprise.repo.201203045c5 < enabled=1
> enabled=0
[/code]
<<サーバの設定>>
・前提条件 apacheがインストールされていること
・yumでmuninをインストールします
[code lang=text] [root@muninsrv ~]# yum -y install munin [/code]
・環境設定ファイルの編集をします
[code lang=text] [root@muninsrv ~]# cd /etc/munin/ [root@muninsrv munin]# cp -prf munin.conf munin.conf.20110314
[root@muninsrv munin]# vi munin.conf
基本的に、ノードの登録のみ行います。
形式は、[グループ名;ホスト名(FQDN)]になります。私の場合は、wwwグループとdbmsグループに分けております。
Drop somejuser@fnord.comm and anotheruser@blibb.comm an email everytime
something changes (OK -> WARNING, CRITICAL -> OK, etc)
contact.someuser.command mail -s "Munin notification" somejuser@fnord.comm
contact.anotheruser.command mail -s "Munin notification" anotheruser@blibb.comm
#
For those with Nagios, the following might come in handy. In addition,
the services must be defined in the Nagios server as well.
contact.nagios.command /usr/bin/send_nsca nagios.host.comm -c /etc/nsca.conf
[dbms;muninclient] address 192.168.101.41
use_node_name yes
[/code]
- デーモンとかの開始はありません。yumでインストールした場合は、cronに自動登録されます(デフォルトですと5分に一回ですね)
[code lang=text] root@muninsrv munin]# cat /etc/cron.d/munin #
cron-jobs for munin
#
MAILTO=root
*/5 * * * * munin test -x /usr/bin/munin-cron && /usr/bin/munin-cron [/code]
以上、munin-serverの設定は終わりです
<strong><<クライアントの設定>></strong>
- クライアントのインストール
[code lang=text] [root@muninclient ~]# yum -y install munin-node [/code]
- munin-node.conf の編集
[code lang=text] [root@muninclient munin]# cd /etc/munin/ [root@muninclient munin]# cp -p munin-node.conf munin-node.conf.20120314
[root@muninclient munin]# vi munin-node.conf
Set this if the client doesn't report the correct hostname when
telnetting to localhost, port 4949
munin サーバのホスト名を指定してください
host_name muninsrv.squad.local
A list of addresses that are allowed to connect. This must be a
regular expression, since Net::Server does not understand CIDR-style
network notation unless the perl module Net::CIDR is installed. You
may repeat the allow line as many times as you'd like
munin サーバのホスト名のIPアドレスを指定してください
allow ^192.168.101.34$
[/code]
- mysql plugin関連のモジュールをインストール
基本上記のままの設定ですと、デフォルトでは以下の監視が設定されます。また、プラグインの登録は、シンボリックリンクで
[code lang=text]
pwd
/etc/munin/plugins
ll
合計 0 lrwxrwxrwx 1 root root 28 3月 15 11:18 cpu -> /usr/share/munin/plugins/cpu lrwxrwxrwx 1 root root 27 3月 15 11:18 df -> /usr/share/munin/plugins/df lrwxrwxrwx 1 root root 33 3月 15 11:18 df_inode -> /usr/share/munin/plugins/df_inode lrwxrwxrwx 1 root root 34 3月 15 11:18 diskstats -> /usr/share/munin/plugins/diskstats lrwxrwxrwx 1 root root 32 3月 15 11:18 if_err_eth0 -> /usr/share/munin/plugins/if_err lrwxrwxrwx 1 root root 28 3月 15 11:18 if_eth0 -> /usr/share/munin/plugins/if lrwxrwxrwx 1 root root 31 3月 15 11:18 iostat -> /usr/share/munin/plugins/iostat lrwxrwxrwx 1 root root 35 3月 15 11:18 iostat_ios -> /usr/share/munin/plugins/iostat_ios lrwxrwxrwx 1 root root 33 3月 15 11:18 irqstats -> /usr/share/munin/plugins/irqstats lrwxrwxrwx 1 root root 29 3月 15 11:18 load -> /usr/share/munin/plugins/load lrwxrwxrwx 1 root root 31 3月 15 11:18 memory -> /usr/share/munin/plugins/memory lrwxrwxrwx 1 root root 32 3月 15 11:18 netstat -> /usr/share/munin/plugins/netstat ※尚、以下の部分は私はリンクをはずしました。除外した理由は監視項目多数ですと、本来、必要なMySQLの監視項目がぼやけるからです。 lrwxrwxrwx 1 root root 30 3月 15 11:18 forks -> /usr/share/munin/plugins/forks lrwxrwxrwx 1 root root 38 3月 15 11:18 http_loadtime -> /usr/share/munin/plugins/http_loadtime lrwxrwxrwx 1 root root 32 3月 15 11:18 entropy -> /usr/share/munin/plugins/entropy lrwxrwxrwx 1 root root 35 3月 15 11:18 fw_packets -> /usr/share/munin/plugins/fw_packets lrwxrwxrwx 1 root root 35 3月 15 11:18 interrupts -> /usr/share/munin/plugins/interrupts lrwxrwxrwx 1 root root 31 3月 15 11:18 lpstat -> /usr/share/munin/plugins/lpstat lrwxrwxrwx 1 root root 36 3月 15 11:18 nfs4_client -> /usr/share/munin/plugins/nfs4_client lrwxrwxrwx 1 root root 39 3月 15 11:18 ntp_kernel_err -> /usr/share/munin/plugins/ntp_kernel_err lrwxrwxrwx 1 root root 44 3月 15 11:18 ntp_kernel_pll_freq -> /usr/share/munin/plugins/ntp_kernel_pll_freq lrwxrwxrwx 1 root root 43 3月 15 11:18 ntp_kernel_pll_off -> /usr/share/munin/plugins/ntp_kernel_pll_off lrwxrwxrwx 1 root root 35 3月 15 11:18 ntp_offset -> /usr/share/munin/plugins/ntp_offset lrwxrwxrwx 1 root root 35 3月 15 11:18 open_files -> /usr/share/munin/plugins/open_files lrwxrwxrwx 1 root root 36 3月 15 11:18 open_inodes -> /usr/share/munin/plugins/open_inodes lrwxrwxrwx 1 root root 33 3月 15 11:18 proc_pri -> /usr/share/munin/plugins/proc_pri lrwxrwxrwx 1 root root 34 3月 15 11:18 processes -> /usr/share/munin/plugins/processes lrwxrwxrwx 1 root root 43 3月 15 11:18 sendmail_mailqueue -> /usr/share/munin/plugins/sendmail_mailqueue lrwxrwxrwx 1 root root 43 3月 15 11:18 sendmail_mailstats -> /usr/share/munin/plugins/sendmail_mailstats lrwxrwxrwx 1 root root 45 3月 15 11:18 sendmail_mailtraffic -> /usr/share/munin/plugins/sendmail_mailtraffic lrwxrwxrwx 1 root root 29 3月 15 11:18 swap -> /usr/share/munin/plugins/swap lrwxrwxrwx 1 root root 32 3月 15 11:18 threads -> /usr/share/munin/plugins/threads lrwxrwxrwx 1 root root 31 3月 15 11:18 uptime -> /usr/share/munin/plugins/uptime lrwxrwxrwx 1 root root 30 3月 15 11:18 users -> /usr/share/munin/plugins/users lrwxrwxrwx 1 root root 31 3月 15 11:18 vmstat -> /usr/share/munin/plugins/vmstat lrwxrwxrwx 1 root root 28 3月 15 11:18 yum -> /usr/share/munin/plugins/yum [/code]
- MySQLに必要なパッケージをインストールします
[code lang=text] yum install --enablerepo=epel perl-IPC-ShareLite perl-Cache-Cache perl-Cache perl-DBD-MySQL [/code]
- 現在登録されている、MySQLの監視項目をmunin-node-configure にて確認します
[code lang=text] munin-node-configure --suggest|grep -i mysql mysql_ | yes | yes (commands connections innodb_bpool innodb_io innodb_log innodb_tnx myisam_indexes network_traffic qcache qcache_mem select_types slow table_locks +bin_relay_log +files_tables +innodb_bpool_act +innodb_insert_buf +innodb_io_pend +innodb_rows +innodb_semaphores +replication +sorts +tmp_tables) [/code]
- MySQLの監視項目を追加します
[code lang=text] cd /etc/munin/plugins ln -s /usr/share/munin/plugins/mysql mysql_commands ln -s /usr/share/munin/plugins/mysql mysql_innodb_bpool ln -s /usr/share/munin/plugins/mysql mysql_innodb_io ln -s /usr/share/munin/plugins/mysql mysql_innodb_log ln -s /usr/share/munin/plugins/mysql mysql_innodb_tnx ln -s /usr/share/munin/plugins/mysql mysql_select_types ln -s /usr/share/munin/plugins/mysql mysql_table_locks ln -s /usr/share/munin/plugins/mysql mysql_connections ln -s /usr/share/munin/plugins/mysql mysql_slow ln -s /usr/share/munin/plugins/mysql mysql_myisam_indexes ln -s /usr/share/munin/plugins/mysql mysql_network_traffic ln -s /usr/share/munin/plugins/mysql mysql_qcache ln -s /usr/share/munin/plugins/mysql_ mysql_qcache_mem [/code]
- 結果以下のプラグインのものを監視するようにしました
[code lang=text] lrwxrwxrwx 1 root root 28 3月 14 15:46 cpu -> /usr/share/munin/plugins/cpu lrwxrwxrwx 1 root root 27 3月 14 15:46 df -> /usr/share/munin/plugins/df lrwxrwxrwx 1 root root 33 3月 14 15:46 df_inode -> /usr/share/munin/plugins/df_inode lrwxrwxrwx 1 root root 34 3月 14 15:46 diskstats -> /usr/share/munin/plugins/diskstats lrwxrwxrwx 1 root root 32 3月 14 15:46 entropy -> /usr/share/munin/plugins/entropy lrwxrwxrwx 1 root root 30 3月 14 15:46 forks -> /usr/share/munin/plugins/forks lrwxrwxrwx 1 root root 32 3月 14 15:46 if_err_eth0 -> /usr/share/munin/plugins/if_err lrwxrwxrwx 1 root root 28 3月 14 15:46 if_eth0 -> /usr/share/munin/plugins/if lrwxrwxrwx 1 root root 35 3月 14 15:46 interrupts -> /usr/share/munin/plugins/interrupts lrwxrwxrwx 1 root root 31 3月 14 15:46 iostat -> /usr/share/munin/plugins/iostat lrwxrwxrwx 1 root root 29 3月 14 15:46 load -> /usr/share/munin/plugins/load lrwxrwxrwx 1 root root 31 3月 14 15:46 memory -> /usr/share/munin/plugins/memory lrwxrwxrwx 1 root root 31 3月 14 15:57 mysql_commands -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 21:07 mysql_connections -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 15:57 mysql_innodb_bpool -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 15:57 mysql_innodb_io -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 15:57 mysql_innodb_log -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 15:57 mysql_innodb_tnx -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 21:07 mysql_myisam_indexes -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 21:07 mysql_network_traffic -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 21:07 mysql_qcache -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 21:07 mysql_qcache_mem -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 15:57 mysql_select_types -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 21:07 mysql_slow -> /usr/share/munin/plugins/mysql lrwxrwxrwx 1 root root 31 3月 14 15:57 mysql_table_locks -> /usr/share/munin/plugins/mysql_ lrwxrwxrwx 1 root root 35 3月 14 15:46 open_files -> /usr/share/munin/plugins/open_files lrwxrwxrwx 1 root root 36 3月 14 15:46 open_inodes -> /usr/share/munin/plugins/open_inodes lrwxrwxrwx 1 root root 33 3月 14 15:46 proc_pri -> /usr/share/munin/plugins/proc_pri lrwxrwxrwx 1 root root 34 3月 14 15:46 processes -> /usr/share/munin/plugins/processes lrwxrwxrwx 1 root root 29 3月 14 15:46 swap -> /usr/share/munin/plugins/swap lrwxrwxrwx 1 root root 32 3月 14 15:46 threads -> /usr/share/munin/plugins/threads lrwxrwxrwx 1 root root 31 3月 14 15:46 uptime -> /usr/share/munin/plugins/uptime lrwxrwxrwx 1 root root 31 3月 14 15:46 vmstat -> /usr/share/munin/plugins/vmstat [/code]
- munin-node(plugin側)内にmysqlの接続設定を追記します
[code lang=text]
vi /etc/munin/plugin-conf.d/munin-node
This file is used to configure how the plugins are invoked.
Place in /etc/munin/plugin-conf.d/ or corresponding directory.
#
PLEASE NOTE: Changes in the plugin-conf.d directory are only
read at munin-node startup, so restart at any changes.
#
user <user> # Set the user to run the plugin as
group <group> # Set the group to run the plugin as
command <command> # Run <command> instead of the plugin. %c
expands to what would normally be run.
env.<variable> <value> # Sets <variable> in the plugin's environment, see the
individual plugins to find out which variables they
care about.
# #
[mysql*] env.mysqlconnection DBI:mysql:mysql;host=192.168.0.49;port=3306 env.mysqluser mysqluserid env.mysqlpassword mysqlpasswd
[exim*] group mail
[cps*] user root
[apt] user root
[vlan*] user root
[postfix*] user root
[/code]
- munin-node を開始します
[code lang=text] [root@muninclient munin]# /etc/init.d/munin-node start [root@muninclient munin]# /sbin/chkconfig munin-node on [/code]
以上でクライアントの設定は終わりです。どうでしょうか?結構簡単に設定できたのではないでしょうか?ここがmuninをお勧めする理由の一つです。20台、30台のPCであれば、zabbixなりでやったほうが管理しやすいかと思いますが、これが数百台規模になってきますと、このmuninのような監視ツールの方が設定が高速で且つ、動作が軽いのでないかと思っております。
最後に、上記にて設定を行うと、WEB上ではどのようなイメージで表示できるかを掲載したいと思います。どうでしょうか?個人的には見やすくて好きです