「Monyog MySQL Monitor and Advisor」(Monyog)とは
MonyogはMySQLサーバーを監視し、MySQLの重大な問題(障害)が発生する前に分析・修正するのに役立つモニタリングツールです。
Monyogに関する詳しい説明や他の機能などについて紹介している記事は下記の通りとなっておりますので、ぜひご参照していただければと思います。
Monyogの便利機能~「Monitors」&「Sniffer」~
5分でわかる!!Monyogを用いてボトルネックとなるSQL文を特定する方法!
「MariaDBの監査ログの導入」
今回の監査ログを導入するDBのバージョンは下記の通りです。
1 2 3 4 5 6 |
[root@localhost ~]# rpm -qa | grep ^MariaDB MariaDB-compat-10.1.34-1.el6.x86_64 MariaDB-common-10.1.34-1.el6.x86_64 MariaDB-server-10.1.34-1.el6.x86_64 MariaDB-client-10.1.34-1.el6.x86_64 MariaDB-devel-10.1.34-1.el6.x86_64 |
MariaDBを公式のパッケージからインストールした場合、プラグインディレクトリ配下に監査ログプラグイン(server_audit.so)は用意されていますが、デフォルトでは同プラグインはインストールされておりません。
※ プラグインディレクトリが分からない場合は、以下のクエリにてご確認ください。
1 |
MariaDB [(none)]> SHOW VARIABLES LIKE 'plugin_dir'; |
そのため、下記のSQL文を実行していただき、監査ログプラグインをインストールする必要があります。
1 2 |
MariaDB [(none)]> INSTALL PLUGIN server_audit SONAME 'server_audit'; Query OK, 0 rows affected (0.00 sec) |
監査ログプラグインがインストールされている事を確認するには下記のクエリを実行し、「SERVER_AUDIT」プラグインが「ACTIVE」と表示されている事を確認してください。
1 2 3 4 5 6 7 8 |
MariaDB [(none)]> select PLUGIN_NAME,PLUGIN_STATUS from INFORMATION_SCHEMA.PLUGINS where PLUGIN_NAME = 'SERVER_AUDIT' ; +--------------+---------------+ | PLUGIN_NAME | PLUGIN_STATUS | +--------------+---------------+ | SERVER_AUDIT | ACTIVE | +--------------+---------------+ 1 row in set (0.00 sec) |
また、監査ログに関する設定値は以下のクエリで確認できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE "server_audit%"; +-------------------------------+-----------------------+ | Variable_name | Value | +-------------------------------+-----------------------+ | server_audit_events | | | server_audit_excl_users | | | server_audit_file_path | server_audit.log | | server_audit_file_rotate_now | OFF | | server_audit_file_rotate_size | 1000000 | | server_audit_file_rotations | 9 | | server_audit_incl_users | | | server_audit_logging | OFF | | server_audit_mode | 0 | | server_audit_output_type | file | | server_audit_query_log_limit | 1024 | | server_audit_syslog_facility | LOG_USER | | server_audit_syslog_ident | mysql-server_auditing | | server_audit_syslog_info | | | server_audit_syslog_priority | LOG_INFO | +-------------------------------+-----------------------+ 15 rows in set (0.01 sec) |
なお、上記の「server_audit_logging」値が「OFF」と表示されている通り、監査ログプラグインをインストールしただけでは有効になりません。
監査ログを有効化しDBが再起動されても設定を維持できるようにするためにはMariaDBのサーバ設定ファイルの[mysqld]セクションで下記のパラメーター値を追加し、DBサーバを再起動してください。
※「server_audit_logging」は「SET GLOBAL server_audit_logging=ON;」で動的に有効化することができますが、MySQLを再起動した際にOFF(デフォルト値)に変わりますので、サーバ設定ファイルへの記載を推奨します。
1 2 |
server_audit_logging=ON plugin_load=server_audit=server_audit.so |
監査ログの問題点
監査ログにはクライアントからの接続や実行されている操作等の情報が出力されます。
DBAは監査ログを監視する事でセキュリティ状態やアプリケションの問題をトラブルシュートしたり、どのようなSQLクエリが処理されているのかを正確に知る事ができます。
※実際に以下のような形式で監査ログに出力されています。
1 2 3 4 5 6 7 8 9 10 11 12 |
<AUDIT_RECORD TIMESTAMP="2012-08-02T14:52:41" NAME="Connect" CONNECTION_ID="1" STATUS="0" USER="root" PRIV_USER="root" OS_LOGIN="" PROXY_USER="" HOST="localhost" IP="127.0.0.1" DB=""/> |
しかしながら、大規模なDB環境を管理する場合、各DBサーバの監査ログに出力されている情報をまとめ管理する事はかなり労力が必要となり現実的ではありません。
そこで、Monyogの【Audit Log】機能を使用する事で集計された情報を簡単に確認できます。
Audit Log 機能
Audit log機能は、サーバーが管理する監査ログをMonyogが解析し、出力されている情報を集計した表形式で表示します。
Audit log機能に関する詳しい設定は登録されているDBサーバの「Edit server」画面にて確認できます。
Audit log機能はデフォルトでは無効化されていますが、「Enable audit log monitoring」を選択する事で有効に設定できます。
※Monyogの最新版(Ver 8.6.0)においてMySQL EnterpriseとMariaDBの両方の監査ログをサポートしています。
Audit log機能では監視するDBサーバ及び時間帯を選択でき、該当する時間帯の中で凡例として、失敗したログイン、失敗したイベント、スキーマの変更、データの変更、およびストアドプロシージャのような監査ログに出力されている情報の割合を表示できます。
また、フィルターを使用して、ユーザー名、ホスト名、実行したクエリ、対象データベースなどに基づいて監査ログの絞り込みが可能です。
さらに取得した監査ログの内容をCSV形式でエクスポートするオプションもあります。
まとめ
MySQLやMariaDBで使用できる監査ログはDB環境を監視するために必要な情報を出力しており、DBAにとって大切な情報元の一つです。
MonyogのAudit log機能を使用する事で簡単に監査ログの情報をまとめ、瞬時にDB環境の状態を把握できますので、ぜひご活用していただければと思います。
関連リンク