設定方法
1. 対応バージョン
| DBの種類 | 対応バージョン |
|---|---|
| MySQL | 5.7以上 |
| MariaDB | 10以上 |
Cloud環境のMySQL/MariaDB対応状況
| Cloud環境 | MySQL | MariaDB |
|---|---|---|
| AWS | ✅ 対応 | ✅ 対応 |
| Azure | ✅ 対応 | ✅ 対応 |
| OCI | ⚠️ Cloudは対応、exemONEは非対応 | ❌ 非対応 |
| NCP | ✅ 対応 | ❌ 非対応 |
| GCP | ✅ 対応 | ❌ 非対応 |
| SCP | ✅ 対応 | ✅ 対応 |
2. 必須権限
2-1. 基本モニタリング権限
モニタリングアカウント(例: exemone)に次の権限を付与します。
GRANT PROCESS ON *.* TO exemone;
GRANT SELECT ON performance_schema.* TO exemone@'{db-agentインストールサーバーIP}';
GRANT SHOW DATABASES ON *.* TO exemone@'{db-agentインストールサーバーIP}';
GRANT SELECT ON dbname.* TO exemone@'{db-agentインストールサーバーIP}'; -- または GRANT SELECT ON *.*
GRANT REPLICATION CLIENT ON *.* TO exemone@'{db-agentインストールサーバーIP}';
GRANT REPLICATION SLAVE ON *.* TO exemone@'{db-agentインストールサーバーIP}';
GRANT SUPER ON *.* TO exemone@'{db-agentインストールサーバーIP}';
GRANT SELECT ON information_schema.processlist TO exemone@'{db-agentインストールサーバーIP}';
GRANT SELECT ON information_schema.innodb_session_temp_tablespaces TO exemone@'{db-agentインストールサーバーIP}';
GRANT SELECT ON information_schema.tables TO exemone@'{db-agentインストールサーバーIP}';
GRANT SELECT ON information_schema.innodb_tablespaces TO exemone@'{db-agentインストールサーバーIP}';
GRANT SELECT ON information_schema.files TO exemone@'{db-agentインストールサーバーIP}';
-- MySQL/MariaDB 10.5.2以上 (Top Sort/Transaction)
GRANT SELECT ON sys.statements_with_sorting TO exemone@'{db-agentインストールサーバーIP}';
GRANT SELECT ON performance_schema.events_statements_summary_by_digest TO exemone@'{db-agentインストールサーバーIP}';
GRANT EXECUTE ON FUNCTION sys.format_statement TO exemone@'{db-agentインストールサーバーIP}';
GRANT EXECUTE ON FUNCTION sys.format_pico_time TO exemone@'{db-agentインストールサーバーIP}';
-- MySQL 8以上 / MariaDB 10.0.15 ~ 10.5.1
GRANT SELECT ON information_schema.innodb_trx TO exemone@'{db-agentインストールサーバーIP}';
2-2. Session Kill権限
-- MySQL 8.0、MariaDB 10.5.2以上
GRANT CONNECTION_ADMIN ON *.* TO exemone@'{db-agentインストールサーバーIP}';
-- MySQL 5.7以下、MariaDB 10.5.2未満
GRANT SUPER ON *.* TO exemone@'{db-agentインストールサーバーIP}';
-- AWS RDS
GRANT EXECUTE ON PROCEDURE mysql.rds_kill TO exemone@'{db-agentインストールサーバーIP}';
-- NCP
-- DDL権限を持つuserアカウントで CALL sys.ncp_kill_session({セッションID}) を利用
2-3. Replication権限
-- MySQL 8.0以上: 追加権限は不要 (基本モニタリング権限のみでクラスター関係を把握可能)
-- MySQL 8.0未満
GRANT REPLICATION CLIENT ON *.* TO exemone@'{db-agentインストールサーバーIP}';
GRANT REPLICATION SLAVE ON *.* TO exemone@'{db-agentインストールサーバーIP}';
-- MariaDB 10.4以下
GRANT REPLICATION CLIENT ON *.* TO exemone@'{db-agentインストールサーバーIP}';
-- MariaDB 10.5以上
GRANT SLAVE MONITOR ON *.* TO exemone@'{db-agentインストールサーバーIP}';
-- MariaDB 10.6以上
GRANT EXECUTE ON FUNCTION sys.format_statement TO exemone@'{db-agentインストールサーバーIP}';
GRANT EXECUTE ON FUNCTION sys.format_time TO exemone@'{db-agentインストールサーバーIP}';
GRANT EXECUTE ON FUNCTION sys.format_bytes TO exemone@'{db-agentインストールサーバーIP}';
GRANT EXECUTE ON FUNCTION sys.sys_get_config TO exemone@'{db-agentインストールサーバーIP}';
GRANT SELECT ON sys.* TO exemone@'{db-agentインストールサーバーIP}';
GRANT SLAVE MONITOR ON *.* TO exemone@'{db-agentインストールサーバーIP}';
GRANT BINLOG MONITOR, REPLICATION MASTER ADMIN ON *.* TO exemone@'{db-agentインストールサーバーIP}';
参考:
server_idが0の場合は単独サーバーのため、Replication権限の設定は不要です。MySQL 8.0未満のクラスター環境では、REPLICATION CLIENT、REPLICATION SLAVE権限がないとクラスター関係を把握できません。
3. 事前設定
Thread、SQL Text収集のためのパラメータ設定 (DB再起動が必要)
performance_schema = ON -- Performance Schemaを有効化 (デフォルト: ON)
max_digest_length = 4096 -- SQL digestの保存最大長を拡大 (デフォルト: 1024)
performance_schema_max_digest_length = 4096 -- Performance Schemaが保存するdigestテキストの最大長 (デフォルト: 1024)
performance_schema_max_sql_text_length = 4096 -- Performance Schemaが保存するSQLテキストの最大長 (デフォルト: 1024)
Slow Query収集設定
SET GLOBAL slow_query_log = ON;
SET GLOBAL slow_query_log_file = '{slow queryログファイルパス}';
SET GLOBAL long_query_time = {秒};
CPU Time / Event Wait などの収集設定
- MySQL 8.0.28以上 のバージョンから対応しており、MariaDBはDB側で非対応です。
performance_schema.setup_consumersテーブルのevents_transactions%、events_statements_%とperformance_schema.setup_instrumentsテーブルのevents_waits%、wait/%の値が YES の場合、DBで収集します。- 上記の値は DB再起動なしで適用できます(デフォルト: NO)。
meta lock収集設定
performance_schema.setup_instrumentsテーブルのwait/lock/metadata/sql/mdlの値が YES の場合、DBで収集します。- 上記の値は DB再起動なしで適用できます(デフォルト: NO)。
Plan照会用Procedure設定 (任意)
DMLやFunctionが使用されたクエリのPlan照会時、exemoneアカウントに追加権限がない環境では、権限の問題でPlan照会ができない場合があります。これを解決するには、Plan照会用プロシージャを作成します。
Step 1) Plan照会プロシージャの作成 (管理者権限アカウントで接続し、Plan収集が必要なすべてのスキーマで作成)
DELIMITER $$
CREATE PROCEDURE <スキーマ名>.exem_get_explain(IN query TEXT)
SQL SECURITY DEFINER
BEGIN
SET @explain := CONCAT('EXPLAIN ', query);
PREPARE stmt FROM @explain;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
Step 2) プロシージャ実行権限の付与
GRANT EXECUTE ON PROCEDURE <スキーマ名>.exem_get_explain TO exemone@'%';
Step 3) use_plan_procedureオプションの有効化
common._use_queryがtrueの場合: Setting > Database > Edit Instance > Custom Configuration でuse_plan_procedureの値をtrueに変更します。common._use_queryがfalseの場合: Database Metric Collection Setting > Metric Setting でplan_procedureトグルを ON に変更します。
参考: MySQL 8.0.2x以上のバージョンでは、SELECT文に EXPLAIN ANALYZE 構文が適用され、時間がかかる場合はKILL QUERYで中断できます。
exemONEモニタリングオプション設定
MySQL/MariaDBインスタンスは Setting > Database のInstance登録/編集画面で Custom Configuration に以下のキー値を設定し、指標収集方式を細かく調整できます。
パス: Setting > Database > Custom Configuration
| オプション名 | 説明 |
|---|---|
mysql.onpremise_slowquerylog_path | Slow Queryをファイル方式でモニタリングする際に使用するslow queryログファイルのパスを入力します。このオプションとともに OS Resource にモニタリング対象サーバーへインストールされたdb-agentが設定されている必要があり、ファイル方式のモニタリングが動作します。 |