データベース毎の(mysql,mariadb)のリソース監視。

お世話になっております。

パフォーマンススキーマを用いてデータベース毎のリソース監視を行っていらっしゃる方がいましたらご教授頂けないでしょうか?

現在、zabbixの/etc/zabbix/zabbix_agentd.d/userparameter_mysql.confにスクリプトの場所を記載して
データベースへの接続数であったり、read insert update deleteの数を集計してグラフ化しております。
ただ、これだと筐体(サーバー)1台あたりの監視となりまして、「データベース毎」ではありません。

CPU使用率が以上に高くなったり、ディスク容量が圧迫してきたりしたときに
「update処理すごいな」
「接続数多すぎない?」
「あー、今めちゃくちゃinsert処理がされてるのか」

ということはわかるのですが、どこのデータベースが悪さしてる(処理が走っている)のかが分かりません。

ふと、噂を耳にしたのですが「パフォーマンススキーマ」なるものを利用すれば
ユーザーレベル、アプリケーションレベルでのデータベース毎への監視が可能となるらしいです。

公式ページでも提言されています。
http://www-jp.mysql.com/products/enterprise/database/

パフォーマンススキーマを用いてデータベース毎のリソース監視を行っていらっしゃる方がいましたらご教授頂けないかと思い、質問させて頂きました。
パフォーマンススキーマ以外でも、俺(私)はこういう仕組みでデータベース毎のリソースを監視している!という方がいらっしゃいましたらアドバイス頂けると幸いです。

以上

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

私自身は、影響を与えてしまっては困るDBは、別のDBサーバを用意
するようにしているので、同じDBサーバ上のDB毎の統計情報は意識
していませんでした。

ちょっとだけ調べたメモだけ残しておきます。

例えば、MySQL 5.6を利用されているのであれば、デフォルトでパ
フォーマンススキーマが有効になっていたと思います。

有効になっていれば、パフォーマンススキーマ用のパラメータやパ
フォーマンススキーマの設定テーブルに、どのような値をどのくら
い取得するかを設定することで、各種テーブルに統計情報が記録さ
れるようです。
# MySQL 5.5でも機能的にはあるようだがわかりにくいらしい。

あとは、UserParameterなどを利用して、監視したい項目を取得す
るように設定することになると思います。
テーブルに対して直接SQLを投げるよりも、ps_helperを使ってみて
も良いかもしれません。

詳細は、以下のURLなどをご参照ください。

MySQL 5.6での機能強化点(その2) - NoSQL APIとパフォーマンス・スキーマ
  http://thinkit.co.jp/story/2014/01/08/4716/page/0/1
MySQL 5.6時代のパフォーマンスチューニング
  http://www.slideshare.net/yoyamasaki/20131110-tuning-onmysql56
22.2 Performance Schema Configuration
  http://dev.mysql.com/doc/refman/5.6/en/performance-schema-configuration....
22.9 Performance Schema Table Descriptions
  http://dev.mysql.com/doc/refman/5.6/en/performance-schema-table-descript...
MySQL sys schema / ps_helper
  http://www.markleith.co.uk/ps_helper/
Performance schema and_ps_helper
  http://www.slideshare.net/Leithal/performance-schema-andpshelper

ユーザー ezreal の写真

TNKさん
ご返信ありがとうございます!

商用のMySQL Enterprise Monitorを導入すれば早そうなんですけどね・・・><

頂いた参考文献の中身を整理して、UserParameterで特定の項目をもってきてZabbixで可視化できるようにやってみます。
ありがとうございました!

以上