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

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