インターネットアプリケーションの最も一般的な問題の1つであるWebページエラーの原因を分析することは困難です。Application Real-Time Monitoring Service (ARMS) エージェントをアプリケーションにインストールすると、ARMSエージェントはアプリケーションコードを変更することなく、例外を自動的にキャプチャ、収集、カウント、および追跡できます。ARMSエージェントを使用すると、アプリケーションのすべての例外を正確に特定し、オンライン診断を実行できます。
問題の説明
Webページエラー、特に5xxエラーの形式のエラーは、インターネットアプリケーションの最も一般的な問題の1つです。5xxエラーは通常、サーバー側で発生します。サーバー側は最も複雑なビジネスロジックを持ち、ネットワークリクエストリンク全体の中で最もエラーが発生しやすい部分です。サーバー側のエラーは、原因分析にとって最も困難であることが証明されています。O&Mエンジニアまたは開発エンジニアは、多くの場合、サーバーにログオンしてログを表示し、原因を見つける必要があります。
ロジックがそれほど複雑ではなく、稼働時間が短いアプリケーションの場合、サーバーにログオンしてログを表示する操作で、これらの問題のほとんどを解決できます。ただし、この従来の方法は、次のシナリオでは役に立たないことがよくあります。
分散アプリケーションクラスターで特定の種類のエラーが発生する時間と頻度を知りたい場合。
システムが長時間実行されていますが、残りの例外は気にしません。昨日と比較して今日の新しい例外、およびシステムのリリース後とシステムのリリース前の期間と比較して新しい例外のみを知りたい場合。
例外に関連付けられたWebリクエストと関連パラメーターを表示する場合。
カスタマーサービスが、ユーザーが注文できない注文の番号を提供して、失敗の原因を分析する場合。
解決策
ARMSエージェントをアプリケーションにインストールします。ARMSエージェントは、アプリケーションコードを変更することなく、例外を自動的にキャプチャ、収集、カウント、および追跡できます。ARMSエージェントは、さまざまなエラーの明確な全体像を示します。
手順1:ARMSエージェントをインストールする
ARMSエージェントをインストールした後にのみ、アプリケーションをあらゆる面で監視できます。ARMSエージェントをインストールするには、次のいずれかの方法を選択します。
JavaアプリケーションにARMSエージェントをインストールする方法の詳細については、ARMSエージェントを手動でインストールするを参照してください。
Container Service KubernetesクラスターのアプリケーションにARMSエージェントをインストールする方法の詳細については、ACKにデプロイされたJavaアプリケーションのARMSエージェントを自動的にインストールするを参照してください。
オープンソースKubernetesクラスターのアプリケーションにARMSエージェントをインストールする方法の詳細については、オープンソースKubernetesクラスターにARMSエージェントを自動的にインストールするを参照してください。
手順2:アプリケーション例外の統計情報を表示する
インストールされたARMSエージェントは、選択した期間内のアプリケーションの平均応答時間とリクエスト数、エラー、リアルタイムインスタンス、フルガベージコレクション(GC)イベント、低速SQLクエリ、例外、および低速呼び出しを収集して表示します。また、ARMSエージェントは、これらのメトリックが前日比および前週比でどのように変化するかを示します。アプリケーション例外の統計情報を表示するには、次の手順を実行します。
ARMSコンソールにログオンします。
左側のナビゲーションペインで、 を選択します。
上部のナビゲーションバーで、アプリケーションがデプロイされているリージョンを選択します。
アプリケーションページで、アプリケーションの名前をクリックします。
アプリケーションの概要ページで、概要タブをクリックします。[概要]タブには、例外の総数と、前日および前週からの変化が表示されます。
例外の種類統計分析概要タブの下部にあるセクションのまでスクロールします。ここでは、各タイプの例外が発生した回数を表示できます。
左側のナビゲーションペインで、アプリケーションの詳細をクリックします。[アプリケーションの詳細]ページで、右側のペインの例外分析タブをクリックして、例外統計チャート、エラー数、および例外スタックを表示します。
手順3:例外の原因を診断する
アプリケーション例外の統計情報は、例外の原因を特定するには不十分です。ログの例外スタックには、呼び出しのコードスニペットが含まれています。ただし、この呼び出しの完全なアップストリームおよびダウンストリーム情報とリクエストパラメーターは含まれていません。ARMSエージェントのバイトコード拡張テクノロジーを使用すると、例外の完全なアップストリームおよびダウンストリーム呼び出しスナップショットをキャプチャでき、パフォーマンスへの影響はわずかです。その後、例外の具体的な原因を特定できます。
例外分析タブで、診断する例外のタイプを見つけ、インターフェイスのスナップショットアクション列のをクリックします。
インターフェーススナップショットタブに、この例外タイプに関連する呼び出しトレース情報が表示されます。
インターフェーススナップショットタブで、問題の呼び出しのTraceIdをクリックします。
説明問題の呼び出しのトレースを見つける方法の詳細については、トレースクエリを参照してください。
表示されたページで、問題の呼び出しに関するトレース情報を表示します。メソッドスタック列で、虫眼鏡アイコンをクリックして、呼び出されるメソッドスタックを表示します。このようにして、この問題の呼び出しに関するコンテキスト情報を取得できます。
この時点で、例外の原因が見つかります。これは、後続のコードの最適化に効果的に役立ちます。また、インターフェース呼び出しタブに戻って、リスト内の他の問題の呼び出しを表示し、関連する例外を1つずつ解決することもできます。
次のステップ
例外が発生した後の受動的な診断を防ぐために、ARMSのアラート機能を使用して、特定のAPIまたはすべてのAPIのアラートを作成することもできます。これにより、例外が発生した直後にO&Mチームに通知が送信されます。アラートの作成方法の詳細については、アプリケーション監視アラートルールを参照してください。