MySQL のモニター

「 Instana 」エージェントをインストールすると、「 MySQL 」センサーが自動的に展開およびインストールされます。

サポート情報

MySQL センサーが現在の環境と互換性があるかどうかを確認するには、以下のサポート情報セクションをご確認ください:

サポート対象のオペレーティング・システム

このセンサーは、 Instana のホストエージェントと同じオペレーティングシステムに対応しています。 詳細については、各ホストエージェントの 「対応OS 」セクションを参照してください。例:

注: OSの対応状況は、技術および監視方法によって異なります。 リモート監視については、 Instana エージェントは、対象システムのOSに関係なく、 Instana がサポートするあらゆるOS上で実行可能です。 ネイティブ監視を行うには、 Instana エージェントと対象のテクノロジーが、同じオペレーティングシステムに対応している必要があります。

対応バージョンとサポート方針

このセンサーは、以下のバージョンの MySQL: に対応しています

  • 5.6.x
  • 5.7.x
  • 8.0.x
  • 8.4.x
  • 9.1.x

以下の表は、最新のサポート対象バージョンとサポート方針を示しています:

テクノロジー サポート・ポリシー 最新技術バージョン サポートされる最新バージョン
MySQL 45 日間 9.7.1 9.6.0

サポートポリシーに関する詳細については、 「センサーのサポート戦略」 を参照してください。

構成

詳細なメトリック・モニターを有効にするには、モニター情報にアクセスするための資格情報についてエージェントに通知する必要があります。 これは、エージェント <agent_install_dir>/etc/instana/configuration.yamlで構成できます。

com.instana.plugin.mysql:
  user: ''
  password: ''
  poll_rate: 10 #Values are in seconds. Default Value 1 Sec.
  schema_excludes: ['INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA']
 
注: ポーリング間隔が指定されていない場合、デフォルトでは1秒になります。

schema_excludes フィールドに挿入されたスキーマ名は、スキーマごとの統計の収集および Schemas グラフでのモニターから除外されます。

SSL/TLS サポート

Instana MySQL センサーは、 SSL 対応の MySQL インスタンスの監視をサポートしています。

SSL / TLS の基本設定

Instana エージェントが MySQL データベースに安全に接続するには、エージェントの設定ファイルで以下の設定を行 <agent_install_dir>/etc/instana/configuration.yamlってください:

com.instana.plugin.mysql:
  enabled: true
  user: '<username>'
  password: '<password>'
  poll_rate: 10 #Values are in seconds. Default Value 1 Sec.
  schema_excludes: ['INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA'] #optional
  sslKeyStore: '/path/to/keystore.jks'
  sslKeyStorePassword: '<keystore password>'
  #disableSslHostnameVerification: true

鍵は Java 鍵ストア 形式 (JKS) でなければなりません。 keytool を使用してこれらを作成できます。

注:MySQL の SSL 証明書を、 JVM のデフォルトのトラストストア(cacerts)に直接追加することも可能です。このトラストストアは、 <java_home>/jre/lib/security/ folder.

MySQL Connector/J ドライバーの要件

新しいバージョンの MySQL (特に認証 caching_sha2_password を使用するバージョン)との互換性を確保するには、更新された MySQL Connector/Jドライバーを使用する必要があります:

  1. 「 MySQL 」 のダウンロードページから、最新の MySQL Connector/Jドライバーをダウンロードしてください。
  2. ダウンロードしたJARファイル(例: mysql-connector-j-9.6.0.jar)を、 Instana エージェントのデプロイディレクトリにコピーします:

    cp mysql-connector-j-9.6.0.jar <agent_install_dir>/deploy/

必要な DB アクセス権限

センサーが DBMS に関するパフォーマンス情報を収集できるようにするには、スキーマ PERFORMANCE_SCHEMA に対する読み取り専用アクセス権限が必要です。

  • 8.0.0より前のバージョンの MySQL の場合、必要な権限を持つアカウントを作成する方法について、以下の例を参照してください。

    GRANT REPLICATION CLIENT ON *.* TO '<instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd';
    GRANT SELECT ON 'performance_schema'.'events_waits_summary_global_by_event_name' TO '<instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd';
    GRANT SELECT ON 'performance_schema'.'events_statements_summary_by_digest' TO '<instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd';
    GRANT SELECT ON 'performance_schema'.'events_statements_summary_global_by_event_name' TO '<instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd';
    GRANT SELECT ON 'performance_schema'.'replication_connection_status' TO '<instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd';
     
  • MySQL バージョン 8.0.0 以降の場合、必要な権限を持つアカウントを作成する方法について、以下の例を参照してください。

    GRANT REPLICATION CLIENT ON *.* TO '<instana_mon_user>'@'localhost';
    GRANT SELECT ON performance_schema.events_waits_summary_global_by_event_name TO '<instana_mon_user>'@'localhost';
    GRANT SELECT ON performance_schema.events_statements_summary_by_digest TO '<instana_mon_user>'@'localhost';
    GRANT SELECT ON performance_schema.events_statements_summary_global_by_event_name TO '<instana_mon_user>'@'localhost';
    GRANT SELECT ON performance_schema.replication_connection_status TO '<instana_mon_user>'@'localhost';
     
注: 取引の合計メトリクスを収集するには、ユーザーに 権限 PROCESS を付与し、スキーマ でカウンター 'trx_nl_ro_commits''trx_ro_commits''trx_rw_commits' 'trx_rollbacks'、、および information_schema.innodb_metrics を有効にする必要があります:
  • 8.0.0より前のバージョンの MySQL の場合、SQL ユーザーのすべてのデータベース・スキーマに PROCESS 権限を付与するには、以下のコマンドを実行します。

    GRANT PROCESS ON *.* TO <instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd';
     
  • MySQL バージョン 8.0.0 以降の場合、SQL ユーザーのすべてのデータベース・スキーマに PROCESS 権限を付与するには、以下のコマンドを実行します。

    GRANT PROCESS ON *.* TO '<instana_mon_user>'@'localhost';
     

    アカウント名のホスト名部分は、 MySQL 構成によって異なります。

  • これらのカウンターを使用可能にするには、以下のコマンドを実行します。

    SET GLOBAL innodb_monitor_enable = 'trx_nl_ro_commits';
    SET GLOBAL innodb_monitor_enable = 'trx_ro_commits';
    SET GLOBAL innodb_monitor_enable = 'trx_rollbacks';
    SET GLOBAL innodb_monitor_enable = 'trx_rw_commits';
     

MySQL 8.0.0 以降のバージョンに対応

ビルド 266 以降、 Instana は MySQL 8.0.0 以降のバージョンを自動的に監視します。 「 MySQL 」ドライバーのJARファイルを、「 Instana 」 エージェントのデプロイフォルダに手動で追加する必要はありません。

以前のビルドでは、ライセンス上の理由により、 Instana は MySQL 8.0.0以降を対象とした MySQL の自動監視機能を提供していません。 したがって、 Maven リポジトリから MySQL ドライバーのJARファイルを手動で取得し、コマンド <agent_install_dir>/deploy/ を使用してそれを Instanadeploy エージェントフォルダに追加する必要があります。 Maven リポジトリーから取得された MySQL ドライバー JAR ファイルには、バージョン 8.0.16 以降が必要です。

Kubernetes および OpenShift に、 MySQL コネクタのJARファイルをデプロイする

MySQL コネクター jar ・ファイルを Kubernetes または OpenShift 環境にデプロイするには、init コンテナーが使用されます。 Helm または静的な YAML を使用してエージェントをデプロイし、init コンテナに jarMySQL Connector ファイルをダウンロードさせる場合は、 DeamonSet YAML に対して以下の変更を適用する必要があります:

spec:
  initContainers:
    - name: init-myservice
      image: 'registry.access.redhat.com/ubi8/ubi:latest'
      command:
        - sh
        - '-c'
        - >-
          curl
          https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar
          --output /instana/mysql-connector-java-8.0.28.jar
      resources: {}
      volumeMounts:
        - name: instanadeploy
          mountPath: /instana
      volumes:
        - name: instanadeploy
          emptyDir: {}
      containers:
        name: instana-agent
        volumeMounts:
          - name: instanadeploy
            mountPath: /opt/instana/agent/deploy
 

メトリック収集

メトリクスを表示するには、 Instana のユーザーインターフェースのサイドバーで 「Infrastructure」 を選択し、監視対象の特定のホストをクリックします。すると、収集されたすべてのメトリクスと監視対象のプロセスが表示されたホストダッシュボードが表示されます。

パフォーマンス・メトリック

メトリック 説明 粒度
照会 クエリーの総数 1 秒
SELECTS 選択クエリーの数 1 秒
UPDATE 数 更新クエリーの数 1 秒
INSERT 数 挿入クエリーの数 1 秒
DELETE 数 削除クエリーの数 1 秒
その他 その他のクエリーの数 1 秒
低速照会数 低速クエリーの数 1 秒
エラー エラーの数 1 秒
接続スレッド数 現在のオープン接続の数 1 秒
待機イベント io file、socket、table。sync cond、mutex、rwlock 1 秒
最大使用接続数 使用される接続の最大数 1 秒
異常終了した接続数 中止された接続の数 1 秒
読み取り要求 読み取り要求の数 1 秒
書き込み要求 書き込み要求の数 1 秒
スキーマあたりのクエリー数 すべてのモニター対象スキーマのクエリー数 1 秒
スキーマあたりの平均クエリー待ち時間 すべてのモニター対象スキーマの平均クエリー待ち時間 1 秒
プール・ページ合計 InnoDB バッファー・プールの合計サイズ (ページ単位) 1 秒
空きプール・ページ InnoDB バッファー・プール内のフリー・ページ数 1 秒
プール・ページ・データ データが含まれている InnoDB バッファー・プール内のページ数 1 秒
プール・ページ要求 論理読み取り要求の数 1 秒
読み取りページ InnoDB バッファー・プールから読み取られたページの数 1 秒
ページ・サイズ InnoDB のページ・サイズ 1 秒
キャッシュ・ヒット率 InnoDB Innodb_buffer_pool_read_requests および Innodb_pages_read に基づくキャッシュ・ヒット率 1 秒
トランザクション応答時間 トランザクションの平均応答時間 1 秒
合計トランザクション innodb_metrics 表からのトランザクションの合計数。 これは、「trx_nl_ro_commits」、「trx_ro_commits」、「trx_rollbacks」、「trx_rw_commits」の各カウンターのカウントの合計として計算されます。 1 秒
最大接続数の接続エラー数 サーバーの max_connections 制限のために拒否された接続の数 1 秒
現在の待機の行ロック InnoDB 個の表に対する操作で現在待機している行ロックの数 1 秒
平均行ロック時間 InnoDB 個の表の行ロックを取得するための平均時間 (ミリ秒) 1 秒

レプリケーション・メトリック

メトリック 説明 粒度
実行中のレプリケーション I/O スレッド レプリケーション I/O スレッド実行中: 0-no、1-yes 1 秒
実行中のレプリケーション SQL スレッド レプリケーション SQL スレッド実行中: 0-no、1-yes 1 秒
レプリケーションの最終 I/O エラー・コード 最後の I/O レプリケーション・エラーのエラー・コード 1 秒
レプリケーションの最終 SQL エラー・コード 最後の SQl レプリケーション・エラーのエラー・コード 1 秒
マスターからの遅延秒数 レプリカがソースより遅れている秒数 1 秒

正常性シグニチャー

センサーごとに、着信メトリックに対して継続的に評価され、ユーザーへの影響に応じて問題またはインシデントを提起するために使用される正常性シグニチャーのキュレーション済み知識ベースがあります。

組み込みイベントは、エンティティのヘルスシグネチャの異常に基づいて課題やインシデントをトリガーし、 カスタムイベントは、任意のエンティティの個々のメトリクスのしきい値に基づいて課題やインシデントをトリガーします。

MySQL センサーの built-events については、 組み込みイベントのリファレンスを参照してください。

トラブルシューティング

パフォーマンス・スキーマがデフォルトで無効になっている

以下のようなエラー・メッセージが Instana エージェント・ログに表示される場合:

java.sql.SQLSyntaxErrorException: (conn=2) Table 'performance_schema.global_status' doesn't exist
 

おそらく、MySQL サーバー・コピーが、デフォルトでパフォーマンス・スキーマが無効になった状態でコンパイルされました。 これは 既知のバグです。

これを修正するには、MySQL CLI から有効化を試行できます。

mysql> set @@global.show_compatibility_56=ON;
Query OK, 0 rows affected (0.00 sec)
 

有効になっていることを確認します。

mysql>select @@show_compatibility_56;
+-------------------------+
| @@show_compatibility_56 |
+-------------------------+
|                       1 |
+-------------------------+
1 row in set (0.00 sec)
 

有効にすると、 mysql>show status; が機能するようになります。 Instana エージェントを再始動してください。

タイム・ゾーンのセットアップ

以下のようなエラー・メッセージが Instana エージェント・ログに表示される場合:

The server time zone value 'CEST' is unrecognized or represents more than one time zone.
You must configure either the server or JDBC driver (via the serverTimezone configuration property)
to use a more specifc time zone value if you want to utilize time zone support.
 

サーバーのタイム・ゾーンを構成する必要があります。

MySQL がホスト時間帯を適切に読み取らないため、これは 既知の問題 です。

このエラーは、「 MySQL Server Time Zone Support」の説明に従って修正できます。

サポートされない認証プロトコル

以下のようなエラー・メッセージが Instana エージェント・ログに表示される場合:

Client does not support authentication protocol requested by server
 

caching_sha2_password メカニズムではなく、mysql_native_password を使用する必要があります。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'
mysql> flush privileges;
 

接続エラー

Instana のホストエージェントのログに、次のようなエラーメッセージが表示されることがあります:

Agent could not connect to MySQL.  Could not connect: Access denied for user 'user'@'ipaddress/hostname' (using password: YES)
 

この場合、 MySQL 側で別のホスト名を使用するように MySQL ユーザーを変更する必要があります。 たとえば、 MySQL ユーザーを「 user@localhost」として作成した場合、エラーメッセージに記載されているとおり、 MySQL 側のユーザー名を「user」@「IPアドレスまたはホスト名」に変更する必要があります。その後、エージェントがホスト名を自動的に検出するため、エージェント設定ファイルの com.instana.plugin.mysql > user フィールドを、ホスト名を除いた「ユーザー名」で更新してください。 このエラーは、 MySQL がコンテナー内で実行された場合に発生する可能性があります。