Database JUNKY

MySQL,MariaDBを中心としたブログです

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版で行いました。

でわ早速インストール手順などを書きます。

<<サーバ、クライアント共通手順>>

  • epelのインストール munin自体はCENTOSの標準のyumリポジトリには存在しないので、remiやらepelとかをインストールしてからインストールできるところまで手順で書くことにします。

[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


> 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上ではどのようなイメージで表示できるかを掲載したいと思います。どうでしょうか?個人的には見やすくて好きです