前三讲基于“防备上游、做好自己、怀疑下游”的准则,讲解了如何通过系统设计、部署,以及代码编写的方式来构建一个更加高可用的后台系统。
基于上述三个准则提出的方案可以预防部分问题,但百密一疏,即使我们做了很多防护措施,仍无法保证绝对安全,避免问题发生。此时作为系统的负责人,你需要在第一时间,也就是用户感知前发现问题。
发现问题的方法便是监控,本讲将介绍如何设计微服务的监控,帮助你在日常系统维护时,更快地、自动地发现问题。
什么是监控
监控是指对被监控体的运行状态数据进行持续地审查,并设置运行状态数据不符合要求的阈值,对不符合阈值的运行状态主动报警的一种方式。被监控体的运行状态数据通常以如下图 1 中 XY 轴的格式进行展示。
图 1:XY 轴格式的运行状态数据图
上图 1 的 X 轴表示时间,由固定的间隔组成,此间隔可以是秒级或分钟级。Y 轴表示在该时间间隔里的运行状态数据的汇聚,它可以是间隔数据的累加、平均值、最大值等方式。
下面将对几种常见的被监控体,以及它们的运行状态数据、阈值设置等相关内容进行一一介绍。因为篇幅原因,关于其他类型的被监控体及对应的指标,本讲不再赘述,你可以参考SkyWalking、分布式链路追踪。
次数监控
次数监控中被监控体就是次数,具体指微服务里各项代码逻辑运行的次数,可以是微服务对外提供接口的被调用次数、某一个方法被执行的次数。它的示意图如下图 2 所示,其中 Y 轴表示在指定间隔内,被监控体的