Nicole Forsgren博士在她的Accelerate[插图]一书中说:“我们的衡量方法应该关注结果,而不是输出”。有效管理MySQL的一个关键点在于对数据库的健康状况进行良好的监控。传统的监控是一条相对平坦的道路。由于SRE是一个新的领域,人们不太了解如何在MySQL中实现SRE原则。随着SRE原则持续得到认可,DBA的传统角色将不断改变,这包括DBA对监控系统的思维方式。
我们必须首先知道目标是什么,并使用通俗的说法来表述这些目标。这里有一些问题,可以作为组织中确定这些目标的引导话题:
- 衡量成功的合理指标是什么?
- 客户和我们的业务需求可以接受这些指标的哪些值?
- 在什么情况下会被视为处于降级状态?
- 什么时候处于完全失败的状态,需要尽快补救?
服务水平指标(SLI, Service Level Indicator):
简单地说,SLI回答了“如何衡量客户是否满意”的问题。从用户的角度来看,答案代表了一个健康的系统。SLI可以是业务级别的指标,如“面向客户的API的响应时间”或是最基本的“服务已启动”。
服务水平目标(SLO, Service Level Objective)
SLO回答了“为了确保客户满意,能允许SLI达到的最低限度是多少”的问题。SLO是我们希望将特定的SLI视为健康服务的目标范围。如果SLI的指标是服务正常运行的时间,那么在给定的时间范围内,运行时间达到几个9就是SLO。SLO必须定义为给定时间范围内的一个具体值,以确保每个人都对SLO的含义保持一致的理解。SLI加上SLO构成了了解客户是否满意的基本方程式。
服务水平协议(SLA, Service Level Agreement)
SLA回答了“我同意的SLO会产生什么后果”的问题。SLA是与一个或多个业务客户(付费客户,而非内部利益相关者)签订的协议中包含的SLO,如果未满足该SLA,将受到财务或其他处罚。请务必注意,SLA是可选的。
工程时间是有限的资源,所以在选择SLO时必须注意不要过于追求完美。不是产品中的所有特性都需要这么多个9才能让客户满意。你会发现,随着产品特性集的增长,将会有不同的SLI和SLO,具体取决于特定功能的影响或其带来的收入。这是意料之中的,也是一个深思熟虑的过程的标志。你还有一项关键任务:检测数据集何时成为不同用户的不同查询概要文件(query profile)的瓶颈,从而影响性能。这也意味着要找到一种方法来区分不同用户的需求,以便可以为他们提供合理的SLI和SLO。
这些指标和目标也是在产品和工程之间达成一致标准的有效方法,以指导在“将工程时间花在新功能上”与“将时间花在可恢复性和修复问题上”之间做出决策。这也是一种从需要做的事情列表中决定什么是最重要事情的方法,关键是基于用户体验来判断。你可以使用SLI和SLO来指导那些难以协调的关于工作优先级的讨论。