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

スマート インスツルメンテーションでは、ユーザが監視しているアプリケーション内で何が起こっているかに関する有益な詳細が提供されます。 スマート インスツルメンテーションが有効になっている場合、エージェントは ProbeBuilder ディレクティブ(PBD)を使用せずに、高深度可視性コンポーネントのその他のメソッドの検出および自動インスツルメントを実行します。 Introscope は、スマート インスツルメンテーションを使用してトランザクション追跡を自動的に収集します。
apmdevops98jp
スマート インスツルメンテーションでは、ユーザが監視しているアプリケーション内で何が起こっているかに関する有益な詳細が提供されます。 スマート インスツルメンテーションが有効になっている場合、エージェントは ProbeBuilder ディレクティブ(PBD)を使用せずに、高深度可視性コンポーネントのその他のメソッドの検出および自動インスツルメントを実行します。 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 に設定されていることを確認します。これによって、エージェントが高深度可視性コンポーネントをインスツルメントできるようになります。
    • 高深度可視性コンポーネントの自動インスツルメンテーションの有効化/無効化
      スマート インスツルメンテーションを有効化/無効化します。 PBD 設定を使用せずに、高深度可視性コンポーネントを自動的にインスツルメントしてスマート インスツルメンテーションを提供する、エージェントの機能を有効化/無効化します。
      名前:
      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 を呼び出すメソッドを、スマート インスツルメンテーションでの優先度が低いとみなします。
      • 自動トランザクション追跡の有効化/無効化
        Introscope が、トランザクション追跡を自動的に収集することを有効または無効にします。
        名前:
        introscope.agent.deep.automatic.trace.enabled
        デフォルト:
        True
        値:
        true または false
        管理対象アプリケーションの再起動が必要:
        いいえ
        注:
        このプロパティは、トランザクション追跡のサンプリングには適用されません。
      • 自動トランザクション追跡の数の上限
        Introscope が 1 分間隔ごとに収集する自動トランザクション追跡の数を制限します。
        名前:
        introscope.agent.deep.automatic.trace.clamp
        デフォルト:
        10
        値:
        1 以上の整数。 0 以下の場合、Introscope は自動トランザクション追跡を収集しません。
        管理対象アプリケーションの再起動が必要:
        いいえ
        例:
        introscope.agent.deep.automatic.trace.clamp=10
        注:
        このプロパティは、トランザクション追跡のサンプリングには適用されません。
  5. 自動エントリ ポイント検出を設定します。
    1. 必ず introscope.autoprobe.dynamicinstrument.enabled プロパティを true に設定します。 この設定により、アプリケーションの再起動なしで、エージェントがエントリ ポイント メトリックをレポートできます。
    2. デフォルト値を使用する場合以外は、以下のエントリ ポイント検出のプロパティを定義します。
      • 自動エントリ ポイント検出の有効化
        エントリ ポイントを検出するエージェント機能を有効または無効にします。
        名前:
        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.deep.entrypoint.count.max 
        デフォルト:
        100
        値:
        0 より大きく 250 以下の整数
        管理対象アプリケーションの再起動が必要:
        いいえ
        例:
        introscope.agent.deep.entrypoint.count.max=100
      • Nishant and Anand: New step for entry points. OK?
  6. IntroscopeAgent.profile ファイルを保存して閉じます。
  7. プロパティの変更によって再起動が必要になる場合は、管理対象アプリケーションを再起動します。
スマート インスツルメンテーションの確認
以下の手順に従います。
  1. トランザクション追跡の実行。
  2. トランザクション追跡セッションで、期待どおりの、または新しい高深度可視性コンポーネントが表示されていることを確認します。
    期待した高深度可視性コンポーネントが表示されていない場合は、introscope.agent.deep.instrumentation.level およびその他のプロパティの設定を確認します。
  3. トランザクション追跡セッションで、期待どおりのエントリ ポイントが表示されていることを確認します。エージェントは、トランザクションがクライアント ソケット呼び出しを行う場合またはトランザクションにフロント エンドがない場合に、エントリ ポイントを検出します。 それ以外の場合には、エージェントはエントリ ポイントを検出せず、AutoPersist.pbd ファイルを作成します。
    期待どおりのエントリ ポイントが表示されない場合は、以下のアクションを実行します。 
    1. IntroscopeAgent.profile で以下のプロパティを確認します。
      • introscope.agent.deep.instrumentation.enabled が true に設定されている。
      • introscope.agent.deep.trace.enabled が true に設定されている。
      • introscope.agent.deep.entrypoint.enabled が true に設定されている。
      • introscope.autoprobe.dynamicinstrument.enabled が true に設定されている。
      • introscope.autoprobe.directivesFile に hotdeploy ディレクトリと適切な場所が含まれている。
    2. hotdeploy ディレクトリの AutoPersist.lock ファイルを確認します。 
      ファイルがない場合は、エージェントの書き込み権限の問題が存在する可能性があります。 hotdeploy ディレクトリの権限が正しいことを確認します。
    3. エージェント ログの AutoPersist.pbd に関するエラーまたは警告メッセージを確認します。
    4. AutoPersist.pbd でエントリ ポイントおよびスキップを確認します。
      エントリ ポイントがない場合は、アプリケーション サーバがより長く、またはより大きな負荷で動作することを可能にします。 エージェント ルール エンジンは、エントリ ポイントがインスツルメント化され保持されることが適切であると見なされるまで、トランザクションを繰り返し評価します。 
      AutoPersist.pbd に追跡ディレクティブが含まれている場合、エージェントはエントリ ポイントをレポートします。 AutoPersist.pbd にスキップのみが含まれている場合、エージェントはエントリ ポイントをレポートしません。