异常分析

为应用安装探针后,云监控2.0即可开始监控应用,您可以在异常分析页面按照异常名称、接口名称、主机对异常次数、异常列表进行筛选分析,优化产生异常的代码。

什么是异常

ARMS的异常分析功能中,默认情况下,ARMS仅可以采集到被埋点方法抛出的异常,但在用户的实际业务中,可能一次接口调用记录不到异常或者记录一个或多个异常。

例如,假设ARMS探针当前对public void methodA 和public void methodB两个方法进行了埋点,且两个方法互相有调用关系,则在下述场景下,ARMS记录的异常会有所差异。

  • 场景1:methodA、methodB 各自捕获异常并打印。

    这种场景下,ARMS监控不到任何异常。

        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;
            }
        }
  • 场景2:methodA捕获异常并打印,methodB抛出异常。

    这种场景下,ARMS可以监控到一个 java.lang.ArithmeticException

        public int methodA() {
            try {
                return methodB();
            } catch (Throwable e) {
                e.printStackTrace();
                return 0;
            }
        }
    
        public int methodB() {
            return 1 / 0;
        }
  • 场景3:methodA、methodB各自抛出异常。

    这种场景下,ARMS可以监控到两个 java.lang.ArithmeticException

        public int methodA() {    
            return methodB();
        }
    
        public int methodB() {
            return 1 / 0;
        }
  • 场景4:methodA封装并抛出异常、methodB抛出异常。

    这种场景下,ARMS可以监控到一个 java.lang.ArithmeticException和一个java.lang.RuntimeException

        public static int methodA() {
            try {
                return methodB();
            } catch (Throwable e) {
                throw new RuntimeException(e);
            }
        }
    
        public static int methodB() {
            return 1 / 0;
        }

前提条件

已将应用接入云监控2.0

功能体验

阿里云Playground提供了云监控2.0主要功能的演示环境,便于您快速了解及体验云监控2.0。

  1. 请访问 Playground Demo 演示环境,默认进入工作空间:o11y-demo-cn-hangzhou

  2. 在左侧导航栏选择应用中心 > 运维监控 > 应用监控

查看异常分析

  1. 登录云监控2.0控制台,选择目标工作空间,在左侧导航栏选择应用中心 > 运维监控 > 应用监控

  2. 应用列表页面单击目标应用名称,然后在顶部导航栏选择场景化分析 > 异常分析

    • 在快捷筛选区域,您可以按异常名称接口名称实例对异常次数、异常列表进行筛选过滤。

    • 在趋势图区域,您可以查看应用在指定时间范围抛出该异常的次数,按照异常做堆叠展示。

    • 在异常列表区域,您可以查看异常接口的名称、异常次数、占比、异常堆栈等信息。

      在异常列表,您可以执行以下操作:

      • 单击操作列的概览,可以查看该异常的异常数趋势、接口和实例维度的异常分布、异常堆栈等概览信息。

        image.png

      • 单击操作列的调用链,可以查看该调用的链路详情