Quantcast
Channel: Planet MySQL
Viewing all articles
Browse latest Browse all 1081

Ganglia で MySQL をモニタリングする

$
0
0

このエントリは、MySQL Casual Advent Calendar 22日目のエントリです。

多数の MySQL サーバをもモニタリングするとき Ganglia を使うと便利です。

現在の Ganglia は、バージョン 3.6.0 なのですが、MySQL をモニタリングしたい場合には、前に hirose31 さんが作ったプラグインがありますが、現在は本体に取り込まれているプラグインを使うといいです。

まず、インストール方法は、CentOS を例にとって説明しますが、Ganglia の RPM パッケージを作成しています。本体に SPEC ファイルのもとがあるので、手元で ./configure したあと ganglia.spec を使うと、次の RPM パッケージが出来上がります。

  • ganglia-web: Ganglia の Web GUI
  • gangala-gmetad: Ganglia サーバの収集デーモン
  • ganglia-gmond: Ganglia クライアント
  • ganglia-gmond-modules-python: Ganglia クライアントの Python プラグイン
  • ganglia-devel: Ganglia 開発用のライブラリ

Ganglia のクライアントに必要なのは、ganglia-gmond, ganglia-gmond-modules-python パッケージをインストールする必要があります。ただし、依存関係で libganglia というパッケージもあわせてインストール必要があります。あと、Python の MySQL クライアント MySQL-python が必要ですが、これは使っている MySQL のバージョンによって動作しないことがあるため、別途あわせて作成してインストールしておくとよいでしょう。

Ganglia で MySQL をモニタリングしているのは、mysql.pyDBUtil.py で、内部的には show innodb status の出力結果を頑張って解析して値を取得しています。

しかし、最新版では、次の問題ありました。

    DBUtil.py で、UNIX Domain Socket がサポートされていない(mysql.py 側ではサポートされているが、3.6.0 には取り込まれていない…)
    MySQL 5.1 以降の show innodb status の出力に対応していない(こちらのパッチで直ります)

それぞれのパッチは、次のようなっています。


そして、本家にもその他の変更も含めて、すこし大きい pull-request を送っておいたのですが、無視され続けていました…。まさにすこし大きい pull-request は無視されてしまう法則にあたってしまったようです…。

内部的な変更は、これで動作するので、あとは設定するだけですが、MySQL サーバのユーザにユーザ権限 SUPER, PROCESS をもったユーザが必要になります。
これを作成した状態で、/etc/ganglia/conf.d/mysql.pyconf をこのような感じで設定します(この設定ではスレーブでの設定例です)

あとは、gmond を起動して、/var/log/messages にエラーが出ていなければ、次のようなグラフが出力されてるはずです。

ganglia-mysql-slave


PlanetMySQL Voting: Vote UP / Vote DOWN

Viewing all articles
Browse latest Browse all 1081

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>