MySQLの監視はCacti+Percona Monitoring Pluginsがおすすめ(監視対象設定編)
前回のエントリではMySQLのサーバを監視できるように、CactiをインストールしてPercona Monitoring Pluginsのテンプレートを読み込んだところまで書いた。今回は、監視対象となるMySQLサーバを設定して、リソース監視を行うまでを書いてみる。なお、プロンプトがtargetとなって いるものが監視対象への設定で、serverとなっているものが監視サーバへの設定を意味している。
SNMPの設定(Ubuntu serverの場合)
Ubuntuでは標準ではSNMPがインストールされていないので、まずはインストールする。
target$ sudo apt-get install snmp snmpd
/etc/snmp/snmpd.confにsnmpdのデフォルト設定ファイルが置かれるので、監視サーバから情報を取 得できるように編集する。
まず、監視サーバからの読み出し許可設定を追記。SNMPコミュニティ名は「public」がデフォルト設定としては一般的だが、適宜設定。
\# 監視対象で設定
rocommunity SNMPコミュニティ名 監視サーバのIP # 追記
view all all # 追記
全インタフェースからの接続を許可するよう設定。
\# 監視対象で設定
#agentAddress udp:127.0.0.1:161 # この行はコメントアウト
agentAddress udp:161 # 追記
snmpdを再起動した後、監視サーバから以下のコマンドを実行して応答があればSNMPの設定は完了。
target$ sudo /etc/init.d/snmpd restart
server$ snmpwalk -v1 -c public 監視対象IPアドレス .1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux ubuntu1110s-01 2.6.38-8-server #42-Ubuntu SMP Mon Apr 11 03:49:04 UTC 2011 x86_64
↑ 応答の例
SNMPの設定(CentOSの場合)
通常、SNMPはデフォルトでインストールされるので、設定ファイルを編集して監視サーバから接続できるようにする。基本的にはUbuntuと同じ設定にすればよい。
\# 監視対象で設定
rocommunity SNMPコミュニティ名 監視サーバのIP # 追記
view all all # 追記
snmpdが自動起動するように設定し(どうやら初期設定では自動起動しないようになっている模様)、snmpdを再起動して設定を反映させる。
target$ sudo chkconfig snmpd on
target$ sudo /etc/init.d/snmpd start
server$ snmpwalk -v1 -c public 監視対象IPアドレス .1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos62-64-01 2.6.32-220.el6.x86\_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86\_64
↑ 応答の例
Cacti監視のためのMySQL設定
Percona Monitoring Plugins for Cactiは、監視対象のMySQLにログインして、色々な種類のshowコ マンドを実行して得られた結果をグラフにするので、監視対象のMySQLにユーザを追加する必要があ る。ここで指定するユーザ名とパスワードは、前回のエントリでss_get_mysql_stats.phpファイルに書いた、 $mysql_user と $mysql_pass と一致させること。
target$ mysql -uroot
mysql-target> grant process, super on \*.\* to ユーザ名@監視サーバ identified by 'パスワ ード';
mysql-target> flush privileges;
Cactiからの監視設定
監視サーバのCacti管理画面で、画像のように Create → New Graphs → Create New Host とたどり、監視対象デバイス作成画面を開く。
以下のように入力し、「Create」ボタンを押す。
Description | 監視対象ホスト名など、一意に監視対象がわかる記述 |
Hostname | 監視対象IPアドレスあるいは名前解決できる場合ホスト名 |
Host Template | Percona MySQL Server HT |
SNMP Community, SNMP Port | SNMPコミュニティ名にpublic以外を指定した場合は適宜設定 |
Createボタンを押した後、画面下側に関連づけられたグラフが一覧表示される。Percona Monitoring Pluginsで取得できる情報は、あくまでMySQLのものだけで、実際にはLinuxの情報も取得しておく必要があるので、Host Templateに「Linux Server Default Set」を選んでもう一度Createボタンを押 して、最低限のOS関連情報も取れるようにしておこう。
ここまで時点では、画面下側に表示されたグラフテンプレートがホストにひもづけられただけで、実際にグラフの作成は開始されていない。右上の「Create New Graphs」をクリックし、画像のように 作成したいグラフを選択して、「Create」を押すと、対応するグラフの情報取得が始まる。
ツリーへのホスト追加
この状態では左上の「graphs」タブに移動しても左側のツリーには追加したサーバは表示されていないだろう。もう一度「console」タブに戻り、 Management → Devices から、監視対象デバイスの一覧を開き、今追加したサーバにチェックを付ける。右下の「Choose an action」から、「Add graph to tree」を選択してGoボタンを押し、ツリーに追加すると、めでたく graph タブのツリーにホストが現れ、グラフが表示される。
画像がリンク切れの場合、まだグラフを描画できる情報が集まっていないので、少し(5分おきの情報収集がデフォルトなので、2回分10分以上)待ってもう一度確認しよう。画像は表示されたのに、いくら待ってもグラフが表示されない場合は、監視対象から情報が取得できていない可能性があるので、SNMPの設定やMySQLの設定(特にユーザ関連)を見直すべし。
グラフをどう読み取っていくかについては、以下の記事が参考になる。記事中には「better-cacti-template」とあるが、これはPercona Monitoring Plugin for Cactiの前身となるものなので、ほぼ同じと考えてよい。
これだけ見 れば大丈夫!ーMySQLパフォーマンス監視のツボ(クエリ編)
今回はPercona Monitoring Plugin for CactiのMySQLに関する部分だけを紹介したが、ApacheやMemcached、nginx、redisなどの情報グラフ化もできるので、お試しあれ。