You need to enable JavaScript to run this app.
文档中心
应用性能监控全链路版

应用性能监控全链路版

复制全文
下载 pdf
Harmony SDK 接入
验证数据上报
复制全文
下载 pdf
验证数据上报
您可以根据业务需求,按照以下模块说明,检查对应模块是否接入成功。​
前提条件​
完成SDK上报配置​
  • 配置设备白名单​
  • SDK上报配置页面默认配置的采样率较低,在SDK接入测试阶段请配置DID白名单,确保当前设备所有性能数据都采样命中,才能上报到平台查看这些数据。具体请参见创建白名单和如何获取DID?。​
  • 配置各模块采样率​
  • 崩溃是100%上报的,不受采样率控制。除了崩溃,其他监控数据需要在SDK上报配置页面配置采样上报,默认情况下采样命中后才会上报。​
  • 例如,验证启动监控数据前,请在SDK上报配置页面打开总开关,并将用户体验的启动采样率配置为100%。验证完成后,再修改为适合的采样率。具体请参见创建SDK上报配置。​
JS崩溃​
  1. 添加以下代码,等待App发生崩溃。​
  • ​
    // 建议测试时关闭appRecovery// appRecovery.enableAppRecovery(appRecovery.RestartFlag.NO_RESTART)​
    throw new Error("Monitor Exception");​
    ​
  1. 重新启动App,SDK会立即上报上次启动期间发生的崩溃,然后在控制台查看上报成功的日志。​
Native崩溃​
  1. 添加以下代码,等待App发生崩溃。​
  • ​
    // import { process } from '@kit.ArkTS';​
    process.kill(11, process.pid)​
    ​
  1. 重新启动App,SDK会立即上报上次启动期间发生的崩溃,然后在控制台查看上报成功的日志。​
AppFreeze​
  1. 添加以下代码,等待App发生闪退,可适当触摸屏幕。​
  • ​
    // import { systemDateTime } from '@kit.BasicServicesKit';​
    let start = systemDateTime.getTime();​
    while (start + 10000systemDateTime.getTime()) {}​
    ​
  1. 重新启动App,SDK会上报上次启动期间发生的崩溃,然后在控制台查看上报成功的日志。​
  1. 如果发现没有上报,适当等待后再次重新启动App。​
自定义错误​
  1. 修改SDK上报配置,打开自定义错误开关。​
  1. 测试设备添加自定义错误功能白名单。​
  1. 添加以下代码,主动上报自定义异常,在平台的"自定义错误"查看数据。​
  • ​
    const error = new Error();​
    APMPlus.reportError(error, "test");​
    ​
  1. 验证通过后,调整SDK上报配置中自定义错误的采样率,线上采样上报自定义错误数据。​
启动​
  1. 初始化SDK确认开启了启动监控。​
  • ​
    let builder = new APMPlusBuilder("AppID", "AppToken");​
    builder.startMonitor = true;//开启启动监控​
    ​
  1. 确认采样命中,确认平台配置了白名单,或者SDK上报配置里的启动配置采样100%。​
  1. 数据采集后,会在平台的启动分析查看到数据。​
  1. 启动App后,会采集启动耗时上报到平台,默认只采集启动总耗时。​
  • 起始时间:用户单击icon的时间。​
  • 截止时间:展示第一个页面的时间。​
启动自定义打点​
自定义启动节点​
启动监控支持自定义打点,方法需要配对出现。​
​
LaunchTrace.startSpan("initApm");​
LaunchTrace.endSpan("initApm");​
​
添加上述代码后,可以在启动分析的启动节点耗时中查看自定义打点的耗时。​
​Image​​
自定义启动结束点​
默认启动监控通过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​
​
事件分析​
  1. 平台注册事件。在事件管理页面新增事件并配置采样,事件采样命中才会上报。​
  • ​Image​​
  1. 端上自定义事件打点。​
  • ​
    //维度值 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);​
    ​
  1. 数据查看。通过以上自定义事件打点后,可以在平台查看事件信息。​
  • 客户端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网络请求进行监控。​
  1. 初始化时打开网络监控。​
  • ​
    builder.netMonitor = true;​
    APMPlus.start(builder);​
    ​
  1. 通过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);​
    });​
    ​
  1. 完成采样配置。确认采样命中,查看平台SDK上报配置的网络监控采样率配置,或者在测试阶段配置了白名单。​
  1. 过滤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}​
    ​
自定义日志​
为解决单点问题排查,支持业务自定义日志打印,可以通过回捞、用户反馈按钮主动调用接口上报、配置随崩溃上报的方式上报日志,辅助排查单点问题。​
初始化和打点​
  1. 初始化打开自定义日志​
​
builder.logRecovery = true;//可选,是否开启自定义Vlog打点能力​
APMPlus.start(builder);​
​
  1. 通过Vlog类进行自定义日志打点​
​
VLog.v(String tag, String msg);​
VLog.d(String tag, String msg);​
VLog.i(String tag, String msg);​
VLog.w(String tag, String msg);​
VLog.e(String tag, String msg);​
​
上报和查看方式​
回捞​
用户出现问题需要日志排查时,通过回捞端上通过自定义日志Vlog打印的日志来排查问题。​
通过日志回捞页面新建任务,输入DID或UID回捞指定用户的自定义日志排查问题。​
DID是业务通过:APMPlus.setDeviceId("device_id"); 方法设置。​
UID是业务通过:APMPlus.setUserId("user_id"); 方法设置。​
主动上报​
业务也可以主动调用接口进行日志上报,注意:业务自己通过代码策略控制上报采样和频率,自定义文件较大,每上报一个文件会消耗200事件量。​
​
//上报当前时间前一小时的自定义日志​
APMPlusAgent.tryUploadAlog(systemDateTime.getTime(false) - 60 * 60 * 1000, systemDateTime.getTime(false), {​
onCallback(result: boolean, ret: JSON | null) {​
}​
})​
​
上报后可以通过自定义日志页面的自定义日志查询,根据DID或User ID查询日志文件。​
随崩溃上报​
  1. 在SDK上报配置页面崩溃分析里,配置是否上传自定义日志。​
  1. 在崩溃详情页面的自定义日志下,查看通过Vlog类打印的日志。​
性能数据上报策略​
启动和事件等性能数据记录后不会立即上报,每经过60s,聚合触发一次上报。JS崩溃、Native崩溃、AppFreeze是App重启后上报。​
​
最近更新时间:2026.02.10 19:56:27
这个页面对您有帮助吗?
有用
有用
无用
无用