背景
对于信息系统服务,个别咱们的重点监控对象都是外围的后端服务,通常会采纳一些支流的 APM(Application Performance Management)框架进行监控、告警、剖析。那么对于挪动端的 APP、小程序的运行时状态如何进行实时监控与剖析呢?通过这次 CSDN 官网的举荐,友盟 + 提供的 APM 服务能够实现咱们的这一指标,上面咱们就尝试集成体验下友盟 + 提供的这款 APM 服务。
因为咱们的 APP 是基于华为的鸿蒙操作系统进行开发,而注册友盟后,发现以后对于挪动端 APP,友盟官网提供了 Android 与 iOS 挪动端操作系统的集成与接入,尚未提供对华为鸿蒙操作系统的反对(不过起初看到在上报的异样处可依照 只看鸿蒙设施 进行筛选:指产生谬误 / 异样的设施为 HarmonyOS,但尚未反对 HarmonyOS 零碎级别谬误)。
体验流程
本着体验下友盟 + 提供的 APM 服务的目标,这里应用一个基于 Android 的 Hello World 示例:
• 首先依照官网文档实现挪动端 APP 与友盟 SDK 的集成;
• 而后在示例中抛出一些异样(OOM 等);
• 最初在友盟的挪动端利用监控首页能够看到咱们利用上报的异样信息。
应用 IDEA 创立 Android 我的项目
当然,集成之前须要先搭建一个极简的 Android 的 Hello World 利用。
因为我之前并没有 Android 的挪动端开发教训,当然也没有对应的开发环境,那么这里间接应用 IDEA 创立一个 Android 利用。
装置 AndroidSDK
在 IDEA 中创立一个 Android 我的项目,先装置 Android 的 SDK,我这里应用默认地位间接装置。
创立一个空的 Activity
创立一个虚构设施
虚构设施装置实现
集成友盟 +APM 的 SDK
友盟 + 的 APM 的 SDK 集成过程也是相当丝滑,参考官网文档举荐的 maven 线上接入 SDK,只需三步:1. 创立利用;2. 增加 SDK 依赖;3. 初始化信息上报。
- 创立利用
- 增加 SDK 依赖
- 初始化信息上报
波及到的配置与代码如下:
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);
}
}
最终配置
启动后报错:无奈联网
因为我的项目启动后,友盟 + 的 SDK 会进行信息上报,这时须要联网,而默认创立我的项目后没有联网权限,因而会呈现一个报错信息。
为 APP 配置联网权限
集成胜利成果
模仿各类异样
为了体验友盟 +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");
}
}
栈溢出异样:StackOverflowError
// 发送 SoF 异样按钮的点击事件:模仿栈溢出异样
public void exceptionStackOverFlow(View view) {
try {exceptionStackOverFlow(view);
} catch (Exception e) {UMCrash.generateCustomLog(e, "5002");
}
}
内存溢出异样:. 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");
}
}
异样主动上报
除 0 异样上报:ArithmeticException
栈溢出异样上报:StackOverflowError
内存溢出异样上报:OutOfMemoryError
异样告警
反对邮箱、钉钉、企业微信、飞书以及 Webhook 形式推送。
统计分析
可对不同类型的异样进行多维度的统计与剖析,大家能够持续摸索开掘。
总结
通过以上流程,咱们测试了挪动端 APP 异样数据上报与统计性能,这个其实有点相似咱们物联网设施数据采集、传输与剖析的流程,而且整个集成的流程也比拟顺畅,简略几步就给咱们的 APP 做了做了一个服务近程监控端。
前面咱们 APP 上线后,友盟 + 这款 APM 服务将是咱们线上挪动端利用监控的一把利器。另外,期待友盟 + 官网能够提供鸿蒙操作系统的接入,以便间接反对 Huawei DevEco Studio 中的基于 HarmonyOS 虚构设施,同时不便开发与调试。
参考
https://at.umtrack.com/XHHrme
__
If you have any questions or any bugs are found, please feel free to contact me.
Your comments and suggestions are welcome!
作者:牛晓青
- 曾参加脑电信号模式识别钻研,教学软件、分布式互联网我的项目以及大型物联网平台的设计开发等工作。
- 有 4 年团队治理教训,曾从 0 到 1 搭建技术团队,从最后的 1 人到当初的 25 人。负责的我的项目已落地多个城市。
- 负责 20+ 人团队治理、日常工作任务分配、工作进度跟踪、工作成绩汇报、团队外部分享。
精进治理,获得 PMP 项目管理专业人士资格认证。 - 负责公司业务平台架构设计,计划编写,资金申报,研发部团队建设,我的项目验收培训、对外宣讲等工作。
继续输入,取得 CSDN 博客专家认证。