エラーおよびストールの検出と分析

ストールは、しきい値で指定された時間内に完了していないトランザクション(トランザクションのコンポーネント)です。ストールしたトランザクションまたはコンポーネントの場所を特定した後に以下の操作を実行できます。
apmdevops104jp
ストール
は、しきい値で指定された時間内に完了していないトランザクション(トランザクションのコンポーネント)です。ストールしたトランザクションまたはコンポーネントの場所を特定した後に以下の操作を実行できます。
3
エラーおよびストールを分析する方法
このシナリオを使用するケース
APM ダッシュボードに表示されたりレポートで通知されるようなアプリケーション パフォーマンスの問題が発生している場合にこのシナリオを使用します。
前提条件
始める前に、問題の個所を特定します。詳細については、「アプリケーションの問題の特定」を参照してください。
エージェントはトランザクションに関するデータを収集し、このデータを Enterprise Manager に送信して処理および WebView での表示を行います。このデータにはアプリケーション エラーとストールに関する情報が含まれます。
エラー
エラーは JVM または HTTP のエラー コードによってレポートされた例外です。たとえば、以下の通りです。
  • HTTP エラー ステータス -- たとえば 404、Page Not Found など
  • SQL 例外
  • Java 例外
ストール
ストールは、しきい値で指定された時間内に完了していないトランザクション(トランザクションのコンポーネント)です。
以下のタスクを実行できます。
  • 深刻なエラーおよびストールが発生した場合は、その原因を検出して問題の切り分けを行い、関連するイベントを監視します。
  • エラーの頻度および性質を特定します。
  • 問題の根本原因を特定します。
以下の図は、エラーやストールを分析してアプリケーション パフォーマンスの問題の根本原因を特定する方法を説明しています。
9.8 Detect and Analyze Errors and Stalls
以下の手順に従います。
  1. メトリック ブラウザでのエラーおよびストールの検出。
  2. 高深度可視性追跡コンポーネントを理解します。
  3. ビューアを使用したエラーやストールの切り分け。
  4. (オプション)トランザクション追跡でのエラーの確認。
メトリック ブラウザでのエラーおよびストールの検出
深刻なエラーおよびストールが発生した場合は、その原因を検出して問題の切り分けを行うことができます。[メトリック ブラウザ]タブの詳細情報を表示して、エージェントおよびコンポーネントを監視できます。
注:
CA APM では、エラーおよびストール情報の表示が 15 秒ごとに更新されます。
以下の手順に従います。
  1. APM Team Center で、
    [WebView]
    をクリックします。
  2. [Investigator]
    -
    [メトリック ブラウザ]
    をクリックします。
  3. 監視するエージェントまたはコンポーネントまで移動し、[
    エラー
    ]タブを選択します。
    [エラー]タブには、JVM または .NET CLR について 1 つのエージェントがレポートしたデータが表示されます。そのエージェントまたはコンポーネントについて何らかのエラーまたはストールがレポートされている場合は、エラーまたはストールのリストが表示されます。
    • ステータス バーで、エージェントの場所、エラーのタイム スタンプおよび期間を確認します。
  4. 追跡
    ]タブを選択します。
    エラーは、赤地の円の中に白い X 印のあるアイコンで示されています。
  5. 列の見出しをクリックして、その列の内容によって行を並べ替えます。新しいエラーまたはストールが発生すると、並べ替え順にしたがって表示されます。
高深度可視性追跡コンポーネント
スマート インスツルメンテーションが有効な場合、エージェントはトランザクション コンポーネントに関する詳細情報をメソッド レベルまで自動的に検出および収集します。エージェントは、ProbeBuilder ディレクティブ(PBD)を使用せずに、高深度可視性コンポーネントの検出および自動インスツルメントを実行します。ストールしたトランザクションに表示される高深度可視性コンポーネントには、クラス名、メソッド名、および期間のみが含まれます。要件および環境に応じて、高深度追跡の可視性の深度と範囲を設定できます。たとえば、エージェントが自動的に検出およびインスツルメントを行うアプリケーションコードの量を、少量、中量、大量のいずれにするかなどを設定します。詳細については、「スマート インスツルメンテーションの設定」を参照してください。
: スマート インスツルメンテーションは、Java エージェントでのみ使用可能であり、.NET エージェントでは使用できません。
ビューアを使用したエラーやストールの切り分け。
ライブおよび履歴エラーやストールが複数のエージェントで発生するに従って、これらを確認します。
Enterprise Manager により監視されているすべてのエージェントで発生するエラーを調査する場合は、Live Error および Historical Event ビューアを使用します。エラーと特定のアプリケーションの間に相関があるかどうかを判断できます。たとえば、あるアプリケーションのバックエンド コンポーネントで発生したエラーが、いつ、別のコンポーネントのフロントエンドでエラーを引き起こしているかを確認することができます。
以下の手順に従います。
  1. WebView Live Error Viewer で複数のエージェントに関するライブ情報を確認するには、以下のようにします。
    1. ツール
      ] - [
      ライブ エラー ビューア
      ]をクリックします。
    2. 現在発生しているエラーのリストをライブ エラー テーブルで確認します。情報は 15 秒ごとに更新されます。各列には、以下のような情報が表示されます。
      • Timestamp
        ルート コンポーネントの呼び出し開始時刻(システム クロックに基づく)を表示します。
      • 説明
        エラーを発生させたコンポーネントのタイプを識別します。コンポーネント リソース名の最初のセグメントに適用されます。標準の J2EE Blamed メトリックの場合は、Servlets、JSP、EJB、JNDI などが例として挙げられます。.NET コンポーネントの場合の例としては、Messaging および WebMail があります。
      • エラー メッセージ
        キャプチャされた完全一致のエラー メッセージを表示します。
    3. 列の見出しをクリックして、その列の内容によって行を並べ替えます。新しいエラーが発生すると、これらのエラーは並べ替え順にしたがって表示されます。
    4. テーブル内の行を選択してエラーに関するより詳細な情報を表示します。
      ステータス バーには、イベントの数および現在の日付と時刻が表示されます。ステータス バーの下に展開されるツリーには、呼び出しパスのどこでエラーが発生したかが示されます。展開されたツリーは、エラー スナップショットと呼ばれます。エラー メッセージは赤で表示されます。そのエラーがストールである場合、エラー メッセージは「Stalled Transaction」です。
  2. WebView で履歴情報を参照する方法。
    1. ツール
      ] - [
      履歴イベント ビューア
      ]をクリックします。
    2. クエリ
      ]ペインでクエリを入力し、[
      実行
      ]をクリックします。
      たとえば、すべてのエラーを確認する場合は、以下のように入力します。
      type:errorsnapshot
    3. イベント リスト
      ]内に検索結果のリストが表示されます。
    4. テーブル内の行を選択し、エラーに関するより詳細な情報を表示します。
      イベント タイプに応じて、下部ペインに[スタック ビュー]、または[サマリ ビュー]、[ツリー ビュー]および[追跡ビュー]が展開されます。
  3. エラー スナップショットを検査して、問題の根本的原因を究明します。
    Introscope は、メソッドのインスツルメントに PBD を使用した場合に限り、エラーを検出します。Introscope がエラーを検出すると、エラー スナップショットには、PBD によってインスツルメントされたコンポーネントとは別に、高深度可視性追跡コンポーネントも表示されます。エラー スナップショットのツリーの分岐をたどってメソッドを調べることにより、エラー例外の原因を特定できます。
    例 1
    エラー スナップショット ツリーにメソッド A、B、C、D および E が表示されます。メソッド A および E は、PBD を使用してインスツルメントされます。メソッド B、C および D は、高深度追跡の可視性を使用してインスツルメントされます。
    メソッド E は、キャッチされなかったエラー例外をスローします。エラー例外は、メソッドD、C、B、A とツリーをさかのぼりますが、どのメソッドでも例外は処理されません。エラー スナップショットは次のツリーのように表示されます。
    Methods 01
    例 2
    エラー スナップショット ツリーにメソッド A、B、C、D および E が表示されます。メソッド A および B は、PBD を使用してインスツルメントされます。メソッド C、D、および E は、高深度追跡の可視性を使用してインスツルメントされます。
    メソッド E は、キャッチされなかったエラー例外をスローします。エラー例外は、メソッドD、C、B、A とツリーをさかのぼりますが、どのメソッドでも例外は処理されません。エラー スナップショットは次のツリーのように表示されます。
    Methods 02
メトリック ブラウザでのエラーの検出
エージェントはトランザクションに関するデータを収集し、このデータを Enterprise Manager に送信して処理および Data Viewer での表示を行います。このデータには、アプリケーションエラーに関する情報が含まれています。エラーが発生した場合は、その原因を検出して問題の切り分けを行うことができます。[メトリック ブラウザ]タブの詳細情報を表示して、エージェントおよびコンポーネントを監視できます。
注:
CA APM では、エラーおよびストール情報の表示が 15 秒ごとに更新されます。
以下の手順に従います。
  1. APM Team Center で、
    [WebView]
    をクリックします。
  2. [Investigator]
    -
    [メトリック ブラウザ]
    をクリックします。
  3. 監視するエージェントまたはコンポーネントに移動します。
  4. [間隔ごとのエラー数]メトリックを探します。その値を調べます。
    値が 0 の場合、現在エラーは発生していません。
    値が 0 より大きい場合、手順 4 に進み、[追跡]タブを選択します。
  5. 追跡
    ]タブを選択します。
  6. 列の見出しをクリックして、その列の内容によって行を並べ替えます。新しいエラーが発生すると、これらのエラーは並べ替え順にしたがって表示されます。エラーは、赤地の円の中に白い X 印のあるアイコンで示されています。
  7. Introscope が自動的に収集したトランザクション追跡でエラーを確認します。
    自動トランザクション追跡が表示されていない場合は、自動的に収集したトランザクション追跡を参照してください。
  8. エラー
    ]タブを選択します。
  9. [エラー]タブのエラー スナップショットで、その呼び出しパスおよびパラメータを含む、エラーの詳細を確認します。
    1. [エラー]タブには、1 つのエージェントによって JVM または .NET の CLR からレポートされたデータが表示されます。そのエージェントまたはコンポーネントに対してエラーがレポートされている場合は、エラーのリストが表示されます。列の見出しをクリックして、その列の内容によって行を並べ替えます。新しいエラーが発生すると、これらのエラーは並べ替え順にしたがって表示されます。
    2. ステータス バーで、エージェントの場所、エラーのタイムスタンプおよび期間を確認します。ライブ エラー ビューアおよび履歴イベント ビューアを使用して問題を切り分けます。
トランザクション追跡でのエラーの確認
トランザクション追跡では、高深度可視性コンポーネントも含めて、エラー情報を参照できます。トランザクション追跡の詳細については、「トランザクション追跡の収集および分析」を参照してください。
トランザクション追跡を収集してエラー情報を確認するには 2 つの方法があります。
  • トランザクション追跡を手動で実行する
  • スマート インスツルメンテーションが有効な場合、エラーが発生すると Introscope がトランザクション追跡を自動的に収集します。
    エラーによって自動トランザクション追跡がトリガされると、以下の情報が[コンポーネントの詳細]に表示されます。
    - 例外をスローしたコンポーネント、およびそのコンポーネントのプロパティ。
    - トランザクション追跡内の最初のコンポーネントでは、[Auto Trace Trigger Criteria]プロパティが「エラー」として表示されます。
以下の手順に従います。
  1. APM Team Center で、
    [WebView]
    をクリックします。
  2. [ツール]
    -
    [トランザクション追跡]
    をクリックします。
  3. テーブル内のトランザクション追跡を選択します。
  4. 下部ペインで、
    [追跡ビュー]
    タブをクリックします。
    注:
    Live モードでは、[追跡]タブに、過去 20 分のトランザクション追跡イベントがリストされます。20 分より前のトランザクション追跡イベントは、ライブ モードでは表示されません。
  5. 詳細情報を表示するエラーをリストから 1 つ選択します。
    トランザクションはタイムラインに棒の形で表示されます。
  6. 右向きの青い三角形
    を選択して、グラフィカルに表示されたトランザクションを展開し、トランザクションの個々のコンポーネントを表示します。
    以下の図では、エラーの発生しているトランザクション(ピンク色で表示)が、展開された状態で、個々のコンポーネントとその相対的な継続時間と共に表示されています。
    2237409.png
    稲妻のアイコンは高深度可視性追跡コンポーネントを示しています。これは、ProbeBuilder ディレクティブ(PBD)を使用せずに自動的に検出とインスツルメントが行われます。高深度可視性追跡コンポーネントに関する詳細については、「トランザクション追跡の収集および分析」を参照してください。
    注:
    スマート インスツルメンテーションは、Java エージェントでのみ使用可能であり、.NET エージェントでは使用できません。標準のトランザクション追跡コンポーネント(稲妻アイコンなし)は、PBD を使用してインスツルメントされます。
  7. アプリケーションのパフォーマンスに関する問題の根本原因を特定します。
    利用可能なタブで識別情報を使用し、問題に関する特定の詳細情報を収集します。次のフィールドを確認します: タイム スタンプ、継続時間、説明、ユーザ ID (問題と関連付けられているものがある場合)、エラー メッセージ、コール時間およびパス。
    以下を行うことができます。
    • 列を並べ替えて、応答時間が最も長いかエラーが最も多い呼び出しまたはメソッドを見つける。
    • [検索]タブを使用して結果をフィルタする。
    • エラー メッセージおよびその他の情報を使用して、問題をより詳細に理解する。
    ユーザがその問題の原因と思われるものを特定した後、オペレーション スタッフはアプリケーションのコードの変更を要求して、問題を解決することができます。