监控端 | 功能描述 | 个人信息采集类型与字段 | 收集目的 |
Android 端 | 识别移动端应用的终端用户的设备异常与性能数据 | 设备信息:系统时区、运行线程数、CPU 信息(频率、型号、架构)、移动设备国家编码(MCC)、移动设备网络编码(MNC);Android ID、设备品牌、操作系统 api 版本、电池电量、网络流量、设备 abi、ROM; 应用信息:应用版本、应用程序包名称、进程启动时间、崩溃时间、崩溃线程名、活动过的页面名称、当前进程所有线程堆栈、应用服务日志信息、应用文件名称、应用文件大小、磁盘大小;fd 列表; 系统和网络识别信息:用户 ID、运营商信息、网络访问模式。 | 通过自动化的程序和算法进行设备的识别、获取设备状态(在线、离线、所处网络环境)、进行设备数统计以及单设备问题调试。 |
iOS 端 | 识别移动端应用的终端用户的设备异常与性能数据 | 设备信息:设备标识符、设备型号、操作系统、系统时区、屏幕分辨率、磁盘使用情况、内存使用情况、运行线程数、CPU 信息(频率、型号、架构)、移动设备国家编码(MCC)、移动设备网络编码(MNC)、设备 dpi;越狱状态、IDFV(identifier for vendor); 应用信息:应用版本、应用程序包名称、进程启动时间、崩溃时间、崩溃线程名、活动过的页面名称、当前进程所有线程堆栈、应用服务日志信息、应用文件名称、应用文件大小、磁盘大小;应用内语言、应用发布渠道; 系统和网络识别信息:用户 ID、运营商信息、网络访问模式。 | |
Harmony 端 | 识别移动端应用的终端用户的设备异常与性能数据 | 设备信息:设备型号、操作系统、系统时区、屏幕分辨率、磁盘使用情况、内存使用情况、运行线程数、CPU 信息(频率、型号、架构)、移动设备国家编码(MCC)、移动设备网络编码(MNC)、设备 dpi;设备品牌、操作系统 api 版本、user agent、电池电量、网络流量、设备 abi、ROM; 应用信息:应用版本、应用程序包名称、进程启动时间、崩溃时间、崩溃线程名、活动过的页面名称、当前进程所有线程堆栈、应用服务日志信息、应用文件名称、应用文件大小、磁盘大小;fd 列表; 系统和网络识别信息:用户 ID、运营商信息、网络访问模式。 | |
小程序 Pro 小程序端监控付费版 | 小程序异常、性能、网络信息查看与分析 | 设备信息:设备品牌、设备型号、操作系统、操作系统 api 版本、系统语言、系统时区、屏幕密度、屏幕分辨率; 应用信息:应用版本; 系统或网络识别信息:移动网络码(运营商信息)、移动设备国家编码(MCC)、移动设备网络编码(MNC)、网络访问模式(WIFI 状态) | 小程序异常、性能、网络信息查看与分析 |
小程序端 小程序端监控免费版 | 小程序基础监控 | 设备信息:设备品牌、设备型号、操作系统、操作系统 api 版本、系统时区、屏幕分辨率、user agent、网络流量; 应用信息:应用版本、应用程序包名称; 系统或网络识别信息:用户 ID、localstorage、session 数据、运营商信息; | 小程序基础监控 |
Web 端 Web 端监控服务 | web 崩溃信息查看,内存性能监控,网络异常监控 | 设备信息:设备标识符、设备品牌、设备型号、操作系统、操作系统 api 版本、系统时区、屏幕分辨率、user agent、网络流量; 应用信息:应用版本、应用程序包名称; 系统或网络识别信息:用户 ID、localstorage、session 数据、运营商信息。 | web崩溃信息查看,内存性能监控,网络异常监控 |
OS 端 OS 端监控服务 | OS 崩溃信息查看,内核重启,系统/服务/应用崩溃分析 | 设备信息:设备 MAC 地址、硬件序列号、设备品牌、设备型号、操作系统、操作系统 api 版本、屏幕分辨率、屏幕密度、CPU 信息(频率、型号、架构)、磁盘使用情况、内存使用情况; 系统或网络识别信息:移动网络码;网络访问模式; 应用信息:应用版本、应用程序包名、系统权限设置; 个人位置信息:系统国家/区域信息; | OS崩溃信息查看,内核重启,系统/服务/应用崩溃分析 |
PC 端 PC 端监控服务 | PC 崩溃、自定义事件上报及分析,支持 Wins/Mac | 设备信息:操作系统、操作系统版本、设备标识符 应用信息:SDK 版本、日志类型、崩溃事件、崩溃进程、build_id、崩溃场景、场景 | PC崩溃、自定义事件上报及分析,支持Wins/Mac |
端 | 功能描述 | 个人信息采集类型与字段 | 收集目的 |
Android 端 | 用户唯一标识符 | 设备信息:设备型号、操作系统、屏幕分辨率、磁盘使用情况、内存使用情况、OAID、GAID | UV 计算、数据查询过滤 |
小程序 Pro | | 系统或网络识别信息:用户 ID | |
PC 端 | | 系统或网络识别信息:用户 ID、localstorage、session 数据、运营商信息 | |
| | 应用信息:应用版本、应用小版本 | |
端 | 权限名称 | 权限功能说明 | 目的 |
Harmony端 | Harmony 端 ohos.permission.INTERNET | 网络访问 | 用于崩溃与性能问题的分析 |
| Harmony 端 ohos.permission.GET_NETWORK_INFO | 网络状态 | |
| Harmony 端 ohos.permission.GET_WIFI_INFO | Wifi 状态 | |
端 | 权限 | 说明 | 收集目的与时机 |
Android端 | Android 端 READ_EXTERNAL_STORAGE | 读取外置存储器 | 需要读取磁盘监控相关数据时,用户同意开启权限。 |
| Android 端 WRITE_EXTERNAL_STORAGE | 写入外置存储器 | 需要保存临时数据时,用户同意开启权限。 |
功能 | 初始化方式 | 说明 |
崩溃相关功能 |
MonitorCrash.Config config = MonitorCrash.Config.app({{AppId}}) .token({{AppToken}})// 设置鉴权token,可从平台应用信息处获取,token错误无法上报数据 // .versionCode(1)// 可选,默认取PackageInfo中的versionCode // .versionName("1.0")// 可选,默认取PackageInfo中的versionName // .channel("google play")// 可选,设置App的下载渠道,可以在平台进行筛选。例如,谷歌应用商店渠道可以设置“google play”。 // .url("www.xxx.com")// 默认不需要,私有化部署才配置上报地址 //可选,可以设置自定义did,不设置会使用内部默认的 // .dynamicParams(new MonitorCrash.Config.IDynamicParams() { // @Override // public String getDid() {//返回空会使用内部默认的did。 // return null; // } // // @Override // public String getUserId() {//可选。用户的唯一标识,支持用户自定义UserId把平台数据和自己用户关联起来。内部每次使用会回调getUserId()函数,返回可以定义为变量,用户登录有UserId时对变量进行赋值。 // return null; // } // }) //可选,添加业务自定义数据,在崩溃详情页->现场数据展示 // .customData(crashType -> { // HashMap<String, String> map = new HashMap<>(); // map.put("app_custom", "app_value"); // return map; // }) .exitType(ExitType.EXCEPTION) // 可选,上报应用退出原因,EXCEPTION会过滤USER_REQUEST类型 .enableApmPlusLog(true) // 可选,是否将崩溃信息等写入APMPlus日志,默认值为false // .crashProtect(true) //可选,是否开启崩溃防护,默认值为false // .enableOptimizer(true) //可选,是否开启崩溃优化方案,默认值为false .autoStart(false) // 可选,是否在初始化时自动开启监控,默认值为true(不调用该方法初始化时自动开启监控) // .debugMode(true) // 可选,线下使用的日志开关,线上不要调用或设置为false // 可选,添加pv事件的自定义tag,可以用来筛选崩溃率计算的分母数据 //.pageViewTags(<<Map<String, String>>>) .build(); MonitorCrash monitorCrash = MonitorCrash.init(ApplicationContext, config);
注意 请在用户同意隐私政策后,再调用方法收集数据。 // 启动监控,当初始化时autoStart传入false设置为初始化时不自动开启监控,需要在合适的位置调用start方法开启监控;如果初始化时未设置autoStart参数或者设置为true,将自动开启监控,不需要调用start方法。 if (monitorCrash != null) { monitorCrash.start(); } |
|
性能相关功能 |
注意 请在主线程中添加初始化性能相关功能的代码。 //必须放到Application的onCreate里面,会注册监听生命周期,不涉及数据采集和隐私合规问题 ApmInsight.getInstance().init(application); //初始化自定日志,配置自定义日志最大占用磁盘,内部一般配置20,代表最大20M磁盘占用。1.4.1版本开始存在这个api VLog.init(this,20);
注意 请在用户同意隐私政策后,再调用方法收集数据。 //在同意隐私合规后调用 ApmInsightInitConfig.Builder builder = ApmInsightInitConfig.builder(); //设置分配的appid builder.aid({{app_id}}); //设置分配的AppToken builder.token({{AppToken}}); //是否开启卡顿功能 builder.blockDetect(true); //是否开启严重卡顿功能 builder.seriousBlockDetect(true); //是否开启流畅性和丢帧 builder.fpsMonitor(true); //控制是否打开WebView监控 builder.enableHybridMonitor(true); //控制是否打开内存监控 builder.memoryMonitor(true); //控制是否打开电量监控 builder.batteryMonitor(true); //控制是否打开CPU监控 builder.cpuMonitor(true); //控制是否打开磁盘监控 builder.diskMonitor(true); //控制是否打开流量监控 builder.trafficMonitor(true); //控制是否打开用户使用时长的监控 builder.operateMonitor(true); //控制是否打开启动监控,开启需要同时配置apm-plugin插件 builder.startMonitor(true); //控制是否打开页面Activity耗时监控,开启需要同时配置apm-plugin插件 builder.pageMonitor(true); //控制是否打开网络监控,开启需要同时配置apm-plugin插件 builder.netMonitor(true); //是否打印日志,注:线上release版本要配置为false builder.debugMode(true); //默认不需要,私有化部署才需要配置数据上报的域名 (内部有默认域名,测试支持设置http://www.xxx.com 默认是https协议 //builder.defaultReportDomain("www.xxx.com"); //设置渠道。1.3.16版本增加接口 //开启泄露和泄露兜底检测能力,泄露检测和泄露兜底需要分别在平台配置采样 //builder.detectActivityLeak(new IActivityLeakListener() { // @Override // public void onActivityLeaked(Activity activity) { // //activity泄露的回调 // } //}); // 可选,设置App的下载渠道,可以在平台进行筛选。例如,谷歌应用商店渠道可以设置“google play”。 builder.channel("google play"); //打开自定义日志回捞能力。1.4.1版本新增接口 builder.enableLogRecovery(true); //打开APMPlus日志能力,可以通过回捞获取APMPlus日志 builder.enableAPMPlusLocalLog(true); //设置数据和Rangers Applog数据打通,设备标识did必填。1.3.16版本增加接口 builder.setDynamicParams(new IDynamicParams() { public String getUserUniqueID() { //可选。依赖AppLog可以通过AppLog.getUserUniqueID()获取,否则可以返回null。 return null; } public String getAbSdkVersion() { //可选。如果依赖AppLog可以通过AppLog.getAbSdkVersion()获取,否则可以返回null。getAbSdkVersion是回调类的参数可以初始化后再设置。 return null; } public String getSsid() { //可选。依赖AppLog可以通过AppLog.getSsid()获取,否则可以返回null。getSsid是回调类的参数可以初始化后再设置。 return null; } public String getDid() { //1.4.0版本及以上可选,其他版本必填。设备的唯一标识,如果依赖AppLog可以通过 AppLog.getDid() 获取,也可以自己生成。getDid是回调类的参数可以初始化后再设置。 return null; } public String getUserId() { //可选。用户的唯一标识,支持用户自定义user_id把平台数据和自己用户关联起来。内部每次使用会回调getUserId()函数,返回可以定义为变量,用户登录有UserId时对变量进行赋值。 return "userid"; } }); ApmInsight.getInstance().start(builder.build());
插桩是为了简化接入网络监控、启动监控和页面监控,和其他监控能力无关。当前支持最高AGP版本7.0.2,编译异常相关解决方案见文档Apmplus plugin编译异常。编译出现冲突和异常也可以直接使用非插桩方式接入,具体请参见如何根据非插桩方案接入监控能力?。 //在文件头添加 apply plugin: 'apm-plugin' ApmPlugin { // 是否进行插桩 enable true // 是否在Debug包插桩,默认不插桩 enableInDebug true // DEBUG("DEBUG"), INFO("INFO"), WARN("WARN"), ERROR("ERROR"); // DEBUG 级别Log会汇总所有被插桩处理的类供查看,路径 app/build/ByteX/ApmPlugin/ApmPlugin_log.txt logLevel "DEBUG" // 启动分析开关:监控App启动耗时,需要同时开启pageLoadSwitch startSwitch = true // 页面响应开关:监控Activity的生命周期耗时 pageLoadSwitch = true // 网络监控开关:监控okhttp3的网络请求 okHttp3Switch = true //插桩显示HttpUrlConnection的网络请求开关 httpUrlConnectionSwitch = true // 重要:白名单下的包进行插桩,需要填写要插桩类所在的包名,支持前缀配置,默认可以写com whiteList = [ "com" ] // 黑名单包下类不进行插桩,可以配置包名和类名,没有可以不填 blackList = [ ] } | |
参数 | 配置示例 |
SDK 名称 | 应用性能监控全链路版 SDK |
涉及个人信息 | 【Android 端必要信息】系统时区、运行线程数、CPU 信息(频率、型号、架构)、移动设备国家编码(MCC)、移动设备网络编码(MNC);Android ID、设备品牌、操作系统 api 版本、电池电量、网络流量、设备 abi、ROM;用户 ID、应用版本、应用程序包名称、fd 列表等。 【Android 端可选信息】设备型号、操作系统、屏幕分辨率、磁盘使用情况、内存使用情况、OAID、GAID。 【iOS 端必要信息】设备标识符、设备型号、操作系统、CPU 信息(频率、型号、架构)、移动设备国家编码(MCC)、移动设备网络编码(MNC)、IDFV(identifier for vendor)、用户 ID、应用版本、应用程序包名称等。 【Harmony 端必要信息】设备标识符、设备型号、操作系统、CPU 信息(频率、型号、架构)、移动设备国家编码(MCC)、移动设备网络编码(MNC)、设备 dpi;设备品牌、操作系统 api 版本、user agent、用户 ID、应用版本、应用程序包名称、fd 列表等。 |
合作方主体 | 北京火山引擎科技有限公司 |
使用目的 | 识别移动端应用的终端用户的设备异常与性能数据 |
使用场景 | 通过自动化的程序和算法进行设备的识别、获取设备状态(在线、离线、所处网络环境)、进行设备数统计以及单设备问题调试 |
收集方式 | SDK 自行采集 |
官网链接 | https://www.volcengine.com/ |
隐私政策 |