1个小时接入友盟+ U-APM:解决移动应用崩溃、性能、内存的云监控分析

本文涉及的产品
云监控,每月短信1000条
日志服务 SLS,月写入数据量 50GB 1个月
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
简介: 本文主要是一次产品需求讨论之后的功能论证,公司正式的APP接入友盟+ U-APM还未上线。而本文也是花了一个小时尝试接入U-APM的一种实验,过程比较顺利,而产品部对于这种性能指标的监控方式也比较认可,毕竟一次接入之后就可以实现多种应用。而友盟+ U-APM的功能不止于此,后续对于U-APM的深入对接也不会止步。

背景和痛点

随着移动项目的不断递进,用户使用量的增加,复杂的机型、Android版本等等,让公司的移动应用开始频频出现投诉、不稳定等问题。

其实这些问题在早起也有出现过,不过都因为用户量少,出现问题都可以快速解决。但是产品上依然面临着如下问题:

1、公司的手机型号不全,一般的云真机很难模拟出来所有的场景。

2、公司自己研发的日志捕捉功能不全,一方面对于瞬间崩溃很难捕捉,另一方面则是捕捉的时候部分机型当时的内存、设备快照获取不对,导致开发不断的更新完善日志机制。

3、虽然也做了钉钉的群机器人告警业务,但是只能做简单的监控,无法起到预警作用,都是事后告警,这个时候往往用户端已经出现严重错误。

4、AndroidIOS需要各自研发一套,并且IOS的信息获取更加困难,导致我们IOS端功能也相对保守,很多新研发的功能都不敢在IOS上推广。

需求分析

面临这些问题,我们需要抽丝剥茧找到一个核心的解决方案。

1、公司永远不可能把所有手机购置一遍,云真机是主流,需要找到一个海量稳定机型的市场。

2、对于日志采集、性能监控找到第三方解决。把专业的问题交给专业的团队,公司的团队把核心能力应用在公司的业务开发。

3、需要能够做到:

javaSwiftANRNative都可以做崩溃分析。

②对于AndroidIOS能够设置指标进行卡顿分析。

③对于热启动、冷启动、首次启动可以做独立的分析,定点解决启动慢问题。

④对内存占用进行分析,特别是卡顿、崩溃时候的整体内存和本应用内存的分析。

⑤能够自定义监听一些日志,自定义推送到微信、钉钉等。

⑥这些数据最好不要只是原始数据,通过监控平台可以形成报表。

维度分析

1.png

2.jpg

3.jpg

老板首先看中的是成本,从成本上来说,自主研发是一个持续性投入的过程。未来可能还会有更多的研发投入,以及机型购置。

而从技术角度上来说,研发更倾向于不断打造完善公司自己的APM,不过在深入了解了友盟+APM之后觉得除了我们能够长期存储日志,其他真的不具备优势。而60天的日志分析记录,也足够使用了。

所以综合来看,我们开始决定使用友盟+APM监控系统以及友盟+的真机调试。

 

技术实现

1、注册友盟+会员

这点略过,大家自行注册,注册完成之后选择友盟+U-APM产品

4.jpg

2、新建应用

填写应用信息,并选择平台(平台支持Android+IOS,但是AndroidIOS平台需要独立添加应用)

5.jpg

3、集成U-APMSDK

Android StudioMaven 自动集成为例

配置maven        maven { url 'https://repo1.maven.org/maven2/' }

引入SDK以及对应的版本:(使用时候注意最好用最新版)

dependencies {

  implementation 'com.umeng.umsdk:common:9.4.2'

  implementation 'com.umeng.umsdk:asms:1.4.1'

  implementation 'com.umeng.umsdk:apm:1.4.2'

}


6.jpg

4、配置必要的权限清单

建议把位置权限要加上去,U-APM会在SDK内集成了防作弊的位置判断,更加准确的获取位置信息。

7.jpg

5、初始化接入

接入的时候需要几个注意点:

AndroidManifest.xml需要配置appkeychannel,即便是在onCreate的时候设置了key

8.jpg


6、集成平台

就可以看到自己的应用了

9.jpg

分析

对于ANR有独立的分析页面

卡顿分析、启动分析、内存分析等等都可以精确到小时、天等维度。同时可以针对不同的版本、操作系统、设备等进行详细的统计。

10.jpg

云真机测试

应用可以一站式接入云真机,从华为、小米等一线品牌到魅族联想甚至诺基亚都有涵盖。Android版本也包含了最低的Android4.4和最高的Android11

直接上传安装包,就可以进行一键测试了。

11.jpg

总结和体验:

 

本文主要是一次产品需求讨论之后的功能论证,公司正式的APP接入友盟+ U-APM还未上线。而本文也是花了一个小时尝试接入U-APM的一种实验,过程比较顺利,而产品部对于这种性能指标的监控方式也比较认可,毕竟一次接入之后就可以实现多种应用。

友盟+ U-APM的功能不止于此,后续对于U-APM的深入对接也不会止步。

下一步会继续尝试:

例如,U-APM可以分别分级控制内存、卡顿、崩溃等开关和捕获级别,自定义Activity 预埋手动采集控制,等等。





作者:小七

CSDN账号:漠上刀栈


相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
16天前
|
存储 缓存 监控
|
20天前
|
编译器 C语言
动态内存分配与管理详解(附加笔试题分析)(上)
动态内存分配与管理详解(附加笔试题分析)
43 1
|
2月前
|
程序员 编译器 C++
【C++核心】C++内存分区模型分析
这篇文章详细解释了C++程序执行时内存的四个区域:代码区、全局区、栈区和堆区,以及如何在这些区域中分配和释放内存。
47 2
|
1天前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
18 9
|
5天前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
19天前
|
存储 缓存 监控
Linux中内存和性能问题
【10月更文挑战第5天】
34 4
|
20天前
|
程序员 编译器 C语言
动态内存分配与管理详解(附加笔试题分析)(下)
动态内存分配与管理详解(附加笔试题分析)(下)
38 2
|
5天前
|
存储 分布式计算 安全
阿里云服务器内存型r7、内存型r8y、内存型r8i实例规格性能对比与选择参考
在选择阿里云服务器实例规格时,针对内存密集型应用和数据库应用,内存型r7、内存型r8y和内存型r8i实例是这部分应用场景选择最多的热门实例规格。为了帮助大家更好地了解这三款实例的区别,并为选择提供参考,本文将详细对比它们的实例规格、CPU、内存、计算、存储、网络等方面的性能,并附上活动价格对比。让大家了解一下他们之间的不同,以供参考选择。
|
2月前
|
算法 程序员 Python
程序员必看!Python复杂度分析全攻略,让你的算法设计既快又省内存!
在编程领域,Python以简洁的语法和强大的库支持成为众多程序员的首选语言。然而,性能优化仍是挑战。本文将带你深入了解Python算法的复杂度分析,从时间与空间复杂度入手,分享四大最佳实践:选择合适算法、优化实现、利用Python特性减少空间消耗及定期评估调整,助你写出高效且节省内存的代码,轻松应对各种编程挑战。
31 1
|
19天前
|
数据处理 Python
如何优化Python读取大文件的内存占用与性能
如何优化Python读取大文件的内存占用与性能
67 0