アプリケーションにエージェントをインストールすると、Cloud Monitor 2.0 がアプリケーションのモニターを開始します。[例外分析] ページで、例外名、インターフェイス名、ホストで例外をフィルターおよび分析して、コードを最適化します。
シナリオ
ARMS は、例外が try-catch ブロックの外部に伝播する場合にのみ例外を記録します。ARMS エージェントが、相互に呼び出す public void methodA と public void methodB をインストルメント化していると仮定します。
シナリオ 1: 両方のメソッドが例外をキャッチします。
public int methodA() { try { return methodB(); } catch (Throwable e) { e.printStackTrace(); return 0; } } public int methodB() { try { return 1 / 0; } catch (Throwable e) { e.printStackTrace(); return 0; } }結果: 例外は
try-catchブロック内でキャッチおよび処理されるため、ARMS は例外を記録しません。シナリオ 2: methodA は例外をキャッチしますが、methodB は例外を返します。
public int methodA() { try { return methodB(); } catch (Throwable e) { e.printStackTrace(); return 0; } } public int methodB() { return 1 / 0; }結果: ARMS は 1 つの
java.lang.ArithmeticException例外 (methodBでキャッチされない) を記録します。シナリオ 3: 両方のメソッドが例外を返します。
public int methodA() { return methodB(); } public int methodB() { return 1 / 0; }結果: ARMS は 2 つの
java.lang.ArithmeticException例外を記録します。シナリオ 4: methodA は methodB の例外をキャッチし、RuntimeException として再スローします。
public static int methodA() { try { return methodB(); } catch (Throwable e) { throw new RuntimeException(e); } } public static int methodB() { return 1 / 0; }結果: ARMS は 1 つの
java.lang.ArithmeticException例外 (methodBでキャッチされない) と 1 つのjava.lang.RuntimeException例外 (methodAによってスローされる) を記録します。
前提条件
アプリケーションは Cloud Monitor 2.0 によってモニターされます。
Playground で試す
Alibaba Cloud Playground は、Cloud Monitor 2.0 の主な特徴を体験できるデモ環境を提供します。
Playground デモ環境にアクセスします。デフォルトでは、
o11y-demo-cn-hangzhouワークスペースにログインしています。左側のナビゲーションウィンドウで、を選択します。
コンソールで表示
Cloud Monitor 2.0 コンソールにログインし、ワークスペースを選択します。左側のナビゲーションウィンドウで、を選択します。
[アプリケーション] ページで、アプリケーションをクリックします。次に、を選択します。
[クイックフィルター] セクションで、例外名、インターフェイス名、アプリケーション、インスタンスで例外の数と例外リストをフィルターします。
トレンドチャートセクションでは、指定した期間に発生した例外の数を表示します。チャートの各バーは例外名で積み上げられます。
例外リストには、異常なインターフェイスの名前、例外の数、割合、例外の概要などの情報が表示されます。
[アクション] 列では、次の操作を実行できます。
[概要] をクリックして、表示されるパネルで例外数のトレンド、インターフェイスとインスタンスごとの例外分布、例外スタックなどの情報を表示します。
[トレース] をクリックして、トレースの詳細を表示します。