MySQL Enterprise Monitor 3.0 マニュアル  /  ...  /  MySQL Enterprise Plugin for Connector/J の使用

12.2 MySQL Enterprise Plugin for Connector/J の使用

MySQL Enterprise Plugin for Connector/J によって、アプリケーションのコードを変更せずにアプリケーションのクエリー分析が可能になります。

重要

Connector/J は、クエリー集約のために MySQL Enterprise Monitor Aggregator を必要としません。

図 12.2 コネクタプラグインアーキテクチャー

コネクタプラグインアーキテクチャー

前提条件

  1. MySQL Connector/J バージョン 5.1.12 以降。

  2. JDK-1.7.0 以降。

  3. MySQL Enterprise Service Manager バージョン 3.0 以降。

  4. MySQL クライアントアプリケーションユーザーは、mysql.inventory テーブルへの SELECT 権限が必要です。このテーブルは、クエリーアナライザデータを MySQL Enterprise Service Manager にレポートするために必要なサーバー UUID を格納します。GRANT ステートメントを使用します。例:

    mysql> GRANT SELECT on mysql.inventory to 'user'@'localhost' IDENTIFIED BY 'password';
    
  5. 分析対象のアプリケーションの CLASSPATH 内の Apache Commons ロギング。Commons Logging をまだ使用していない場合、次のセクションに記載されているようにアプリケーションの CLASSPATH を変更して、MySQL Enterprise Monitor 製品にバンドルされている JAR ファイルを指示するようにします。

インストール

使用中の MySQL Connector/J のバージョンから参照できるアプリケーションの CLASSPATH に、JAR ファイル lib/c-java-mysql-enterprise-plugin-version.jar を配置します。MySQL Connector/J の JAR ファイルと同じ場所か、その JAR ファイルの場所の上位階層のクラスローダーを使用することが理想的です。

分析対象のアプリケーションが、CLASSPATH 内に Apache Commons Logging を持たない場合、lib/required/commons-logging-1.1.1.jar ファイルをアプリケーションの CLASSPATH にインストールします。アプリケーション内のほかのコンポーネントが Apache Commons Logging を使用しない場合、クエリーアナライザプラグインがインストールされた場所と同じ場所にこれをインストールします。

com.mysql.etools.jdbc.StatementPerformanceCounters には静的な shutdown() メソッドがあり、これを使用して、アプリケーションがシャットダウンするときに、クエリー分析プラグインを正常にシャットダウンできます。

アプリケーションが J(2)EE アプリケーションサーバーに配備される場合、アプリケーションのコンテキストがシャットダウン (またはリロード) されるときにこのメソッドを呼び出すプラグインと一緒に ContextListener が配布されます。@WebListener (JEE6 以上など) をサポートするアプリケーションサーバーは、追加構成を行う必要がありませんが、以前のアプリケーションサーバーを使用していたユーザーは、ユーザーのアプリケーションの web.xml ファイルに次のアプリケーションを追加する必要があります。


<listener> 
    <listener-class> 
        com.mysql.etools.jdbc.ContextListener 
    </listener-class> 
</listener> 

MySQL Enterprise Plugin for Connector/J の使用

このセクションでは、MySQL Plugin for Connector/J を構成する方法について説明します。

表 12.2 MySQL Plugin for Connector/J プロパティー

プロパティー名 説明
statementInterceptors

プラグインを有効にします。このプロパティーは次のように設定します。

statementInterceptors = com.mysql.etools.jdbc.StatementPerformanceCounters
disableSourceLocation

クエリー例とともにスタックトレースを MySQL Enterprise Service Manager に送信するかどうかを定義します。

  • プロパティータイプ: boolean

  • 値: true または false (デフォルト)。

serviceManagerUrl

MySQL Enterprise Service Manager の URL を定義します。完全な URL とポート番号を含めます。

  • プロパティータイプ: string

  • 値: MySQL Enterprise Service Manager の URL とポート番号。

serviceManagerUser

MySQL Enterprise Service Manager に接続する際に使用するエージェントユーザー名を定義します。

  • プロパティータイプ: string

serviceManagerPassword

MySQL Enterprise Service Manager に接続する際に使用するエージェントパスワード名を定義します。

  • プロパティータイプ: string

serviceManagerConnectTimeout

MySQL Enterprise Service Manager との接続が確立されるまで待機する秒数を定義します。

  • プロパティータイプ: numeric

  • デフォルト値: 0

serviceManagerResponseTimeout

MySQL Enterprise Service Manager からの応答を待機する秒数を定義します。

  • プロパティータイプ: numeric

  • デフォルト値: 0

mysqlServerUUID

サーバーの UUID を取得できない場合、このプロパティーで UUID を定義します。

  • プロパティータイプ: string

UUID を取得するには、プラグインは mysql.inventory に対する SELECT 権限が必要です。


また MySQL Enterprise Service Manager とのすべての通信に SSL を使用するように MySQL Enterprise Plugin for Connector/J を構成することもできます。SSL を有効化するには、接続文字列に次のプロパティーを追加します。

表 12.3 MySQL Plugin for Connector/J SSL プロパティー

プロパティー名 説明
verifySslHostnames

true に設定した場合は SSL サーバー証明書のホスト名の検証が可能になります。ホスト名は BrowserCompatHostnameVerifier に記載されているスキームを使用して検証され、これは Firefox および Curl によって使用されるものと同じで、RFC 2818 によって指定されています。

  • プロパティータイプ: boolean

  • デフォルト値: false

verifySslCerts

サーバーによって提供された証明書が trustCertificateKeystore 内の CA によって署名されていることをプラグインで検証するかどうかを定義します。

  • プロパティータイプ: boolean

  • デフォルト: false、検証は無効です。

trustCertificateKeystoreUrl

信頼できるルート証明書 KeyStore の URL を定義します。何も指定されない場合、Java のデフォルトが使用されます。

  • プロパティータイプ: string

trustCertificateKeystorePassword

KeyStore のパスワードを定義します。

  • プロパティータイプ: string

trustCertificateKeystoreType=[type]

信頼できるルート証明書の KeyStore タイプを定義します。タイプが NULL または空に設定されている場合、デフォルトで JKS が使用されます。JVM でサポートされている標準のキーストアタイプは JKS および PKCS12 です。インストールされ JVM で使用可能なセキュリティー製品によっては、使用している環境でさらに多くが利用できることがあります。

clientCertificateKeystoreUrl クライアント KeyStore の URL を定義します。何も指定されない場合、Java のデフォルトが使用されます。
clientCertificateKeystorePassword=[password]

クライアント証明書ストアに使用するパスワードを定義します。

clientCertificateKeystoreType

クライアント証明書の KeyStore タイプを定義します。タイプが NULL または空に設定されている場合、デフォルトで JKS が使用されます。


次の例では Connector/J が MySQL Enterprise Service Manager localhost とポート 18443 で通信するように構成され、エージェントユーザー名 agent およびパスワード PASSWORD が使用されます。接続文字列に単一行でプロパティーを追加します。

statementInterceptors=com.mysql.etools.jdbc.StatementPerformanceCounters
  &serviceManagerUrl=https://localhost:18443/
  &serviceManagerUser=agent
  &serviceManagerPassword=PASSWORD

また、アプリケーション固有のプロパティーを JDBC URL に追加する必要があります。たとえば、次のフラグメントは、ユーザー名およびパスワードに mysqltest を使用して、localhost 上の MySQL データベーステストに接続し、さらにクエリーデータを収集して localhost 上の MySQL Enterprise Service Manager に送信します。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

Connection conn = null;
...
try {
    conn =
       DriverManager.getConnection("jdbc:mysql://localhost/test?" +
           "?user=mysqltest" + 
           "&password=mysqltest" +
           "&statementInterceptors=com.mysql.etools.jdbc.StatementPerformanceCounters" +
           "&serviceManagerUrl=https://localhost:18443/" + 
           "&serviceManagerUser=agent" + 
           "&serviceManagerPassword=PASSWORD"
       );

    // Do something with the Connection

   ...
} catch (SQLException ex) {
    // handle any errors
}
注記

DataSource を使用している場合 (通常、Glassfish、Weblogic または Websphere を使用しているとき)、これらのプロパティーは URL プロパティーの一部として渡す必要があり、DataSource 構成自体に追加することはできません。

Connector/J 用の代替のロギングシステムが選択されていない場合、URL または DataSource に次のプロパティーを追加することによって、標準のロガーと異なるものを使用するように Connector/J のログファクトリを構成することを推奨します。

  • logger=Log4JLogger (Log4J を使用するアプリケーションの場合)

  • logger=CommonsLogger (Apache Commons Logging を使用するアプリケーションの場合)

  • logger=Jdk14Logger (Java 1.4 以降のロギング を使用するアプリケーションの場合)

プラグインの追加の構成は、Enterprise Service Manager のユーザーインタフェースを介して「クエリーアナライザー」タブを使用して実行されます。この場所から、プラグインを使用する、指定された MySQL インスタンスのクエリーパフォーマンスデータの取得を有効または無効にできます。さらに、取得される詳細レベル、つまりサマリー、例 (ソースコードの場所)、および EXPLAIN プランも構成できます。


User Comments
Sign Up Login You must be logged in to post a comment.