MuninでServersMan@VPSを監視: MySQL その1

監視カメラ

前回はMuninによるnginxの監視項目を増やしました。

今回はMuninについてくる標準のプラグインを使ってMySQLの監視を行いたいと思います。

MySQL用のプラグイン

MuninにはMySQL用として次のプラグインが用意されています。

  • mysql_
    MySQLサーバの稼働状況
  • mysql_bytes
    MySQLの送受信バイト
  • mysql_innodb
    InnoDBテーブルスペースの空き容量
  • mysql_isam_space_
    ISAM/MyISAMテーブルスペースの空き容量
  • mysql_queries
    SQL別のクエリ数
  • mysql_slowqueries
    スロークエリの発生状況
  • mysql_threads
    MySQLサーバーの稼動スレッド数

今回は上記のうち、このWordPressサイトを監視するために、myql_bytes・mysql_isam_space_・mysql_queries・mysql_slowqueries・mysql_threadsを設定しました。

myql_bytesプラグイン

まずはこのプラグインのシンボリックリンクを作成してプラグインを有効にします。

ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_byteデータベース名

シンボリックリンクを作成するときに名前の後ろに「データベース名」をつけるのがポイントです。こうすることによって複数のデータベースを監視することができます。なお、WordPressのデータベースを監視したい場合は、WordPressの設定ファイル(通常は/etc/wordpress以下にあります)の「DB_NAME」という変数に設定されている名前がデータベース名になります。

次に/etc/munin/plugin-conf.d/munin-nodeというファイルを編集して次の行を追記します。

[mysql*データベース名]
env.mysqlopts --user=データベース名 --password=パスワード --host=localhost

パスワードのところはこのデータベース名で指定したデータベースのパスワードです。WordPressの場合はWordPressの設定ファイルのDB_PASSWORDという変数に設定されている文字列がパスワードになります。

なお、パスワードを書き込みますので、このファイルはroot以外読み取れないようにしておきます。

chmod 600 /etc/munin/plugin-conf.d/munin-node

また、munin-nodeを再起動します。

service munin-node restart

これでMySQLの転送バイト数(スループット)を監視することができます。

ちゃんと設定できると次のようなグラフが表示されます。

mysql_bytes

mysql_isam_space_プラグイン

このプラグインを使う際もまずシンボリックリンクを作成します。

ln -s /usr/share/munin/plugins/mysql_isam_space_ /etc/munin/plugins/mysql_isam_space_データベース名

/etc/munin/plugin-conf.d/munin-nodeについてはmysql_bytesプラグインの設定をしてれば特に変更は不要です。設定をしていない場合は、mysql_bytesプラグインで紹介した行を追記してください。

最後にmunin-nodeを再起動します。

service munin-node restart

うまく設定できると次のようなグラフが表示されます。

mysql_isam_space

実はこのグラフは一日単位だとまあリ変化がわからないようです。一番期間が長い「by year」のグラフにするとwp_commentmetaがどんどん大きくなっていくのがわかりました。

mysql_queriesプラグイン

このプラグインもmysql_isam_space_プラグインと一緒でシンボリックリンクを作成すれば、mysql_bytesプラグインと同じ設定で使えます。

ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queriesデータベース名
service munin-node restart

うまく設定できると次のようなグラフが表示されます。なにやら夜中の3時ぐらいにアクセスが急増していることがわかります。

mysql_queries

mysql_slowqueriesプラグイン

このプラグインもmysql_queriesプラグインと一緒でシンボリックリンクを作成すれば、mysql_bytesプラグインと同じ設定で使えます。

ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueriesデータベース名
service munin-node restart

設定に成功すると次のようなグラフが表示されます。何も表示されていないようですが、実はスロークエリーが発生していないだけです。”by year”のグラフを見ると稀にスロークエリーが発生していました。

mysql_slowqueries

mysql_threadsプラグイン

最後にmysql_threadプラグインです。

このプラグインもmysql_queriesプラグインと一緒でシンボリックリンクを作成すれば、mysql_bytesプラグインと同じ設定で使えます。

ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threadsデータベース名
service munin-node restart

グラフは下記のようになります。多くても3スレッドに収まっているようです。

mysql_threads

まとめ

今回はMuninを使ってMySQLを監視する方法を紹介しました。

1日(by day)のグラフでは良くわかりませんが、より長期のグラフを見ることによって傾向がつかめるので、MySQLが遅くなっているかどうかなどがわかると思います。

次回はGithubにあるMySQL用のプラグインを使って更に監視項目を増やしたいと思います。