作者:友盟+U-APM团队

Why? 为什么要做应用性能监控?

首先,我们要知道应用性能监控具体指什么?以及目的:

监控是一套完整的“监视+报警”的系统。对于像我们这样的App开发者来说,应用性能监控是衡量App的第一道关卡,如果应用的质量不好,会给用户带来最直接的体验伤害。App上线后,开发者是无法7*24实时获取到用户使用及体验情况的,这时就需要一套优质的监控工具。

那么,我们到底需要监控哪些指标?

安卓和iOS的客户端监控指标就有很多不同,比如说安卓需要的是Java、Native、ANR错误等等,iOS需要的是Objective-C、Swift、C++层的错误等等。

在定义错误指标上,最基础的是不同类型的错误数,如果考虑到错误数与整体应用使用量的对比,可以考虑用比值的方式,比如可以定义错误率:

如果要关注错误的发生次数,及错误的影响用户数,则可以在错误数的基础上,根据用户排重计算得来影响用户数。

如何定义独立用户呢?我们可以考虑用设备ID辨别,比如imei、idfa、AndroidID等等,如果这些信息很难获取,也可以使用业务上的用户ID,比如登录账号,会员名等。除此之外,使用第三方SDK提供的设备识别定义ID也是个不错的选择。在使用这类ID排重后,就可以得到错误的影响用户数。

如果我们已知错误的影响用户数,但无法确定它的影响范围占比,则可以看以下这个指标:

总结下来,我们可以统计不同类型错误在某一个时间范围内的错误数、错误率、影响用户数、影响用户占比等指标。在指标的细化分类上,我们还可以用不同的维度定义监控,比如版本号。

How? 如何灵活地制定属于你的告警计划?

我们先请您做个小测验来判断下您的监控告警类型(一共5道题,仅需1.5分钟)

规则如下:A选项记5分,B选项记10分,C选项记15分,D选项记20分

Q1: 请问您的产品目前处于什么阶段?

A: 已经上线,处于比较稳定的状态,对监控告警的需求较低

B: 还在开发阶段,需要捕捉一些测试中的错误,对监控告警的需求一般

C: 刚刚上线,整体来说比较稳定,对监控告警的需求较高

D: 刚刚上线,效果未知,非常需要7*24小时实时关注,对监控告警的需求非常高

Q2: 请问您在您的公司/部门的职务是什么?

A:领导者,关注应用的质量做得如何

B:运维人员,负责监控整体应用性能的线上问题监督官

C:测试人员,负责应用发版前的质量把控

D:安卓/iOS端的客户端开发人员

Q3: 请问您所属团队有多少人在关注应用性能质量,并参与其中呢?

A:  1,光杆司令干活靠自己

B:2~5人,小型开发团队

C:6~25人,相互打配合,一起优化应用质量

D:25+,超大型的开发团队,不谦虚的说算是行业龙头

Q4: 您日常关注哪些应用性能监控指标:

A:  最基本的错误数就可以

B:考虑到客户端影响的用户使用范围,在上述的基础上需要监控影响的用户数以及占比

C:在上述的错误数以及影响用户的基础上,还要考虑各个版本的分布

D:需要制定组合型的告警规则:比如:错误数>100且错误率>1%或者影响用户数比1天前多1%时触发告警,也要考虑版本分布

Q5: 请问您对告警的通知方式有精细化设置的要求么?

A:没什么要求,只要能收到就行

B:在时间上有一些要求,半夜不想被打扰

C:在通道上有一些要求,需要邮件或者特定的办公聊天软件

D:对时间和触达通道都有要求

What?那么如何设置告警计划呢?

以上的分加总,请先判定下您的测验总分(A选项记5分,B选项记10分,C选项记15分,D选项记20分),来看您的App在下面哪个监控告警需求等级范围内:(数据在哪个范围?还是监控告警在哪个层级?)

热血青铜(25~50分):您属于监控告警的初级阶段使用者,您在日常工作中无需非常精细地查看各种错误的发生状态。可能是由于您的应用还在初始阶段,或者您位高权重,无需亲自修复告警信息,只需要整体监控就好。请查看下文中的方案1

英勇黄金(50~75分):您属于监控告警的中级阶段使用者,您或者您的团队已经有了监控告警的意识,并且在日常工作中会关注到实时的应用质量情况。您已经可以用一定精细化的规则设置告警了,请跳转至方案2

荣耀王者(75~100分):您已经属于监控告警的高能玩家了,只需要一点点引导,就可以成为监控告警界的“超级王牌”了

根据上述测验的分值高低,您可以判别您所需要的告警设置的难易,整体分为下面几个方案,实现程度由易到难。如果您想学习最全面的告警设置功能,请直接跳转到方案3哦

方案1:简易型--整体应用质量监控

作为最初级的告警设置,您只需要考虑两个问题:

a. 我应该在什么情况下收到告警?

b.我如何能收到应用告警消息呢?

解决第一个问题,您可以考虑最简单的状态,只要有错误我就要收到预警,那么只要设置错误数>0的条件就可以解决。如果您觉得这样被打扰的非常多,可以根据自身的应用情况,设置错误数>xx个这类的告警规则

解决第二个问题,您需要有一个可以接收消息的媒介,最简单的就是邮箱:

一个简单的监控告警计划就这样设置好了

方案2:进阶型--精细化应用质量监控

您已经可以对单一应用设置不同的告警消息了,可以按照监控的指标类型或者版本进行区分。比如说,我们对新上线的版本要求是,影响用户数>10则触发告警,对老版本的要求是整体错误率相比于上周增幅不超过5%就可以,那么我们就可以按照如下的方式设置:

a.新版本的告警规则:

b.老版本的告警规则:

在这个方案中,我们分别应用了阈值型和对比型的告警触发条件,这两种规则的定义如下;

阈值型规则

您可以选择一种指标(错误数、错误率、影响用户数、影响用户占比),并且选择「大于」某值或者某百分比

对比型规则

您可以选择一种指标(错误数、错误率、影响用户数、影响用户占比),并且选择「比」历史的时间段,增加多少比例,计算方式为:(过去1小时数值-历史1小时数值)/ 历史1小时数值,大于或等于所选值即发送告警

方案3:  王者型--组合式指标监控

您已经可以非常熟练的设置监控告警了,那么通过下面的hints,相信您可以根据您的日常工作需求,灵活制定属于您的告警计划

a. 灵活设置告警生效时间:

您可以添加告警生效的时间段,比如每周一至周五的9点至19点,周末的一12点至20点,灵活设置您的工作时间,不被无效信息干扰

b.重点错误类型/单条错误告警

您可以选择需要您重点关注的错误类型

或者直接针对某一条修复中的错误进行持续关注告警

c. 组合形式的告警触发条件

您可以通过多种指标以及阈值型或者对比型的规则,以交集/并集的组合方式,灵活设置您想要的告警触发条件

d.多种告警触达渠道

如果您还对监控告警的触达渠道有所要求,可以考虑使用公司的办公软件进行群触达,与您同组的其他同事一起关注并修复应用问题。

在此方案中提到的所有监控告警设置功能,可以通过U-APM体验,2分钟制定告警计划。

五个问题,三大策略,手把手教你定制App性能监控方案的更多相关文章

  1. 手把手教您定制化Centos6.x安装界面

    1.获取安装界面代码      挂载image/install.img:mount image/install.img /mnt/5 -o loop      复制挂载后的代码至self_intall ...

  2. 手把手教你完成App支付JAVA后台-支付宝支付JAVA

    接着上一篇博客,我们暂时完成了手机端的部分支付代码,接下来,我们继续写后台的代码. 后台基本需要到以下几个参数,我都将他们写在了properties文件中: 支付宝参数 AliPay.payURL = ...

  3. 手把手教你定制标准Spring Boot starter,真的很清晰

    写在前面 我们每次构建一个 Spring 应用程序时,我们都不希望从头开始实现具有「横切关注点」的内容:相反,我们希望一次性实现这些功能,并根据需要将它们包含到任何我们要构建的应用程序中 横切关注点 ...

  4. 手把手教你用Python搭建自己的量化回测框架【均值回归策略】

    手把手教你用Python搭建自己的量化回测框架[均值回归策略] 引言 大部分量化策略都可以归类为均值回归与动量策略.事实上,只有当股票价格是均值回归或趋势的,交易策略才能盈利.否则,价格是随机游走的, ...

  5. 《手把手教你》系列技巧篇(二十五)-java+ selenium自动化测试-FluentWait(详细教程)

    1.简介 其实今天介绍也讲解的也是一种等待的方法,有些童鞋或者小伙伴们会问宏哥,这也是一种等待方法,为什么不在上一篇文章中竹筒倒豆子一股脑的全部说完,反而又在这里单独写了一篇.那是因为这个比较重要,所 ...

  6. 《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)

    1.简介 今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历多选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的多选按钮进行实战. 2.d ...

  7. 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)

    1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...

  8. 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

  9. 《手把手教你》系列技巧篇(五十一)-java+ selenium自动化测试-字符串操作-下篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

随机推荐

  1. sqlmap在https情况下的一个错误

    对于https网站,使用sqlmap可能会出现如下错误.使用–force-ssl无效. https证书有问题 方法 本地建立proxy.php,内容为 <?php $url = "ht ...

  2. Inkscape tricks

    Draw straight lines: click pencil button -> click once on your canvas(starting point) -> click ...

  3. DLL & Dynamic-link library

    DLL & Dynamic-link library 动态链接库 .dll 动态链接库(英语:Dynamic-link library,缩写为 DLL)是微软公司在微软视窗操作系统中实现共享函 ...

  4. Xcode 切换 iOS 模拟器的 Dark 模式

    Xcode 切换 iOS 模拟器的 Dark 模式 SwiftUI // // ContentView.swift // MemorizeGame // // Created by 夏凌晨 on 20 ...

  5. GitHub Actions & GitHub Secrets

    GitHub Actions & GitHub Secrets tokens & private variable GitHub Secrets https://github.com/ ...

  6. leetcode & Mock Interview

    leetcode & Mock Interview https://leetcode.com/interview/ xgqfrms 2012-2020 www.cnblogs.com 发布文章 ...

  7. HBase ——Shell操作

    HBase --Shell操作 Q:你觉得HBase是什么? A:一种结构化的分布式数据存储系统,它基于列来存储数据. 基于HBase,可以实现以廉价PC机器集群存储海量数据的分布式数据库的解决方案. ...

  8. GET和POST两者的区别

    GET 和 POST 是 HTTP 协议中的两种发送请求的基本方法,对于前端开发者而言,几乎每天都在使用它们,再熟悉不过了,一般也都能说出几点两者的区别. 如果面试中被问到这个问题,先回答一下几点,肯 ...

  9. ffmpeg第4篇:为视频添加动态水印

    动态分为三种: 水印本身变化 水印显示时间变化 水印位置变化 水印本身变化 看过上一篇的小伙伴可能觉得第一种很简单,把jpg格式的图片换成gif格式的不就可以了吗,然而亲自试一下就会发现,把gif图片 ...

  10. oracle 导入导出dmp

    exp 用户名/密码@地址:端口/serviceName file=D:\710.dmp exp test710/test710@192.168.15.134:1521/doit file=D:\71 ...