如何进行监控设计?

在性能测试中,我觉得监控是非常重要的环节。因为这是做性能分析的前提,走出这一步,才有后面的分析。

监控是性能分析承上启下的关键点。设计监控是我们性能测试工程师必须要做的事情。当然了,仅仅设计监控是不够的,还要看懂监控数据才能分析。我们将在后面的篇幅一一拆解。

我觉得性能测试工程师也一定要自己去实现一遍监控的环节,而不是直接用其他团队搭建的监控工具。你可以自己找个 demo 服务器做一遍,这样才能真正理解后续要关注的点在哪里。

监控平台还指望别人给搭好,点个链接就能出数据了,这显然不是一个技术人员该有的样子。

监控设计步骤

如果要让性能测试人员设计监控逻辑,要如何做呢?首先,你要分析系统的架构。在知道架构中使用的组件之后,再针对每个组件进行监控。其次,监控要有层次,要有步骤。有些人喜欢一上来就把方法执行时间、SQL 执行时间给列出来,直接干到代码层,让人觉得触摸到了最顶级的技能。然而在我的工作中,通常不这么做,应该是先全局,后定向定量分析。最后,通过分析全局、定向、分层的监控数据做分析,再根据分析的结果决定下一步要收集什么信息,然后找到完整的证据链。这才是监控应该有的步骤,才能体现监控的价值。

监控技术图谱

这张图是我认为在一个性能测试中,该有的技术图谱。

如何进行监控设计?

 

 从这个图中我们可以看到,除了压力工具之外,还有很多技术细节。

通常在各种场合下,我都会说,这些都是我们要学习的范围,做性能分析的人,不一定能完全能掌握这些内容,那你所在的性能团队就应该有这样的能力。

因为性能团队要推进瓶颈的定位解决,所以要有和其他团队正面沟通的能力。下面我们就以具体的操作过程来说明设计的落地过程。现在的流行框架(比如说 Spring Cloud)中的熔断监控、限流服务、服务健康检查/监控、链路监控、服务跟踪、聚合监控等等,都是非常好的监控手段。比如说下面这样的架构图:

 

如何进行监控设计?

 

 

 这是比较常见的微服务技术架构。其中很多开源工具已经提供了监控的能力。

对技术的发展,我们要拥抱。但对思路的梳理更为重要,因为框架平台工具都是为了实现目标而存在的。在本篇中,我们还是回归根本,说一下监控设计的思路,讲清楚性能测试中应该如何拆分监控的点。当你看完了之后,即使是面对不同的架构,也有监控部署的思路。

架构图

那么我们就来到开始的位置了。做性能监控之前,先画一个最简单的架构图,看一下架构中各有什么组件,各有什么服务,将这些列下来,再找对应的监控手段和方式,看哪种手段和方式在性能测试过程中成本最低,效率最高。

如果把性能归到测试的这个阶段,那就必须先考虑测试的具体情况。

有些企业因为有长期的积累,监控平台完整又稳定,那显然是最好的。如果是短期项目类的性能测试,又涉及到多方企业的,基本上不要想有完整成熟的监控平台这件事了。

但是不管怎么样,我们都需要拿到架构的全局监控数据。针对下面的这个不大的架构,我们来考虑下如何拆分。

如何进行监控设计?

 

 

需要监控的内容如下:

操作系统

Nginx

Tomcat

Redis

MySQL

下面我就来细化下这个简单架构的监控设计。

监控设计

下图可以大概说明我对监控的整体设计理念。

如何进行监控设计?

 

 我来说明一下:

我们要对整个架构做分层。

在每一个层级上列出要监控的计数器。

寻找相应的监控工具,实现对这些计数器的监控。

如果一个工具做不到,在定位过程中考虑补充工具。

要做到对每层都不遗漏。

从大的分类上来看,我们识别出每个监控的节点和层级,再对应到架构中,如下图所示:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfgff.html