MySQLインスタンスに関するより深いインサイトを得るために、以下のオプションを設定できます:
特定のデータベースをモニターする
デフォルトでは、レシーバーの設定から database フィールドは省略されており、レシーバーは監視ユーザーがアクセスできるすべてのデータベースをモニターします。監視を単一のスキーマに制限するには、database をそのスキーマの名前に設定します:
receivers: nrmysql: endpoint: <YOUR_HOST>:<YOUR_PORT> username: <YOUR_DB_USERNAME> password: <YOUR_DB_PASSWORD> database: <YOUR_DATABASE_NAME> collection_interval: 30sTLSを有効にする
tls フィールドはオプションですが、これを省略することはTLSを明示的に無効にすることと同じではありません:レシーバーのデフォルト設定では insecure: true が設定されるため、tls を設定しない限り、接続は暗号化されません。ほとんどのAmazon RDSおよびAuroraインスタンスはSSL/TLSを強制するため、通常、これらの環境にはこのブロックを追加する必要があります。
receivers: nrmysql: endpoint: <YOUR_HOST>:<YOUR_PORT> username: <YOUR_DB_USERNAME> password: <YOUR_DB_PASSWORD> collection_interval: 30s tls: insecure: false insecure_skip_verify: false ca_file: <PATH_TO_CA_CERTIFICATE>ヒント
Amazon RDS/Auroraの場合は、適切なRDS CA証明書バンドルをダウンロードし、ca_fileで参照してください。insecure_skip_verify: trueは、自己署名証明書を使用するインスタンスに対するテストでのみ設定し、本番環境では絶対に設定しないでください。
書き込みステートメントのクエリプラン
explain_modeをprocedureに設定すると、監視ユーザーにDML権限を付与することなく、NRDOT Collectorが書き込みステートメントのEXPLAINプランを収集できるようになります。設定すると、レシーバーは<schema>.explain_statementという名前のSQL SECURITY DEFINERプロシージャを検索します。そのプロシージャが存在しない場合、または監視ユーザーにその実行権限がない場合、レシーバーはinlineモードにフォールバックします。この状態では、書き込みステートメントはクエリプランの収集に失敗し、コレクターのログに次の警告が表示されます:unable to execute explain statement。
explain_modeをprocedureに設定するには、特権アカウント(たとえば、root)として、スキーマごとに1回以下を実行してください:
DELIMITER //CREATE DEFINER = 'root'@'%' PROCEDURE <YOUR_SCHEMA>.explain_statement(IN q TEXT)SQL SECURITY DEFINERBEGIN SET @nr_explain_sql = CONCAT('EXPLAIN FORMAT=JSON ', q); PREPARE nr_explain_stmt FROM @nr_explain_sql; EXECUTE nr_explain_stmt; DEALLOCATE PREPARE nr_explain_stmt;END//DELIMITER ;GRANT EXECUTE ON PROCEDURE <YOUR_SCHEMA>.explain_statement TO '<YOUR_DB_USERNAME>'@'%';GRANT EXECUTEステップは、CALLステートメントを実行する以上の目的で必要です。この権限がないと、監視ユーザーはレシーバーが存在確認に使用するinformation_schema.ROUTINES内のプロシージャを表示できません。GRANT EXECUTEを省略すると、プロシージャが欠落している場合と同じ結果になり、どちらの場合もレシーバーはinlineモードにフォールバックします。
ヒント
この設定はスキーマごとにステートフルです。データベースの作成または復元、あるいはプロシージャの削除を行うと、そのスキーマの書き込みステートメントのプラン収集が暗黙的に無効になり、inlineモードへのフォールバックがトリガーされます。SQL SECURITY DEFINERストアドルーチンは、その中のPREPARE/EXECUTEステートメントを通じて実行される動的SQLに、定義者の権限を適用します。これにより、SELECTのみの監視ユーザーが、直接の実行権限を持たないステートメントのプランを取得できるようになります。
ロック待機時間の追跡の有効化
events_waits_currentの消費者はロック待機時間情報を提供しますが、プラットフォーム固有の設定が必要です:
プラットフォーム | 方法 | 再起動後も永続しますか? |
|---|---|---|
セルフマネージドMySQL |
(
)で | はい |
AWS RDS |
| いいえ : 再起動またはフェイルオーバー時にリセットされます。再起動のたびに再実行するか、再接続時に消費者を自動的に再有効化できるように、レシーバーユーザーにこの
を付与します。 |