手動 ProbeBuilding

手動 ProbeBuilding は、アプリケーションをインスツルメントする高度で非動的な方法です。ProbeBuilder を手動で実行すると、アプリケーション サーバが実行される前にディスク上のクラスがインスツルメントされます。ご使用の環境が AutoProbe をサポートしないか、AutoProbe を使用しない場合、手動 ProbeBuilding を使用できます。
apmsaas
手動 ProbeBuilding は、アプリケーションをインスツルメントする高度で非動的な方法です。ProbeBuilder を手動で実行すると、アプリケーション サーバが実行される前にディスク上のクラスがインスツルメントされます。ご使用の環境が AutoProbe をサポートしないか、AutoProbe を使用しない場合、手動 ProbeBuilding を使用できます。
手動で ProbeBuilder を使用してアプリケーションをインスツルメントする方法
Introscope は、アプリケーションをインスツルメントする他の方法をサポートしています。ProbeBuilder を使用する前にこれらの方法(JVM AutoProbe、およびアプリケーション サーバ用の AutoProbe)を使用します。ほかのインスツルメント メソッドでは、ProbeBuilder を使用しないでください。
手動 ProbeBuilding を使用するには、これらのタスクに従います。
前提条件の確認
開始する前に、以下のタスクが実行済みであることを確認します。
  • Java エージェントをインストールしている
  • Java エージェントおよび Enterprise Manager 接続プロパティを設定している
  • Java エージェント名を設定している
  • ProbeBuilder オプションを設定している
コマンドライン ProbeBuilder の使用
ご使用のコンピュータにウィンドウ環境が
ない
場合、これらのタスクを実行します。
バイトコードへのプローブの追加
以下の例で示すように、Java コマンドを実行して、コマンドライン ProbeBuilder を有効にします。ProbeBuilder のコマンドライン コマンドを使用して、ディレクティブ、コードの場所、および、インスツルメントされたコードの出力先を指定します。
Java コマンドの構文は、使用環境の Java バージョンおよびその他の設定によって異なります。ProbeBuilder のクラスパスは、エージェント インストーラまたはフル Introscope インストーラのどちらを使用したかによって異なります。
非常に大きな .jar ファイルを処理するときは、JVM メモリ設定でメモリを増やすことができます。設定方法については、JVM マニュアルを参照してください。
例: エージェント ディレクトリからの ProbeBuilder の呼び出し
java -cp <Agent_Home>/releases/<release_number>/core/ext/ProbeBuilder.jar com.wily.introscope.api.IntroscopeProbeBuilder
-directives <Agent_Home>/releases/<release_number>/core/config/default.pbl,Agent_Home>/releases/<release_number>/core/config/stream.pbd
-origdir /usr/myApp/classes
-destdir /usr/myApp/classes.isc - verbose
例: Enterprise Manager ディレクトリからの ProbeBuilder の呼び出し
java -cp lib/ProbeBuilder.jar com.wily.introscope.api.IntroscopeProbeBuilder
-directives Agent_Home>/releases/<release_number>/core/config/default.pbl,Agent_Home>/releases/<release_number>/core/config/stream.pbd
-origdir /usr/myApp/classes
-destdir /usr/myApp/classes.isc - verbose
以下の手順に従います。
  1. ディレクティブの指定には、以下のコマンドを使用します。
    • -directives|-pbd filename [...]
      スキャンする ProbeBuilder ディレクティブ(.pbd または PBD)ファイル、ProbeBuilder リスト(.pbl または PBL)ファイル、またはディレクトリのカンマ区切りのリストを入力します。PBD または PBL ファイル名が少なくとも 1 つは必要です。
      収集する情報量に応じてフルまたは標準の PBL ファイルを選択します(フルまたは標準追跡オプションを参照)。
      デフォルトの Java エージェント インストーラを使用して、エージェントをインストールした場合に表示される内容
      <Agent_Home>/releases/<release_number>/core/config/ ディレクトリ内の可能性のあるすべてのデフォルトの PBD および PBL ファイルが表示されます。
      アプリケーション サーバ固有の Java エージェント インストーラを使用して、エージェントをインストールした場合に表示される内容
      そのアプリケーション サーバに固有の PBD および PBL ファイルのみが表示されます。
  2. 元のコードの場所およびインスツルメントされたコードの出力先を指定するために、以下の 3 つのペアからいずれか 1 セットを選択します。ディレクトリ、.jar ファイル、またはクラスを使用します。
    • -origdir ディレクトリ -destdir ディレクトリ
      このペアは元のディレクトリ名(サブディレクトリを含む)と送信先ディレクトリを指定します。
    • -origjar ファイル名 -destjar ファイル名
      このペアは元のアーカイブ ファイル名を指定します。ファイル名の種類には、.jar、.zip、.war、.rar、および .ear アーカイブと送信先アーカイブ ファイル名が含まれます。
    • -origclass ファイル名 -destclass ファイル名
      このペアは元のクラス ファイル名と送信先クラス ファイル名を指定します。
    以下のオプションがあります。
    • -skipitems[-skipitems]
      このオプションは Java バイトコード ファイルまたはアーカイブ ファイル(.jar ファイルおよび .zip ファイル)以外のファイルをすべてスキップします。
      -skipitems
      が設定されていない場合、Java バイトコード ファイル以外のファイルは、変更されずに出力先にコピーされます。
    • -help -h -?
      このオプションはヘルプ画面を表示します。
    • -prompt
      問題が発生した場合に、対話的なテキスト UI をオンにします。
    • -verbose
      このオプションは、プログラムを実行する各操作に関する情報メッセージを表示します。
クラスパスの編集
インスツルメントされたコードおよび Java エージェントの場所を反映するために、アプリケーション起動スクリプトのクラスパスを更新します。
以下の手順に従います。
  1. アプリケーション起動スクリプトのクラスパスを編集します。ProbeBuilder で作成された、インスツルメントされたコードを含むディレクトリの場所を含めます。この参照が、クラスパスで、元のコードの参照よりも前に行われることを確認します。
  2. アプリケーション起動スクリプトのクラスパスを編集して、Agent.jar ファイルへのパスを含めます。
    編集前に、クラスパスがどのように見えるかの例を以下に示します。
    <
    your_application_path
    >/lib/app.jar MainClass
    編集後に、クラスパスがどのように見えるかを以下に示します。
    <your-applicationpath>.isc/lib/app.jar:/<ApplicationServer_Home>/wily/Agent.jar MainClass
  3. 変更を保存します。
  4. 新しい起動スクリプトでアプリケーションを開始します。
    クラスパスが設定されます。
インスツルメントされたコードの実行
元のコードの代わりにインスツルメントされたコードを実行する 3 つの方法を以下に示します。
  • クラスパスで元のクラスのパスを インスツルメントされたコードのパスと置き換えます。
    初めてアプリケーションをインスツルメントする場合は、このプロセスを実行します。
  • アプリケーション コードの一部のみをインスツルメントした場合は、クラスパスの先頭にパスを追加します
    クラスパスで、元のコード パスの前に、インスツルメントされたコード パスを配置します。このプロセスはパスのプリペンドと呼ばれています。
    パスをプリペンド(先頭に追加)すると、インスツルメントされたコードがロードされ、パフォーマンス データがレポートされます。インスツルメントされていないコードもロードされ、正常に動作しますが、パフォーマンス データはレポートされません。
  • インスツルメントされたコードを元のクラスパスに配置します。
    クラスパスが多くの場所で設定されている場合、この方法を使用します。
    • 元のコードを新しい場所に移動します。クラスパスはそのままで変更しません。次に、元の場所にインスツルメントされたコードを移動します。
    • (UNIX コンピュータ)インスツルメントされたコードの現在の場所から元の場所へのシンボリック リンクを作成できます。
    この方法を実運用環境で使用する場合は慎重に行ってください。この方法を使用すると、元のコードとインスツルメントされたコードのどちらを使用しているかわからなくなることがあるためです。
インスツルメントされていないコードに戻す
インスツルメントされていないコードの使用に切り替える場合は、インスツルメントされたコードを実行するために行ったクラスパスへの変更を元に戻します。
  • インスツルメントされたコードへのパスを Java クラスパスに配置した場合
    Java クラスパスのインスツルメントされたコードへのパスを元のパスと置き換えます。
  • 元のコードへのパスの前にインスツルメントされたコードへのパスを追加した場合
    先頭に追加したパスをクラスパスからを削除します。
    クラスパスの先頭追加部分を削除して、元のクラスパスだけを残します。
  • インスツルメントされたコードを元のクラスパスに配置した場合
    インスツルメントされたコードを元のパスから削除して、元のクラスパスの元のコードを配置します。
  • UNIX コンピュータでシンボリック リンクを使用した場合
    シンボリック リンクで元のディレクトリをポイントするか、リンクを削除して元のクラスパスにコードを移動します。