您可以根据业务需求,按照以下模块说明,检查对应模块是否接入成功。
添加以下代码,等待App发生崩溃。
throw new RuntimeException("Monitor Exception"); // 执行就崩,如果应用启动后8秒内崩溃, 则判定为启动崩溃进行上报
重新启动App,SDK会立即上报上次启动期间发生的崩溃,然后在控制台查看上报成功的日志。
在主线程调用以下函数,等待App发生卡顿。
private void testSeriousBlock() { try { Thread.sleep(3500); } catch (Exception e){ } }
严重卡顿把sleep时间修改为6000毫秒。
注意
示例代码运行一次即可,运行多次可能会发生ANR,此时如果您只接入了性能组件是无法查看ANR日志的,如果您想查看ANR日志需要同时接入崩溃组件。
初始化SDK时,在主线程阻塞,App会自动监控到卡顿,2分钟内会上报到服务器。
初始化SDK时,打开启动分析和页面响应的开关,App启动一段时间SDK会自动上报启动分析、页面响应的数据。
初始化SDK时,打开配置功能的开关,用户进入页面后滑动一段时间SDK会自动上报流畅性数据和丢帧数据。
初始化SDK时,打开配置功能开关,设置debug测试模式。
builder.debugMode(true); builder.memoryMonitor(true);
以上代码可以模拟发生以下两种场景:
OOMMaker.createOOM();
。OOMMaker.createReachTop(80);
。初始化SDK时,配置插桩ApmPlugin的okHttp3Switch,打开网络监控开关。
当App使用okhttp3进行访问时会自动监控到并上报到服务器。插桩支持的okhttp版本最低是3.10.0
。当前okhttp3对外暴露了上报网络监控数据的接口。
其他网络库监控需要自己采集网络监控数据,然后再通过网络监控数据接口上报网络数据,才能在平台查看监控数据。具体上报接口和上报数据结构请联系技术支持获取。
网络监控日志记录后不会立即上报,每经过60s,触发一次上报。
初始化SDK时,打开电量开关。
App启动后,端上采样命中会自动采集上报电量数据。
在事件管理页面新增事件并配置采样,事件采样命中才会上报。
HashMap<String, String> dimension = new HashMap<>(); //维度值 dimension.put("key1", "value1"); dimension.put("key2", "value2"); HashMap<String, Double> metric = new HashMap<>(); //指标值 metric.put("metric1", (double) 10); metric.put("metric2", 8.8); ApmInsightAgent.monitorEvent("event1", dimension, metric);
/** * 事件上报 * * @param serviceName 事件名 * @param dimension 可枚举Key-Value,代表维度。key代表维度名称,value代表维度值,平台会自动计算key值下的value的百分占比和上报量 * @param metric 不可枚举的Key-Value,代表指标。key代表指标名称,value代表指标值,平台会自动计算value的平均值和上报量 */ public static void monitorEvent(final String serviceName, final Map<String, String> dimension, final Map<String, Double> metric) { } /** * 事件上报 * * @param serviceName 事件名 * @param dimension 可枚举Key-Value标识维度 * @param metric 不可枚举的Key-Value标识指标 * @param extraJson 辅助分析事件的数据,只可以在单点原始日志查看 * */ public static void monitorEvent(final String serviceName, final Map<String, String> dimension, final Map<String, Double> metric, final JSONObject extraJson) { }
通过以上事件上报的接口配置事件采样后,可以在平台查看事件信息。
平台查看的事件示例:
//代表event1 采样没有命中 2021-04-11 21:19:01.019 13535-13587/com.example.apm.insight.demo D/ApmInsight: Receive:EventData event1 simple:false //代表event2 采样命中 2021-04-11 21:19:01.916 13535-13587/com.example.apm.insight.demo D/ApmInsight: Receive:EventData event102 simple:true
事件日志记录后不会立即上报,每经过60s,触发一次上报。
初始化SDK时,打开CPU监控,CPU指标会自动采集后上报。
CPU异常可以在端上模拟异常场景,然后等待端上检测异常上报后,在平台查看异常数据。
添加以下代码,模拟CPU异常:
for (int i = 0; i < 6; i++) { new Thread(new Runnable() { @Override public void run() { while (true) { Math.acos(Math.cos(java.lang.Double.valueOf(9999999))); } } },"cpu-"+i).start(); }
打开debug开关后,在Logcat日志中过滤ApmInsight,可以查看以下日志:
//CPU异常数据 2021-12-30 15:29:29.512 26285-26887/com.example.apm.insight.demo D/ApmInsight: Receive:ExceptionCpuData //CPU指标 2021-12-30 15:29:29.512 26285-26887/com.example.apm.insight.demo D/ApmInsight: Receive: ProcessCpuDat
测试阶段建议将磁盘相关配置项的采样率都配置为100%,磁盘相关配置项的阈值都配置为1,最大上报异常文件个数使用默认值20,端上设置 builder.debugMode(true)
。
App一次启动只会上报1次磁盘数据。为了降低对性能的影响,SDK默认为App在后台时才会采集上报一次磁盘数据,按照测试阶段建议配置后,您可以设置debug模式在前台也可以采集上报磁盘数据。 冷启动后过滤ApmInsight会看到Receive:DiskData
的日志,代表磁盘监控数据上报成功,可以在磁盘异常页面查看数据。
初始化SDK时,打开流量开关。App启动后,端上采样命中会自动采集上报流量数据。流量指标10分钟采集一次。流量异常需要端上10分钟流量消耗超过平台配置的阈值。
添加以下代码,模拟流量异常:
//十分钟流量 2023-01-12 21:10:49.615 5472-5576/com.example.apm.insight.demo D/ApmInsight: TrafficData10 //流量异常 2023-01-12 21:10:49.615 5472-5576/com.example.apm.insight.demo D/ApmInsight: TrafficDataException