使用友盟+的APM服务实现对移动端APP的性能监控

简介: 对于信息系统服务,一般我们的重点监控对象都是核心的后端服务,通常会采用一些主流的APM(Application Performance Management)框架进行监控、告警、分析。那么对于移动端的APP、小程序的运行时状态如何进行实时监控与分析呢?经过这次CSDN官方的推荐,友盟+提供的APM服务可以实现我们的这一目标,下面我们就尝试集成体验下友盟+提供的这款APM服务。

背景

对于信息系统服务,一般我们的重点监控对象都是核心的后端服务,通常会采用一些主流的APM(Application Performance Management)框架进行监控、告警、分析。那么对于移动端的APP、小程序的运行时状态如何进行实时监控与分析呢?经过这次CSDN官方的推荐,友盟+提供的APM服务可以实现我们的这一目标,下面我们就尝试集成体验下友盟+提供的这款APM服务。

由于我们的 APP是基于华为的鸿蒙操作系统进行开发,而注册友盟后,发现当前对于移动端APP,友盟官方提供了 Android与 iOS移动端操作系统的集成与接入,尚未提供对华为鸿蒙操作系统的支持(不过后来看到在上报的异常处可按照 只看鸿蒙设备 进行筛选:指发生错误/异常的设备为HarmonyOS,但尚未支持HarmonyOS系统级别错误)。

1.jpg

体验流程

本着体验下友盟+提供的APM服务的目的,这里使用一个基于 Android 的 Hello World 示例:

  • 首先按照官方文档完成移动端 APP 与友盟 SDK 的集成;
  • 然后在示例中抛出一些异常( OOM 等);
  • 最后在友盟的移动端应用监控首页可以看到我们应用上报的异常信息。

使用IDEA创建Android项目

当然,集成之前需要先搭建一个极简的 Android 的 Hello World 应用。

由于我之前并没有Android的移动端开发经验,当然也没有对应的开发环境,那么这里直接使用IDEA创建一个Android应用。

安装AndroidSDK

在IDEA中创建一个Android项目,先安装Android的SDK,我这里使用默认位置直接安装。

2.jpg

创建一个空的Activity

3.jpg

创建一个虚拟设备

4.jpg

虚拟设备安装完成

5.jpg

集成友盟+APM的SDK

友盟+的APM的SDK集成过程也是相当丝滑,参考官方文档推荐的 maven 线上接入 SDK,只需三步:1.创建应用;2.添加SDK依赖;3.初始化信息上报。

1. 创建应用

6.jpg

2. 添加SDK依赖

7.jpg

3. 初始化信息上报

8.jpg

涉及到的配置与代码如下:

dependencies {

   implementation fileTree(dir: 'libs', include: ['*.jar'])

   implementation 'androidx.appcompat:appcompat:1.0.2'

   implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

   testImplementation 'junit:junit:4.12'

   androidTestImplementation 'androidx.test:runner:1.1.1'

   androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'

   // 友盟基础组件库(所有友盟业务SDK都依赖基础组件库)

   implementation "com.umeng.umsdk:common:9.4.2" // 版本号(必选))

   implementation "com.umeng.umsdk:asms:1.4.1" // asms包依赖(必选)

   implementation "com.umeng.umsdk:apm:1.4.2" // U-APM产品包依赖(必选)

}

// umeng

buildscript {

   repositories {

       google()

       jcenter()

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

   }

dependencies {

       classpath 'com.android.tools.build:gradle:3.4.0'

       // NOTE: Do not place your application dependencies here; they belong

       // in the individual module build.gradle files

   }

}

allprojects {

   repositories {

       google()

       jcenter()

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

   }

}

// 通用初始化

public class MainActivity extends AppCompatActivity {

   @Override

   protected void onCreate(Bundle savedInstanceState) {

       // umeng

      UMConfigure.setLogEnabled(true);

       UMConfigure.init(this, "613b2a85314602341a0df802", "csdn", UMConfigure.DEVICE_TYPE_PHONE, "");

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

   }

}    

最终配置

9.jpg

启动后报错:无法联网

由于项目启动后,友盟+的SDK会进行信息上报,这时需要联网,而默认创建项目后没有联网权限,因此会出现一个报错信息。

10.jpg

为APP配置联网权限

11.jpg

集成成功效果

12.jpg

模拟各类异常

为了体验友盟+APM服务基本的监控功能,我们这里模拟一些异常,然后看这些异常信息是否可以上报至APM平台。

  • 普通的运行时异常:ArithmeticException/NullPointerException
  • 栈溢出异常:StackOverflowError
  • 内存溢出异常:. OutOfMemoryError

除0异常:ArithmeticException

// 发送异常按钮的点击事件:模拟除零异常

       public void exception(View view) {

       try {

           int value = 8 / 0;

       } catch (Exception e) {

          UMCrash.generateCustomLog(e, "5001");

       }

   }

13.jpg

栈溢出异常:StackOverflowError

// 发送SoF异常按钮的点击事件:模拟栈溢出异常

       public void exceptionStackOverFlow(View view) {

       try {

          exceptionStackOverFlow(view);

       } catch (Exception e) {

          UMCrash.generateCustomLog(e, "5002");

       }

   }

14.jpg

内存溢出异常:. OutOfMemoryError

 // 发送OOM异常按钮的点击事件:模拟内存溢出异常,当然OOM还有其他类型,这里以堆溢出为例进行演示

       public void exceptionOutOfMemory(View view) {

       try {

           List<byte[]> list = new ArrayList<>();

           while (true) {

               list.add(new byte[1024 * 1024]);

           }

       } catch (Exception e) {

           UMCrash.generateCustomLog(e, "5003");

       }

   }

15.jpg

异常自动上报

除0异常上报:ArithmeticException

16.jpg

栈溢出异常上报:StackOverflowError

17.jpg

内存溢出异常上报:OutOfMemoryError

18.jpg

19.jpg

异常告警

支持邮箱、钉钉、企业微信、飞书以及Webhook方式推送。

20.jpg

统计分析

可对不同类型的异常进行多维度的统计与分析,大家可以继续探索挖掘。

21.jpg

总结

通过以上流程,我们测试了移动端APP异常数据上报与统计功能,这个其实有点类似我们物联网设备数据采集、传输与分析的流程,而且整个集成的流程也比较顺畅,简单几步就给我们的APP做了做了一个服务远程监控端。

后面我们APP上线后,友盟+这款APM服务将是我们线上移动端应用监控的一把利器。另外,期待友盟+官方可以提供鸿蒙操作系统的接入,以便直接支持Huawei DevEco Studio中的基于HarmonyOS 虚拟设备,同时方便开发与调试。

作者:牛晓青

1. 曾参与脑电信号模式识别研究,教学软件、分布式互联网项目以及大型物联网平台的设计开发等工作。

2. 有4年团队管理经验,曾从0到1搭建技术团队,从最初的1人到现在的25人。负责的项目已落地多个城市。

3. 负责20+人团队管理、日常工作任务分配、工作进度跟踪、工作成果汇报、团队内部分享。精进管理,取得PMP项目管理专业人士资格认证。

4. 负责公司业务平台架构设计,方案编写,资金申报,研发部团队建设,项目验收培训、对外宣讲等工作。持续输出,获得CSDN博客专家认证。

原文链接
本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

首届“中国物联网数据基础设施最佳案例评选”结果出炉

供稿 | 映云科技 出品 | CSDN云计算 随着物联网技术的成熟与普及&#xff0c;如今的世界早已进入万物互联的时代&#xff0c;全球年活跃连接的物联网设备已达数百亿规模 &#xff08;IoT Analytics, 2021&#xff09;。海量物联设备产生的数据&#xff0c;需要通过统一汇聚和…

Serverless 工程实践 | 快速搭建 Kubeless 平台

简介&#xff1a; Kubeless 是基于 Kubernetes 的原生无服务器框架。其允许用户部署少量的代码&#xff08;函数&#xff09;&#xff0c;而无须担心底层架构。 快速搭建 Kubeless 平台 Kubeless 简介 Kubeless 是基于 Kubernetes 的原生无服务器框架。其允许用户部署少量的…

并发编程实践之公平有界阻塞队列实现

简介&#xff1a; JUC 工具包是 JAVA 并发编程的利器。本文讲述在没有 JUC 工具包帮助下&#xff0c;借助原生的 JAVA 同步原语, 如何实现一个公平有界的阻塞队列。希望你也能在文后体会到并发编程的复杂之处&#xff0c;以及 JUC 工具包的强。 作者 | 李新然 来源 | 阿里技术公…

iOS App 启动优化

简介&#xff1a; 作为程序猿来说&#xff0c;“性能优化”是我们都很熟悉的词&#xff0c;也是我们需要不断努⼒以及持续进⾏的事情&#xff1b;其实优化是⼀个很⼤的课题&#xff0c;因为细分来说的话有⼤⼤⼩⼩⼗⼏种优化⽅向 &#xff0c;但是切忌在实际开发过程中不能盲⽬…

apache1.3 php编译,安装Apache1.3.29 - Linux+Apache+Mysql+PHP典型配置详解_Linux教程_Linux公社-Linux系统门户网站...

2.安装Apache1.3.29。我没有选择安装Apache2.0是我对他还是不放心&#xff0c;因为网上最新公布的apache的漏洞基本上是针对2.0&#xff0c;当然大家可以自己选择安装相应的版本。我这里讲的都是采用DSO动态编译的方法编译Apache.至于有关apache的编译方法&#xff0c;可以参考…

前后端、多语言、跨云部署,全链路追踪到底有多难?

简介&#xff1a; 完整的全链路追踪可以为业务带来三大核心价值&#xff1a;端到端问题诊断&#xff0c;系统间依赖梳理&#xff0c;自定义标记透传。 作者 | 涯海 全链路追踪的价值 链路追踪的价值在于“关联”&#xff0c;终端用户、后端应用、云端组件&#xff08;数据库…

供应商太多,怎么才能高效比价?

本篇文章暨 CSDN《中国 101 计划》系列数字化转型场景之一。 《中国 101 计划——探索企业数字化发展新生态》为 CSDN 联合《新程序员》、GitCode.net 开源代码仓共同策划推出的系列活动&#xff0c;寻访一百零一个数字化转型场景&#xff0c;聚合呈现并开通评选通道&#xff0…

7张图揭晓RocketMQ存储设计的精髓

简介&#xff1a; RocketMQ 作为一款基于磁盘存储的中间件&#xff0c;具有无限积压能力&#xff0c;并提供高吞吐、低延迟的服务能力&#xff0c;其最核心的部分必然是它优雅的存储设计。 存储概述 RocketMQ 存储的文件主要包括 Commitlog 文件、ConsumeQueue 文件、Index 文…

庖丁解InnoDB之UNDO LOG

简介&#xff1a; Undo Log是InnoDB十分重要的组成部分&#xff0c;它的作用横贯InnoDB中两个最主要的部分&#xff0c;并发控制&#xff08;Concurrency Control&#xff09;和故障恢复&#xff08;Crash Recovery&#xff09;&#xff0c;InnoDB中Undo Log的实现亦日志亦数据…

Ampere Altra Max 对比测试数据公布,性能能效双领先

在云计算领域&#xff0c;发展创新的脚步永不停歇。十多年前&#xff0c;伴随着虚拟化及高速网络的发展和成熟&#xff0c;云计算应运而生。在将工作负载迁移到云端的过程中&#xff0c;为了更好地适应云环境&#xff0c;软件架构得以重建&#xff0c;就如同搬进新家时&#xf…

钉钉宜搭入选Forrester《中国低代码平台市场分析报告》

简介&#xff1a; &#x1f389; 最新&#xff1a;钉钉宜搭入选Forrester《中国低代码平台市场分析报告》&#xff01; 11月12日&#xff0c;全球知名研究机构Forrester发布《中国低代码平台市场分析报告&#xff08;The State Of Low-Code Platforms In China&#xff09;》&…

被自己的行为蠢哭了,意识到原因后真香!

作者 | 零一来源 | 前端印象这两天在学习 node 相关的知识时&#xff0c;做出了一些错误的行为~在做用户登录相关业务时涉及到了 cookie、session 的存取&#xff0c;一搜就找到了 express-session 这个中间件&#xff0c;真香&#xff01;配几个配置就可以自动生成 cookie、se…

一种命令行解析的新思路(Go 语言描述)

简介&#xff1a; 本文通过打破大家对命令行的固有印象&#xff0c;对命令行的概念解构后重新梳理&#xff0c;开发出一种功能强大但使用极为简单的命令行解析方法。这种方法支持任意多的子命令&#xff0c;支持可选和必选参数&#xff0c;对可选参数可提供默认值&#xff0c;支…

云原生 DevOps,模型化应用交付能力很重要

简介&#xff1a; DevOps 文化及其支撑其落地实践的自动化工具与平台能力在云原生架构渐为普及的背后&#xff0c;发挥了关键的价值。 撰稿&#xff1a;溪洋 云原生正在成为企业业务创新和解决规模化挑战的加速器。 云原生带来的变革绝不限于基础设施和应用架构等技术层面&a…

如何在 Kubernetes Pod 内进行网络抓包

作者 | Addo Zhang来源 | 云原生指北使用 Kubernetes 时&#xff0c;经常会遇到一些棘手的网络问题需要对 Pod 内的流量进行抓包分析。然而所使用的镜像一般不会带有 tcpdump 命令&#xff0c;过去常用的做法简单直接暴力&#xff1a;登录到节点所在节点&#xff0c;使用 root …

EDAS 4.0 助力企业一站式实现微服务架构转型与 K8s 容器化升级

简介&#xff1a; EDAS 正式来到 4.0 时代&#xff0c;发布多项重磅新能力&#xff1b;同时联合新产品—云原生应用设计开发平台 ADD 1.0&#xff0c;一起发布云原生应用研发&运维 PaaS 产品家族&#xff0c;助力企业应用架构现代化升级。 作者&#xff1a;安绍飞 前言 …

如何用20分钟就能获得同款企业级全链路灰度能力?

简介&#xff1a; MSE 微服务引擎将推出服务治理专业版&#xff0c;提供开箱即用且完整专业的微服务治理解决方案&#xff0c;帮助企业更好地实现微服务治理能力。如果您的系统也可以像本文描述的那样&#xff0c;快速具备完整的全链路灰度能力&#xff0c;并基于该能力进行进一…

云桌面场景化升级新作,锐捷网络发布全新远程办公“U空间”

编辑 | 宋慧 出品 | CSDN云计算 远程办公真的来了。 在硅谷的科技公司远程办公常态化之后&#xff0c;国内的科技大厂也在跟进中&#xff0c;如携程正式宣布的32混合办公模式。根据iiMedia Research艾媒咨询数据显示&#xff0c;在2020年新春期间&#xff0c;中国远程办公人员…

细说双 11 直播背后的压测保障技术

简介&#xff1a; 阿里云 PTS 站在双 11 巨人的肩膀上&#xff0c;是阿里全链路压测的延伸。PTS 通过伸缩弹性&#xff0c;轻松发起用户百万级别的流量&#xff0c;免去机器、人力成本&#xff1b;PTS 对流量的控制&#xff0c;能够实时脉冲&#xff0c;精准控制&#xff1b; 是…

【SpringCloud-Alibaba系列教程】14.一文教你入门RocketMQ

<本文已参与 RocketMQ Summit 优秀案例征文活动&#xff0c;点此了解详情> MQ简介 MQ(Message Queue)是一种跨进程的通信机制&#xff0c;用于消息传递。通俗点说&#xff0c;就是一个先进先出的数据结构。 MQ应用场景 异步解耦 很多场景不使用MQ会产生各个应用见紧密…