スマート インスツルメンテーションの設定

スマート インスツルメンテーションでは、ユーザが監視しているアプリケーション内で何が起こっているかに関する有益な詳細が提供されます。スマート インスツルメンテーションが有効になっている場合、エージェントは ProbeBuilder ディレクティブを使用せずに、高深度可視性コンポーネントのその他のメソッドの検出および自動インスツルメントを実行します。Introscope は、スマート インスツルメンテーションを使用して、トランザクション追跡を自動的に収集します。スマート インスツルメンテーションと動的インスツルメンテーションが有効な場合、エージェントはエントリ ポイントおよびバックエンドを自動検出できます。
apmdevops104jp
スマート インスツルメンテーションでは、ユーザが監視しているアプリケーション内で何が起こっているかに関する有益な詳細が提供されます。スマート インスツルメンテーションが有効になっている場合、エージェントは ProbeBuilder ディレクティブを使用せずに、高深度可視性コンポーネントのその他のメソッドの検出および自動インスツルメントを実行します。Introscope は、スマート インスツルメンテーションを使用して、トランザクション追跡を自動的に収集します。
スマート インスツルメンテーションと動的インスツルメンテーションが有効な場合、エージェントはエントリ ポイントおよびバックエンドを自動検出できます。
3
3
スマート インスツルメンテーション プロパティの設定
使用環境に応じて、スマート インスツルメンテーションの深度とスコープを変更できます。オーバーヘッドの影響およびユーザの監視環境について検討することができます。たとえば、実運用環境ではなく、テスト環境または QA 環境で高めのオーバーヘッドを試してみることができます。
  • 高深度可視性コンポーネントを表示するには、以下のプロパティの両方が true に設定されている必要があります。
    • introscope.agent.deep.instrumentation.enabled
    • introscope.agent.deep.trace.enabled
  • 以下のスマート インスツルメンテーション プロパティが機能するには、
    introscope.agent.deep.instrumentation.enabled
    introscope.agent.deep.trace.enabled
    の両方が true に設定されている必要があります。
以下の手順に従います。
  1. <
    Agent_Home
    >/core/config ディレクトリの IntroscopeAgent.profile ファイルを開きます。
  2. introscope.agent.deep.instrumentation.enabled が true に設定されていることを確認します。これによって、エージェントが高深度可視性コンポーネントをインスツルメントできるようになります。
    • 高深度可視性コンポーネントの自動インスツルメンテーションの有効化/無効化
      スマート インスツルメンテーションを有効化/無効化します。ProbeBuilder ディレクティブ設定を使用せずに高深度可視性コンポーネントを自動的にインスツルメントしてスマート インスツルメンテーションを提供するエージェントの機能を有効化/無効化します。
      名前:
      introscope.agent.deep.instrumentation.enabled
      デフォルト:
      true(有効)
      値:
      • True
      • False
      管理対象アプリケーションの再起動が必要:
      はい
  3. introscope.agent.deep.trace.enabled が true に設定されていることを確認します。これにより、エージェントは高深度可視性コンポーネントを収集し、Enterprise Manager にデータを送信できるようになります。
    • 高深度可視性コンポーネント収集の有効化および無効化
      高深度可視性コンポーネントを収集し、Enterprise Manager にデータを送信するエージェント機能を有効または無効にします。
      名前:
      introscope.agent.deep.trace.enabled
      デフォルト:
      True (有効)
      値:
      • True
      • False
      管理対象アプリケーションの再起動が必要:
      いいえ
      introscope.agent.deep.instrumentation.enabled=true
      かつ
      introscope.agent.deep.trace.enabled=true
      である場合、エージェントは高深度可視性コンポーネントを自動的にインスツルメントします。Introscope は高深度可視性コンポーネントのデータを Enterprise Manager に送信します。
      introscope.agent.deep.instrumentation.enabled=true
      かつ
      introscope.agent.deep.trace.enabled=false
      である場合、エージェントは高深度可視性コンポーネントを自動的にインスツルメントします。しかし、高深度可視性コンポーネント データは Enterprise Manager に送信されることはなく、表示もされません。
      introscope.agent.deep.instrumentation.enabled=false
      かつ introscope.agent.deep.trace.enabled=true である場合、エージェントは高深度可視性コンポーネントをインスツルメントしません。したがって、高深度可視性コンポーネントのデータは検出されず、Enterprise Manager に送られることも、表示されることもありません。
      注:
      introscope.agent.deep.trace.enabled
      プロパティが機能するためには、
      introscope.agent.deep.instrumentation.enabled
      プロパティを有効にする必要があります。
  4. デフォルト値を使用する場合以外は、以下のスマート インスツルメンテーションのプロパティを定義します。
    • インストルメンテーション レベルの設定
      高深度のメソッドを検出するためにエージェントがインスツルメントを行うアプリケーション コードの量を決定します。
      重要:
      レベルを「high」に設定すると、オーバーヘッドが最大になります。
      インスツルメンテーション レベルを変更すると、クラスがバッチで再ロードされます。レベルの変更にかかる時間は、クラスの数、およびバッチ サイズと間隔によって変わります。レベル変更中に別のレベル変更が加えられた場合、最初の変更が完了した後に 2 番目の変更が開始されます。レベルのステータスは、[Current Instrumentation Level]サポータビリティ メトリックで確認します。
      名前:
      introscope.agent.deep.instrumentation.level
      デフォルト:
      Low
      値:
      • Low: アプリケーション リソースへの影響を最小限に留めて、可視性のバランスを取ります。
      • Medium: 可視性の深度を高めます。アプリケーション リソースへの影響はやや大きくなります。
      • High: 可視性を最大にします。中、低の設定よりアプリケーション リソースへの影響は大きくなります。
      管理対象アプリケーションの再起動が必要:
      いいえ
    • インスツルメンテーション レベル変更バッチ サイズでのクラス数の設定
      重要:
      バッチ サイズのデフォルト値は、典型的な実運用環境向けに最適化されています。デフォルトよりも大きい値にすると、トランザクションの負荷が高い環境ではパフォーマンス オーバーヘッドが増大します。
      introscope.agent.deep.instrumentation.level プロパティを変更すると、クラスがバッチで再ロードされます。このプロパティは、バッチごとに再ロードされるクラスの数を指定します。
      名前:
      introscope.agent.deep.instrumentation.level.batch.size
      デフォルト:
      5
      値:
       1 以上の整数
      0 以下の場合は、デフォルト値にリセットされます。
      管理対象アプリケーションの再起動が必要:
      いいえ
      例:
      introscope.agent.deep.instrumentation.level.batch.size=5 
    • インスツルメンテーション レベル変更のバッチ間隔の設定
      introscope.agent.deep.instrumentation.level プロパティを変更すると、クラスがバッチで再ロードされます。このプロパティは、バッチの時間間隔を分単位で指定します。
      名前:
      introscope.agent.deep.instrumentation.level.batch.interval
      デフォルト:
      2
      値:
      1 以上の整数 
      1 未満の場合は、自動的にデフォルト値にリセットされます。
      管理対象アプリケーションの再起動が必要:
      いいえ
      例:
      introscope.agent.deep.instrumentation.level.batch.interval=2 
    • エラー ビューアおよびイベント ビューアでの高深度可視性コンポーネントの表示の有効化/無効化
      エラー スナップショットでの高深度可視性コンポーネントの表示を有効または無効にします。ライブ エラー ビューアと履歴イベント ビューアのスタック ビューには、エラー スナップショットの詳細情報が表示されます。
      名前:
      introscope.agent.deep.errorsnapshot.enable
      デフォルト:
      True (有効)
      値:
      • True
      • False
      管理対象アプリケーションの再起動が必要:
      いいえ
    • エラー ビューアおよびイベント ビューアでの高深度可視性コンポーネントのストールの表示の有効化/無効化
      エラー スナップショットでの高深度可視性コンポーネントのストールの表示を有効または無効にします。ライブ エラー ビューアおよび履歴イベント ビューアのスタック ビューに、ストールの詳細情報が表示されます。
      名前:
      introscope.agent.deep.stallsnapshot.enabled
      デフォルト:
      True (有効)
      値:
      • True
      • False
      管理対象アプリケーションの再起動が必要:
      いいえ
    • エージェントがインスツルメント可能なメソッド数の制限
      エージェントが、PBD インスツルメンテーションを使用せずに自動的にインスツルメント可能なメソッドの数を制限します。
      名前:
      introscope.agent.deep.instrumentation.max.methods
      デフォルト:
      10000
      値:
      1 ~ 10000 の整数
      管理対象アプリケーションの再起動が必要:
      はい
      例:
      introscope.agent.deep.instrumentation.max.methods=10000
    • エージェントが収集できる高深度可視性コンポーネントの数の上限
      エージェントがトランザクション追跡で収集できる高深度可視性コンポーネントの最大数を制限します。
      名前:
      introscope.agent.deep.trace.max.components 
      デフォルト:
      1000
      値:
      1 ~ 1000 の整数
      管理対象アプリケーションの再起動が必要:
      いいえ
      例:
      introscope.agent.deep.trace.max.components=1000
    • 連続する高深度可視性コンポーネント数の上限
      1 つのトランザクション追跡での連続する高深度可視性コンポーネントの最大数を制限します。PBD でインスツルメントされるメソッド間で検出および表示される、高深度可視性コンポーネントの数を設定します。
      名前:
      introscope.agent.deep.trace.max.consecutive.components 
      デフォルト:
      15
      値:
      1 以上の整数
      管理対象アプリケーションの再起動が必要:
      いいえ
      例:
      introscope.agent.deep.trace.max.consecutive.components=15
    • 特定の Java パッケージ プレフィックスの除外
      Introscope がスマート インスツルメンテーションでインスツルメントする優先度を低くする Java パッケージを指定します。
      名前:
      introscope.agent.deep.instrumentation.custom.prefixes
      デフォルト:
      Java
      値:
      有効な Java パッケージ プレフィックス文字で構成される任意の文字列。1 つまたは複数のプレフィクス セグメントを指定できます。複数の文字列を指定する場合は、カンマで区切ります。ワイルドカードは使用できません。
      管理対象アプリケーションの再起動が必要:
      はい
      例:
      introscope.agent.deep.instrumentation.custom.prefixes=java,org.apache
      この例では、Introscope は、Java および org.apache で定義されている API を呼び出すメソッドを、スマート インスツルメンテーションでの優先度が低いとみなします。
  5. 自動トランザクション追跡を設定します。
    • 自動トランザクション追跡の有効化/無効化
      Introscope が、トランザクション追跡を自動的に収集することを有効または無効にします。
      名前:
      introscope.agent.deep.automatic.trace.enabled
      デフォルト:
      True
      値:
      true または false
      管理対象アプリケーションの再起動が必要:
      いいえ
      注:
      このプロパティは、トランザクション追跡のサンプリングには適用されません。
    • 自動トランザクション追跡の数の上限
      Introscope が 1 分間隔ごとに収集する自動トランザクション追跡の数を制限します。
      名前:
      introscope.agent.deep.automatic.trace.clamp
      デフォルト:
      10
      値:
      0 より大きく 10 以下の整数
      0 以下の場合、Introscope は自動トランザクション追跡を収集しません。10 より大きい場合、http プロトコル ヘッダ情報により、自動トランザクション追跡でプロセスにまたがるトランザクションは表示されない場合があります。
      管理対象アプリケーションの再起動が必要:
      いいえ
      例:
      introscope.agent.deep.automatic.trace.clamp=10
      注:
      このプロパティは、トランザクション追跡のサンプリングには適用されません。
    • 自動トランザクション追跡でのプロセスにまたがるサポートの有効化
      注:
      自動トランザクション追跡でプロセスにまたがるトランザクションを表示するには、これらのプロパティも true に設定する必要があります。
        • introscope.agent.deep.trace.enabled
        • introscope.agent.deep.instrumentation.enabled
        • introscope.agent.deep.automatic.trace.enabled
      自動トランザクション追跡でプロセスにまたがるトランザクションのサポートを有効または無効にします。
      名前:
       introscope.agent.deep.automatic.trace.crossprocess.enabled
      デフォルト:
      True (有効)
      値:
      true または false
      管理対象アプリケーションの再起動が必要:
      いいえ
  6. 自動エントリ ポイント検出を設定します。
    1. 必ず introscope.autoprobe.dynamicinstrument.enabled プロパティを true に設定します。この設定により、アプリケーションを再起動することなく、エージェントはエントリ ポイント メトリックをレポートできます。
    2. デフォルト値を使用する場合以外は、以下のエントリ ポイント検出のプロパティを定義します。
      • 自動エントリ ポイント検出の有効化と無効化
        エントリ ポイントを検出するエージェント機能を有効または無効にします。
        注:
         無効にする場合は、/hotdeploy (ある場合)の AutoPersist.pbd ファイルも削除するようにしてください。
        名前:
        introscope.agent.deep.entrypoint.enabled
        デフォルト:
        True (有効)
        値:
        true または false
        管理対象アプリケーションの再起動が必要:
        いいえ
      • 特定の Java パッケージ プレフィックスの除外
        エージェントがエントリ ポイントに対してスキップし、考慮しないクラスの Java パッケージ プレフィックスを指定します。 これらのプレフィックスは、既存のデフォルトまたはカスタムの PBD でスキップされるフラグおよびクラス以外のプレフィックスです。
        名前:
        introscope.agent.deep.entrypoint.skip.pkgs
        デフォルト:
        <blank>
        値:
        有効な Java パッケージ プレフィックス文字で構成される文字列。複数の文字列を指定する場合は、カンマで区切ります。ワイルドカードは使用できません。
        管理対象アプリケーションの再起動が必要:
        はい
        例:
        introscope.agent.deep.entrypoint.skip.pkgs=com.abc
        この例では、エージェントは、プレフィックス com.abc を持ったクラスをすべてスキップします。エージェントはこれらのクラスを可能なエントリ ポイントと見なしません。
      • AutoPersist.pbd 内のエントリ ポイント数の制限
        AutoPersist.pbd で保持できるエントリ ポイントおよび自動バックエンドの最大数を制限します。
        名前:
         introscope.agent.autopersist.instrumentation.count.max 
        デフォルト:
        60
        値:
        0 より大きく 250 以下の整数
        管理対象アプリケーションの再起動が必要:
        はい
        例: 
        introscope.agent.autopersist.instrumentation.count.max=60
        注:
         introscope.agent.deep.entrypoint.count.max プロパティは廃止され、introscope.agent.autopersist.instrumentation.count.max プロパティに置き換えられました。
  7. (オプション)新しい PBD を作成して、エントリ ポイントをフロントエンドに変換します。
  8. 自動バックエンド検出を設定します。
    1. 以下のプロパティが true に設定されていることを確認します。
      • introscope.agent.deep.instrumentation.enabled=true
      • introscope.autoprobe.dynamicinstrument.enabled=true
        この設定により、アプリケーションを再起動することなく、エージェントは自動バックエンド メトリックをレポートできます。
      • introscope.agent.automatic.backend.detection.enabled=true
    2. デフォルト値を使用する場合以外は、以下の自動バックエンド検出のプロパティを定義します。
      • 自動バックエンド検出の有効化と無効化
        バックエンドを自動的に検出するエージェント機能を有効または無効にします。
        注:
         無効にする場合は、/hotdeploy (ある場合)の AutoPersist.pbd ファイルも削除するようにしてください。
        名前:
         introscope.agent.automatic.backend.detection.enabled
        デフォルト:
        True (有効)
        値:
        true または false
        管理対象アプリケーションの再起動が必要:
        いいえ
      • 特定の Java パッケージ プレフィックスの除外
        エージェントが自動バックエンドに対してスキップし、考慮しないクラスの Java パッケージ プレフィックスを指定します。 これらのプレフィックスは、既存のデフォルトまたはカスタムの PBD でスキップされるフラグおよびクラス以外のプレフィックスです。
        名前:
         introscope.agent.automatic.backend.detection.skip.pkgs
        デフォルト:
        <blank>
        値:
        有効な Java パッケージ プレフィックス文字で構成される文字列。複数の文字列を指定する場合は、カンマで区切ります。ワイルドカードは使用できません。
        管理対象アプリケーションの再起動が必要:
        はい
        例:
         introscope.agent.automatic.backend.detection.skip.pkgs=com.abc,com.xyz
        この例では、エージェントは、プレフィックス com.abc および com.xzy を持ったクラスをすべてスキップします。エージェントはこれらのクラスを可能な自動バックエンドと見なしません。
      • AutoPersist.pbd 内の自動バックエンド数の制限
        AutoPersist.pbd で保持できるエントリ ポイントおよび自動バックエンドの最大数を制限します。
        名前:
         introscope.agent.autopersist.instrumentation.count.max 
        デフォルト:
        60
        値:
        0 より大きく 250 以下の整数
        管理対象アプリケーションの再起動が必要:
        はい
        例:
         introscope.agent.autopersist.instrumentation.count.max=60
  9. IntroscopeAgent.profile ファイルを保存して閉じます。
  10. プロパティの変更によって再起動が必要になる場合は、管理対象アプリケーションを再起動します。
スマート インスツルメンテーション プロパティの確認
以下の手順に従います。
  1. トランザクション追跡の実行。
  2. トランザクション追跡セッションで、期待どおりの、または新しい高深度可視性コンポーネントが表示されていることを確認します。
    期待した高深度可視性コンポーネントが表示されていない場合は、
    introscope.agent.deep.instrumentation.level
    およびその他のプロパティの設定を確認します。
  3. トランザクション追跡セッションで、プロセスにまたがるトランザクションが期待どおりに表示されていることを確認します。
    プロセスにまたがるトランザクションが期待どおりに表示されない場合は、以下のアクションを実行します。
    1. IntroscopeAgent.profile で、以下のすべてのプロパティが true に設定されていることを確認します。
      • introscope.agent.deep.trace.enabled
      • introscope.agent.deep.instrumentation.enabled
      • introscope.agent.deep.automatic.trace.enabled
      • introscope.agent.deep.automatic.trace.crossprocess.enabled
    2. エージェント ログのスマート インスツルメンテーションに関するエラーまたは警告メッセージを確認します。
  4. トランザクション追跡セッションで、期待どおりのエントリ ポイントが表示されていることを確認します。
    エージェントは、トランザクションがクライアント ソケット呼び出しを行う場合またはトランザクションにフロントエンドがない場合に、エントリ ポイントを検出します。それ以外の場合には、エージェントはエントリ ポイントを検出せず、AutoPersist.pbd ファイルを作成します。
    期待どおりのエントリ ポイントが表示されない場合は、以下のアクションを実行します。
    1. IntroscopeAgent.profile
      で、以下のすべてのプロパティが true に設定されていることを確認します。
      • introscope.agent.deep.instrumentation.enabled
      • introscope.agent.deep.trace.enabled
      • introscope.agent.deep.entrypoint.enabled
      • introscope.autoprobe.dynamicinstrument.enabled
    2. introscope.autoprobe.directivesFile
      に hotdeploy ディレクトリと適切な場所が含まれていることを確認します。
    3. hotdeploy ディレクトリに 
      AutoPersist.lock
      ファイルがあることを確認します。
      ファイルがない場合は、エージェントの書き込み権限の問題が存在する可能性があります。hotdeploy ディレクトリの権限が正しいことを確認します。
    4. エージェント ログの
      AutoPersist.pbd
      に関するエラーまたは警告メッセージを確認します。
    5. AutoPersist.pbd
      でエントリ ポイントおよびスキップを見つけます。
      エントリ ポイントがない場合は、アプリケーション サーバがより長く、またはより大きな負荷で動作することを可能にします。エージェント ルール エンジンは、エントリ ポイントがインスツルメント化され保持されることが適切であると見なされるまで、トランザクションを繰り返し評価します。
      AutoPersist.pbd に追跡ディレクティブが含まれている場合、エージェントはエントリ ポイントをレポートします。
      AutoPersist.pbd
      にスキップのみが含まれている場合、エージェントはエントリ ポイントをレポートしません。
  5. トランザクション追跡セッションで、期待どおりの自動バックエンドが表示されていることを確認します。
    エージェントは、2 つのアクションが発生すると、自動バックエンドを検出します。エージェントが現在のコール スタックでバックエンドを発見していない場合、ソケットはクライアントとして接続を行います。
    。それ以外の場合、エージェントは自動バックエンドを検出せず、AutoPersist.pbd ファイルを作成します。
    期待どおりの自動バックエンドが表示されない場合は、以下のアクションを実行します。
    1. IntroscopeAgent.profile
      で、以下のすべてのプロパティが true に設定されていることを確認します。
      • introscope.agent.deep.instrumentation.enabled
      • introscope.agent.deep.trace.enabled
      • introscope.agent.automatic.backend.detection.enabled
      • introscope.autoprobe.dynamicinstrument.enabled
    2. introscope.autoprobe.directivesFile
      に hotdeploy ディレクトリと適切な場所が含まれていることを確認します。
    3. hotdeploy ディレクトリに 
      AutoPersist.lock
      ファイルがあることを確認します。
      ファイルがない場合は、エージェントの書き込み権限の問題が存在する可能性があります。hotdeploy ディレクトリの権限が正しいことを確認します。
    4. エージェント ログの
      AutoPersist.pbd
      に関するエラーまたは警告メッセージを確認します。
    5. AutoPersist.pbd
      で自動バックエンドおよびスキップを見つけます。
      自動バックエンドがない場合は、アプリケーション サーバがより長く、またはより大きな負荷で動作することを可能にします。エージェント ルール エンジンは、自動バックエンドがインスツルメント化され保持されることが適切であると見なされるまで、トランザクションを繰り返し評価します。
      AutoPersist.pbd に追跡ディレクティブが含まれている場合、エージェントは自動バックエンドをレポートします。
      AutoPersist.pbd
      にスキップのみが含まれている場合、エージェントは自動バックエンドをレポートしません。