トランザクション追跡オプションの設定

内容
apmdevops96jp
内容
このセクションでは、デフォルトのトランザクション追跡の動作および関連する設定オプションについて説明します。
自動トランザクション追跡の動作の制御
自動トランザクション追跡によって、明示的にトランザクション追跡を実行しなくても、問題になりそうなトランザクションのタイプの履歴分析が可能になります。 Introscope では、以下の 2 種類の自動トランザクション追跡が提供されます。
  • URL グループ化に基づいて、デフォルトで有効になるトランザクション追跡サンプリング。
  • URL グループ化にかかわらず、追跡情報を収集する設定可能な自動追跡サンプリング。
トランザクション追跡のコンポーネント クランプ
Introscope では、追跡のサイズを制限するクランプが設定されます。 デフォルトは 5000 コンポーネントです。 この制限に達すると、警告がログに出力され、追跡が停止します。
サーブレットが数百のオブジェクト インタラクションおよびバックエンドの SQL コールを実行する場合など、予想されるコンポーネント数を超えるコンポーネント トランザクションをクランプすることができます。 クランプがない場合、Transaction Tracer は、これを 1 つのトランザクションと見なし、無限に実行し続けます。 特定の極限状態にあるときに適所でクランプが実施されない場合、JVM は追跡を完了する前にメモリ不足に陥ってしまいます。
トランザクションをクランプするためのプロパティは、IntroscopeAgent.profile ファイル内にあります。
introscope.agent.transactiontrace.componentCountClamp
=5000
クランプされたコンポーネントを生成している追跡は、アスタリスクを付けて示されます。 これらの追跡の表示の詳細については、「
CA APM Workstation ユーザ ガイド
」を参照してください。
重要
: トランザクション追跡のコンポーネント クランプ サイズが大きくなると、トランザクション追跡に必要なメモリも増える可能性があります。 JVM の最大ヒープ サイズを適切に調整する必要が生じる場合があります。調整しないと、Enterprise Manager のメモリが不足する可能性があります。
 
トランザクション追跡サンプリング プロパティの設定
自動追跡サンプリングを設定する際、指定した間隔の間に追跡するトランザクションの数を指定します。
注:
これらのプロパティも Enterprise Manager のプロパティ ファイルに保存されています。
sampling.perinterval
および
sampling.interval
プロパティのデフォルトを変更する前に、サンプリング レートが上がったために Enterprise Manager 内での負荷が増大する可能性を考慮してください。 Enterprise Manager は、自身に接続しているすべてのエージェントに対して、この設定をプッシュします。 また、エージェント内でこれらのプロパティを設定することもできます。 エージェント内でこれらのプロパティを設定すると、Enterprise Manager によって個別のエージェント向けに行われた設定が上書きされます。
自動追跡サンプリングを設定するには、以下のプロパティを変更します。
  • introscope.agent.transactiontracer.sampling.enabled
    トランザクション追跡サンプリングを有効にする必要があるかどうかを指定します。 false に設定すると、トランザクション追跡のサンプリングが無効になります。
    デフォルト:
    true
  • introscope.agent.transactiontracer.sampling.perinterval.count
    指定した間隔の間に追跡するトランザクションの数を指定します。
    デフォルト:
    1
  • introscope.agent.transactiontracer.sampling.interval.seconds
    指定したトランザクション数を追跡する時間の長さを指定します。
    デフォルト:
    2 分
エージェントのヒープのサイジング
Agent は、収集したデータの保存に Java のヒープ メモリを使用します。 エージェントの GC ヒープ使用量については、[GC Heap]の概要から参照することができます。
ヒープ使用量に関する説明を以下に示します。
  • ヒープ使用率が高い場合は、エージェントのインストール時にヒープの割り当てを増やす必要があります。
  • 監視中のアプリケーションに非常に複雑なトランザクションや、時間のかかるトランザクションが見られる場合は、トランザクション追跡のサンプリングに多くのヒープ メモリが必要となります。
注:
GC ヒープの使用状況の詳細については、「
CA APM Workstation ユーザ ガイド
」を参照してください。 高性能の Introscope 環境を運用している場合は、エージェントの適切な JVM ヒープ設定に関して CA プロフェッショナル サービスにお問い合わせください。
プロセスにまたがるトランザクション追跡
Introscope Java エージェントを使用して、WebLogic Server または WebSphere で JVM の境界を超えてトランザクションを追跡できます。 環境は、同じベンダーのアプリケーション サーバの互換バージョンで構成されている必要があります。 プロセスにまたがるトランザクション追跡は、サーブレットから EJB などの同期トランザクション、および非同期トランザクションでサポートされています。
重要:
プロセスにまたがるトランザクション追跡は、Introscope 9.0 以降のエージェントを使用する場合にのみ利用可能です。
トランザクション追跡データ コレクションの拡張
ほかのデータ(サーブレット呼び出しや JSP 呼び出しのユーザ ID データ)やその他のトランザクション追跡データ(HTTP 要求ヘッダ、要求パラメータ、セッション属性など)も取得するように、Introscope Transaction Tracer を設定することができます。 これらのデータを取得するには、IntroscopeAgent.profile に条件を定義する必要があります。
ユーザ ID データについて
サーブレット呼び出しや JSP 呼び出しのユーザ ID を取得できるように Java エージェントを設定するには、管理対象アプリケーションでユーザ ID の特定に使用されている方法についての情報を入手する必要があります。 この情報は管理対象アプリケーションを開発したアプリケーション設計者から取得できる可能性があります。
Introscope Transaction Tracer は、以下の手段のいずれかを使用してユーザ ID を保存している管理対象アプリケーションからであれば、ユーザ ID を取得することができます。
  • HttpServletRequest.getRemoteUser()
  • HttpServletRequest.getHeader (String key)
  • HttpSession.getValue (String key): 返されるオブジェクトは、ユーザ ID を表すストリングか、ユーザ ID を返す toString() を備えたオブジェクトです。
ユーザ ID データの収集
ユーザ ID を識別できるように Java エージェントを設定できます。
以下の手順に従います。
  1. IntroscopeAgent.profile
    で、トランザクション追跡のプロパティを見つけます。これは、「Transaction Tracer Configuration」という見出しの下にあります。
  2. 管理対象アプリケーションでユーザ ID の保存に使用されているメソッドに対応するプロパティを設定します。
    注:
    1 つまたは 1 組のプロパティのみコメント化を解除してください。そうしないと、不適切なプロパティが使用されるおそれがあります。
  3. HttpServletRequest.getRemoteUser() が使用されている場合は、以下のプロパティのコメント化を解除します。
    introscope.agent.transactiontracer.userid.method=HttpServletRequest.getRemoteUser
  4. HttpServletRequest.getHeader (String key) が使用されている場合は、以下の 1 対のプロパティのコメント化を解除し、2 番目のプロパティにキー ストリングを定義します。
    introscope.agent.transactiontracer.userid.method=HttpServletRequest.getHeader
    introscope.agent.transactiontracer.userid.key=<application defined key string>
  5. HttpSession.getValue (String key) が使用されている場合は、以下の 1 対のプロパティのコメント化を解除し、2 番目のプロパティにキー ストリングを定義します。
    introscope.agent.transactiontracer.userid.method=HttpSession.getValue
    introscope.agent.transactiontracer.userid.key=<application defined key string>
サーブレット要求データについて
Introscope を使用して、ユーザ定義のパラメータに一致するトランザクション追跡データを収集することが可能です。 たとえば、HTTP 要求ヘッダにユーザ エージェント(User-Agent)情報を含むトランザクションのトランザクション追跡データを、エージェントで収集するように設定することができます。
Introscope では、以下のサーブレット要求情報を記録できます。
  • 要求ヘッダ
  • 要求パラメータ
  • セッション属性
サーブレット要求データの収集
HTTP 要求ヘッダやパラメータなどのサーブレット要求データを記録できます。
以下の手順に従います。
  1. IntroscopeAgent.profile
    で、トランザクション追跡のプロパティを見つけます。これは、「Transaction Tracer Configuration」という見出しの下にあります。
  2. トランザクション追跡データの収集対象にする HTTP 要求ヘッダを指定する場合は、以下のプロパティのコメント化を解除し、追跡する HTTP 要求ヘッダをカンマ区切りのリストの形式で指定します。
    introscope.agent.transactiontracer.parameter.httprequest.headers=User-Agent
  3. トランザクション追跡データの収集対象にする HTTP 要求パラメータを指定する場合は、以下のプロパティのコメント化を解除し、追跡する HTTP 要求パラメータをカンマ区切りのリストの形式で指定します。
    introscope.agent.transactiontracer.parameter.httprequest.parameters=parameter1,parameter2
  4. データ追跡の対象にする HTTP セッション属性を指定する場合は、以下のプロパティのコメント化を解除し、追跡する HTTP セッション属性を以下の例のようにカンマ区切りのリストの形式で指定します。
    introscope.agent.transactiontracer.parameter.httpsession.attributes=cartID,deptID
  5. 管理対象アプリケーションを再起動します。
セッション ID の収集の設定
introscope.agent.transactiontracer.parameter.capture.sessionid プロパティは、Transaction Tracer データ内のセッション ID の収集を有効または無効にします。 デフォルトでは、このプロパティは有効で、Transaction Tracer データ内に記録されます。 このプロパティを無効にすると、フィルタにデータを使用できません。
以下の手順に従います。
  1. IntroscopeAgent.profile ファイルをテキスト エディタで開きます。
    以下の行を探します。
    # Uncomment the following property to disable sessionid capture in TransactionTracer data.
    # By default, it is enabled and recorded in the TT Data.
     
    # introscope.agent.transactiontracer.parameter.capture.sessionid=true
  2. 指示に従って行をコメント化またはコメント化解除することで、プロパティを有効または無効にします。
    # introscope.agent.transactiontracer.parameter.capture.sessionid=true
  3. ファイルを保存して閉じ、エージェントを再起動します。
    エージェント設定では、セッション ID の収集について指定した値が使用されます。
コンポーネント ストール レポートの設定
Application Performance Management のストールは、定義された期間、プローブされるコンポーネントから応答がない状態を表します。 デフォルトでは、APM Introscope エージェントはこの状態を検出し、ストール メトリックをレポートします。
エージェントがストールを確認する度に、メソッド スタックの最上位にあるインスツルメントされたコンポーネントがすべて確認されます。 コンポーネントがストールした場合、ストール メトリックおよびストール スナップショットが作成されます。 ストール メトリックは、ダウンストリーム監視をサブスクライブする各コンポーネントに対しても作成されます。
ストール メトリックは、メソッド スタックの最上位のインスツルメントされたコンポーネントに対してまず作成されます。 これらのメトリックは、
introscope.agent.stalls.thresholdseconds
値より長くかかるコンポーネントに対して作成されます。
ダウンストリーム サブスクライバ コンポーネントのストール
ダウンストリーム監視をサブスクライブするコンポーネントが、ストールしているダウンストリーム コンポーネントを呼び出すとストールが発生します。
デフォルトでは、以下のコンポーネントがダウンストリーム ストール監視をサブスクライブします。
  • FrontendTracer でプローブされるコンポーネント
  • BackendTracer でプローブされるコンポーネント
  • WebServiceBlamepointTracer@Servicelevel でプローブされるコンポーネント
  • WebServiceBlamepointTracer@Opertationlevel でプローブされるコンポーネント
フロントエンド コンポーネントは、ストールしているバックエンド コンポーネントを呼び出す Web サービスを呼び出します。
フロントエンド--> Web サービス --> バックエンド
デフォルトではそれらすべてがダウンストリーム監視をサブスクライブするため、ストール メトリックは、バックエンド、Web サービス、およびフロントエンド コンポーネントに対して作成されます。
アップストリーム継承コンポーネントのストール
ストール チェッカは、まずコンポーネント スタックの最上位のメンバがストールしているかどうかを確認します。 最上位のコンポーネントがストールしていない場合、ストール チェッカはストールしている親コンポーネントを探します。 親がストールしている場合、スタック内の該当コンポーネントおよびアップストリームの各親に対してストール メトリックが作成されます。
コンポーネント M1() が複数のコンポーネント M2() を呼び出し、それぞれに数秒しかかからない場合でも、ストール メトリックが M1() に対してレポートされる場合があります。
例:
ストールしきい値は、15 秒に設定されています。 メソッド M1() は、メソッド M2() を 100 回のループで呼び出します。 応答にはわずか 2 秒しかかからないので、M2() はストールしません。 ただし、M1() は結果的にストールします。
イベントとしてのストールのキャプチャの無効化
Introscope では、デフォルトで、トランザクション ストールをトランザクション イベント データベース内のイベントとしてキャプチャし、検出したイベントからストール メトリックを生成します。 ストール メトリックは、トランザクションの最初と最後のメソッドで生成されます。 ユーザは、ストール イベントと関連付けられているメトリックを Workstation の履歴イベント ビューアで表示できます。
注:
生成されたストール メトリックは、いつでも利用できますが、ストール イベントを表示できるのは、Introscope Error Detector をインストールしている場合のみです。 ストールは、通常のエラーとして保存され、エラー TypeView で表示できます。または、「type:errorsnapshot」のクエリを実行することによって履歴クエリ ビューアで表示できます。
イベントとしてのストールのキャプチャを無効にするには、ストールのしきい値を変更するか、またはエージェントでストールがチェックされる頻度を変更します。以下のプロパティの設定は実行時に変更することができ、変更は自動的に反映されます。
  • introscope.agent.stalls.thresholdseconds
    トランザクションがストールしていると見なされる応答時間しきい値の最小値を指定します。 Stall Count メトリックの精度を確保するために、ストールのしきい値を 15 秒以上に設定してください。 この設定により、Enterprise Manager が収集サイクルを完了する時間を確保できます。
    デフォルト:
    30 秒
  • introscope.agent.stalls.resolutionseconds
    エージェントがストールをチェックする頻度を指定します。 Stall Count メトリックの精度を確保するために、ストールの精度を 10 秒未満に設定しないでください。 この設定により、Enterprise Manager が収集サイクルを完了する時間を確保できます。
    デフォルト:
    10 秒