メインコンテンツまでスキップ

設定方法

1. 対応バージョン​

DBの種類対応バージョン
MySQL5.7以上
MariaDB10以上

Cloud環境のMySQL/MariaDB対応状況​

Cloud環境MySQLMariaDB
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_pathSlow Queryをファイル方式でモニタリングする際に使用するslow queryログファイルのパスを入力します。このオプションとともに OS Resource にモニタリング対象サーバーへインストールされたdb-agentが設定されている必要があり、ファイル方式のモニタリングが動作します。