「Monyog MySQL Monitor and Advisor」(Monyog)とは
MonyogはMySQLサーバーを監視し、
MySQLの重大な問題(障害)が発生する前に分析・修正するのに役立つモニタリングツールです。
Monyogはデータベースユーザのセキュリティの強化や、データベースのパフォーマンスの最適化などに関する専門なアドバイスを提供します。
MonyogにはMySQLを監視する多彩な機能がありますが、今回の記事ではMySQLの障害検知で役立つ「Monitor」監視機能のアラート通知カスタマイズ方法及び、「Query Analyzer」機能で使用される「Sniffer」ログについて説明します。
Monitors監視機能
Monitors監視機能とは
Monitors監視機能では、サーバーのパラメーターとメトリックの詳細な表示が表示されます。表示された画面の左の列には、Monyogがサーバーごとに表示する「メトリック」項目が表示されます。また、Monyogに登録したすべてのサーバーについて、そのサーバーに関連するデータが画面の右側に表示されます。一部のデータは累積値(指定された時間枠に累積された値)として表示され、その他のデータは時間間隔(通常1秒間)で平均化されます。
Monitors監視機能におけるアラート通知のカスタマイズ方法
Monyogでは標準で600以上のモニター項目がありますが、アラートを発生させる閾値の変更をしたり、新しくモニタリング項目を追加したりすることもできます。
今回は例として、performance_schemaがONに設定されたときにアラート通知が届くモニタリング項目を追加します。
1.カスタマイズ対象項目の右側にある「Edit monitor」をクリック
2.表示されたポップアップメニューにて「Alerts」タブをクリック
3.「Alert Condition」欄にてMonyogが取得した値に対する評価式を入力する
Monyogで取得したモニターの値に基づいて、”None”、 “Warning”、または “Critical”のいずれかに評価されるJavaScript条件式を入力します。
※今回の場合ではperformance_schemaがONに設定されたときにアラート通知が届くように設定いたします。
4. ポップアップメニューの下にある「Notifications」を有効に切り替え、「Save」をクリック
※対象項目の旗アイコンが青く表示されていれば設定完了です。
5.挙動確認
- 監視対象のMySQLの「my.cnf」の[mysqld]セクションに【performance_schema=ON】を追記しMySQLを再起動させる
※以下のようなアラート通知(メール)が届いていればカスタマイズ完了となります。
「Sniffer」ログ
「Sniffer」ログとは
MonyogのQuery Analyzer機能において、
MySQLが出力するスロークエリログと一般クエリログを基にクエリ分析を行う以外に、
「Sniffer」と呼ばれるMonyogが所有する擬似サーバーログを分析する方法があります。
MySQLでは一般クエリログを出力するように設定していますとDBのパフォーマンスが悪くなってしまう事や、一般クエリログの膨大なサイズによりディスク容量が圧迫されてしまうような事が発生しています。
「Sniffer」ログは完璧な一般クエリログの代わりにはなれませんが、スロークエリログに記録されないようなクエリに関する情報も収集できますのでMySQLのパフォーマンス調査の際にかなり役立つログファイルの一種と言えます。
※Snifferログを用いてクエリ分析を行う「Query Analyzer機能」については下記の記事をご参照ください。
⇒ 5分でわかる!!Monyogを用いてボトルネックとなるSQL文を特定する方法!
「Sniffer」ログの収集モードの違いについて
「Sniffer」ログがクエリに関する情報を収集する際に以下の3つのクエリ収集モードがあります。
①毎秒 “SHOW FULL PROCESSLIST”クエリを実行し情報を収集する。
②performance_schemaの「events_statements_summary_by_digest」及び「events_statements_history_long」テーブルを参照し情報を収集する。
③稼働中のMySQL Proxyサーバーに接続し情報を収集する。
上記のクエリ収集モードの大きな違いは以下となります。
- ①の方法の場合少なくともクエリの実行完了までに1秒以上かかるもののみ収集できます。
- ②の方法の場合、performance_schemaが有効のであれば実行時間が1秒未満のクエリに関する情報も収集可能となり、①の方法よりもクエリに関する多くの追加情報を収集できます。
※performance_schemaを使用する場合MySQLが約1%~3%のオーバーヘッドが発生する可能性がございます。 - ③の方法ではMonyogはMySQL Proxyインスタンスに接続しMonyogのLUAスクリプトを実行すると
MySQL ProxyからDBサーバーに発行したクエリ及びクエリの実行時間などに関する情報がコピーされSnifferに入力されますので②と同様に実行されたすべてのクエリ情報を取得できます。
※MonyogのLUAスクリプト(MONyog.LUA)ファイルはインストール後のMonyogプログラムフォルダに格納されています。
※上記の3つのクエリ収集モードについて特に推奨されたものはありませんので、
Snifferをお使いいただく際はユーザの環境に合わせてお選びいただければと思います。
まとめ
Monyogの「Monitors」監視機能において、いくつかの監視項目ではあらかじめアラート通知が設定されていません。今回の記事でも紹介したようにMonyogではかなり簡単に、そして柔軟に監視項目に対してアラート通知を設定する事が可能ですのでぜひお試しいただければと思います。
またSnifferログについてもDB環境に合わせて取得モードを変更できますので、一般クエリログの出力がOFFになっているDB環境においてはスロークエリに記録されないクエリに対する分析も可能となります。
関連リンク