还是少背锅吧--聊聊线上监控

乙醇 创建于 5 个月 之前

最后更新时间 2019-06-17

线上的一切都是监控......

之前应该有写文章探讨过测试左右移的问题。

左移大致就是在设计的时候,写代码之前先把问题考虑清楚,尽量减少一些伪需求和自相矛盾的需求,要求测试同学有较大的业务能力。

右移就是上线之后通过监控等手段去提前感知线上的问题,争取在大部分用户发现问题之前就感知到问题并且快速修复和发布,没有被用户抓住的问题其实影响范围是有限的,可以想办法消化掉。

从软件测试的生命周期上看,大部分项目可能都会经历发布上线和线上运行/运营的阶段,从绩效层面上看,线上问题对绩效的影响是很大的,起码从感觉上来说是这样的。比如某测试同学工作兢兢业业勤勤恳恳,但是由于某天线上出了一个很严重的问题,造成了经济损失,通过回溯和复盘,发现该测试人员应该负主要责任,如果你是他的上级,你会怎么评估他的绩效呢?是采取人非圣贤孰能无过,知错能改善莫大焉的态度,还是因为严重的线上问题全盘否定他的付出呢?一般来说,你可能会采取比较中庸的做法,事故责任是要承担的,但瑕不掩瑜,还是会有值得肯定的地方。这时候往往就是把大锅分成一个一个的小锅,找人一起背。不过测试是甩锅链中比较弱势的一环,也是背锅链中首当其冲的一环,还是要有比较强的求生欲以及良好的心理素质才可以。

把线上监控做完备是求生欲强的表现之一。

简单起见,我们把线上监控分为3种类型,分别是业务级,服务级和硬件级的监控。

  • 业务级。业务级的监控需要大家去定义一些核心的业务指标,然后对指标进行监控,如果指标有异常那么争取迅速定位问题,将业务重新推上正轨。拿电商业务举例,核心指标可能是订单量,假如平时下午2点到3点左右的平均单量是1000,但今天只有100,那么应该是哪里出了问题,需要迅速去定位和排查。如果订单数直接掉到0,那么可能是订单服务不可用或者整站都挂掉了。

  • 服务级。比如订单服务一共有10个接口,那么每个接口的调用次数,成功率,返回速度等。服务级的指标可以分的很细,每个团队每种业务都有不同的服务级指标的着重点。

  • 硬件级。这个比较好理解。比如可以看到某台服务器的cpu内存网卡等指标。

谁来做

监控谁来做是个老生常谈的问题。一般来业务级监控需要测试+产品+运维的同学一起来做,运维可以主导,测试同学可以辅助验证或验收。服务级的监控可以由开发+运维+测试来做。硬件级可以由运维同学主导。

3层是不是都要做

一般来说3层都做的话是比较好的。比如业务级监控发现了订单量异常,然后通过服务级监控发现订单服务的库存接口调用失败率很高,导致订单无法正常创建,最后通过硬件层监控发现库存服务的硬件服务器磁盘io异常,从而可以快速定位到问题,迅速修复。

如果没有精力把3层都做全的话,可以先做业务级,至上而下把3层逐步建设好。因为业务级的监控往往非常直观,有锅自远方来可以一目了然,做好业务层监控可以提高一些存活率,不过如果想把线上问题的影响降到最低,另2层也是需要建设完备的。

并不是所有的问题都可以监控到

有时候我们并不是所有的问题都可以监控到,或者有一些监控的指标由于跨部门,或调用第三方服务的关系,我们没办法拿到我们想要的核心指标或数据。这时候我们可能需要模拟线上用户的一些具体操作去感知问题。举个例子,目前订单系统支持微信支付和支付宝支付,默认情况下展示的是微信支付的链接。我们可以通过在线上真实下单的方式(自动化测试的手段)去调用微信支付接口,如果可以正常走完流程,那么微信支付应该是没有问题的,如果走不通流程,那么微信支付可能暂时不可用,我们可以迅速把默认支付方式切成支付宝,这样可能对订单量不会造成特别大的影响。

告警

监控往往跟告警结合起来,比如我们可以设置高峰期每十分钟的订单量如果小于100就通知相关人员进行故障排查。告警往往需要非常精准,因为如果老是误报,那么大家可能会习惯性的忽略告警信息,导致告警形同虚设,那就是狼来了的故事了。

综上希望对大家有所帮助,另外作者水平有限能力一般,有问题还请斧正。

我要留言

  • 总结的还是很不错的,QA背锅是常有的事,但是正是因为这样,我们才需要保护好自己,QA不产生质量问题,但线上的质量问题QA难逃责任,只是责任大小的问题,因此QA必须贯穿整个项目周期,从产品需求提出开始便需要进入到项目中,对业务也必须深入理解,也需要对可能出现的bug有提前预判能力,确实很难,但随着对业务线的理解和经验的累计,还是可以做到的。对于线上业务监控,我一直有在做,基本和作者写的差不多,分为业务场景流程监控和线上数据监控。但需要补充一点的是对于老是误报的情况,我觉得最简单的方式应该是失败重试,而不是忽略告警信息,所有的告警信息应该做好数据留存,但不一定发起告警,发起告警的情况可以单独封装,不同的业务优先级和告警优先级,可以有不同的告警方式,如短信,电话,邮件,IM消息等,并且做好多次重试失败再进行骚扰试告警的逻辑。

    lvjj 创建于 2019-06-15 16:01:15

  • 非常赞o( ̄▽ ̄)d

    番茄 创建于 2019-06-14 15:42:28

  • 👍一个

    Zack 创建于 2019-05-29 09:49:57

  • 很好,总结的很棒

    lemonk 创建于 2019-05-14 16:54:30

  • 三种方式平时都有接触 但是没有总结,楼主总结的很好。有益,赞

    Cheney 创建于 2019-04-15 11:46:08

  • 受教了。。

    hsia 创建于 2019-04-10 10:26:16