您可以根据业务需求,按照以下模块说明,检查对应模块是否接入成功。
添加以下代码,等待App发生崩溃。
// 建议测试时关闭appRecovery// appRecovery.enableAppRecovery(appRecovery.RestartFlag.NO_RESTART) throw new Error("Monitor Exception");
重新启动App,SDK会立即上报上次启动期间发生的崩溃,然后在控制台查看上报成功的日志。
添加以下代码,等待App发生崩溃。
// import { process } from '@kit.ArkTS'; process.kill(11, process.pid)
重新启动App,SDK会立即上报上次启动期间发生的崩溃,然后在控制台查看上报成功的日志。
添加以下代码,等待App发生闪退,可适当触摸屏幕。
// import { systemDateTime } from '@kit.BasicServicesKit'; let start = systemDateTime.getTime(); while (start + 10000systemDateTime.getTime()) {}
重新启动App,SDK会上报上次启动期间发生的崩溃,然后在控制台查看上报成功的日志。
如果发现没有上报,适当等待后再次重新启动App。
初始化SDK确认开启了启动监控。
let builder = new APMPlusBuilder("AppID", "AppToken"); builder.startMonitor = true;//开启启动监控
确认采样命中,确认平台配置了白名单,或者SDK上报配置里的启动配置采样100%。
数据采集后,会在平台的启动分析
查看到数据。
启动App后,会采集启动耗时上报到平台,默认只采集启动总耗时。
启动监控支持自定义打点,方法需要配对出现。
LaunchTrace.startSpan("initApm"); LaunchTrace.endSpan("initApm");
添加上述代码后,可以在启动分析的启动节点耗时中查看自定义打点的耗时。
默认启动监控通过HiAppEvent的启动数据监控启动结束点,如下方法支持自定义启动结束点。
//初始化设置启动监控自定义上报,表示使用reportLaunchEnd()方法定义启动结束点。需要尽早调用,例如在AbilityStage 的 onCreate 调用。 LaunchTrace.customLaunchEnd(true); //启动自定义监控结束时间点,代表启动的结束点 LaunchTrace.reportLaunchEnd();
启动数据采集依赖HiAppEvent的启动数据回调,系统回调可能存在延迟导致启动数据上报延迟。HiAppEvent系统回调日志会显示APP_LAUNCH
,示例如下所示:
06-17 19:29:43.114 3788-3788 A0001B/APM com.apmpl...ony.demo I Start --> event: APP_LAUNCH
平台注册事件。在事件管理页面新增事件并配置采样,事件采样命中才会上报。
端上自定义事件打点。
//维度值 string let category: object = new Object(); category['version'] = "2.0"; //指标值 number let metric: object = new Object(); metric['key'] = 2 //额外数据 string。不进行聚合,可单点查询从原始日志查看数据 let extra: object = new Object(); extra['apm_extra'] = 'extra info' //事件名称 APMPlusAgent.monitorEvent("harmony", category, metric, extra);
数据查看。通过以上自定义事件打点后,可以在平台查看事件信息。
客户端debug模式下过滤日志A0001B/APM
,看到如下事件采样命中的日志,2分钟后即可在平台查看事件数据。
// 事件 harmony 采样命中sample true,采样没命中sample false 06-14 18:21:36.625 62396-62396 A0001B/APM com.examp...lication D Event --> harmony sample true
网络监控支持对import http from '@ohos.net.http'
的request
网络请求进行监控。
初始化时打开网络监控。
builder.netMonitor = true; APMPlus.start(builder);
通过HttpMonitor设置网络监控。
let request = http.createHttp(); let httpMonitor: HttpMonitor = new HttpMonitor(url, options); request.request(url, options, (error: Error, response: http.HttpResponse) => { httpMonitor.setResponse(error, response); });
完成采样配置。确认采样命中,查看平台SDK上报配置的网络监控采样率配置,或者在测试阶段配置了白名单。
过滤001B
,可以查看到如下日志。2分钟后即可在平台网络分析的HTTP模块查看到网络监控数据。
//接收到网络监控数据:receive:network 10-11 11:37:21.654 35003-35003 A0001B/com.byt...hpem.demo/APM com.byted...pem.demo D CommonDataHandler --> receive:network //网络监控数据命中采样:sample true data:network 10-11 11:37:22.816 35003-35003 A0001B/com.byt...hpem.demo/APM com.byted...pem.demo D CommonDataHandler --> sample true data:network //网络监控数据push聚合成功:"service":"network" 10-11 11:37:22.817 35003-35003 A0001B/com.byt...hpem.demo/APM com.byted...pem.demo I PersistentBuffer --> push success: totalCount= 1,totalBytes=720, logItem= {"service":"network","log_type":"performance_monitor","uri":"https://sdfadfsbd/settings/gets","request_log":"{\"dns\":{},\"socket\":{},\"response\":{\"code\":0,\"sent_bytes\":239,\"via_proxy\":false,\"network_accessed\":true},\"timing\":{\"request\":{\"duration\":40,\"start_time\":1728617841582,\"response_recv_time\":1728617841622},\"detailed_duration\":{\"ttfb\":0,\"dns\":0,\"tcp\":0,\"ssl\":0,\"send\":0,\"header_recv\":0,\"body_recv\":0}},\"base\":{\"url\":\"https://sdfadfsbd/settings/gets\",\"method\":\"POST\"},\"error\":{\"error_code\":2300006,\"error_msg\":\"Couldn't resolve host name\"},\"other\":{\"libcore\":\"NetworkKit\",\"version\":\"1.0.0\",\"is_main_process\":true}}","data_type":2,"is_sample":1}
启动和事件等性能数据记录后不会立即上报,每经过60s,聚合触发一次上报。JS崩溃、Native崩溃、AppFreeze是App重启后上报。