夜莺-Nightingale
夜莺V6
项目介绍 架构介绍
快速开始
黄埔营
安装部署
升级
采集器
使用手册
API
数据库表结构
FAQ
夜莺专业版
开源生态
Prometheus
版权声明
第1章:天降奇兵
第2章:探索PromQL
第3章:Prometheus告警处理
第4章:Exporter详解
第5章:数据与可视化
第6章:集群与高可用
第7章:Prometheus服务发现
第8章:监控Kubernetes
第9章:Prometheus Operator
参考资料

北极星系统SLA管理实践

SLA管理进阶

目标:基于北极星开展业务线级别的SLA运营管理

本进阶工作本质上是建立一套稳定性的运营机制,以达到让稳定性保障工作得到有效支持和可持续推进。能够完成北极星指标的梳理、配置、报警,达到及时发现故障,驱动起故障处理流程的效果,就实现了北极星系统的核心目标。该进阶工作建议在达成以上效果后再进行。

步骤一:概念统一 故障等级通常涉及几个类似和容易混淆的概念,如故障、异常、事故、事件、问题,最好在企业内部先统一这些概念的定义,以便降低沟通的成本。

Flashcat中的概念:
  • 事件:是一个范围最大的概念,包括了异常、故障、事故、问题,以及服务正常情况下的一些关键事件,如大促导致的业务量正常突增等;
  • 异常:只要业务受损即为异常,轻量的异常可以是一次用户的正常请求失败,严重的异常可以是重大事故。其包括了“事件”中除服务正常情况下以外的事件;
  • 问题:轻量的异常,未达到触发北极星指标报警的条件;
  • 故障:达到一定严重程度的异常,触发了北极星指标的报警;
  • 事故:程度严重或较为严重的故障,可进一步量化区分;

基于以上定义:

  • 事件 = 日常事件 + 异常
  • 异常 = 问题 + 故障
  • 故障 = 一般故障 + 严重故障(事故)

其中故障是一个重要的分水岭,故障及以上的事件是需要紧急响应紧急处理的,即Flashcat重点针对的场景,而故障及以下的事件则不那么紧急,属于日常排障。

步骤二:基于SLI量化故障标准 1)SLI选取:

北极星指标即SLI(service level indicator)。但为便于观察,北极星业务线中采集的北极星指标通常可能会有一些重合,如总订单量指标和分地域或分城市的订单量指标。可依据业务的情况,从中选取部分指标来作为故障等级判断的依据。

选取原则:所选指标集合能够完整覆盖业务的核心流程;

2)等级量化:

基于选取的北极星指标(SLI)集合推荐一个异常等级量化的样例:

异常等级量化举例:
  • P0 重大事故:任一SLI在故障期间累计量下降超过50%,且故障持续了30分钟以上;或累计下降量达到日总量的10%以上;
  • P1 严重事故:任一SLI在故障期间累计量下降达到20%~50%,且故障持续30分钟以上;或累计下降量达到日总量的5%~10%;
  • P2 重要事故:任一SLI在故障期间累计量下降达到10%~20%,且持续30分钟以上;或累计下降量达到日总量的1%~5%;
  • P3 一般事故:任一SLI在故障期间累计量下降超过10%,但持续不到30分钟,且累计下降量不超过日总量的1%;
  • P4 一般故障:任一SLI异常,触发了北极星报警,但不满足以上任一条件;
  • P5 一般问题:服务出现一定的异常,但未达到触发北极星报警的程度,如日常bug等导致的局部问题。也可以叫做“一般异常”。

定义中的相关概念:

  • 累计量:一定时间区间内时序数据每一个点对应值的加和;
  • 故障期间:指标曲线开始异常到指标完全恢复到正常水平的时间区间;
  • 下降幅度的参照值:计算故障开始前30分钟的累计量相对7天前同一时间区间的累计量的涨幅(正或负),7天前曲线对应故障区间时间内的累计量 x(1+涨幅),以此为参照值;

输出:明确量化的故障等级标准文稿。

步骤三:可用性配额(Error Budget)管理

可用性配额或错误配额,即全年允许故障持续的总时长,是可用性目标(SLO,service level objective)计算的基础,如可用性配额为262.8分钟,对应可用性目标则为99.95%。

其实也可以反过来,先确定全年可用性目标,录入目标值,Flahcat会自动计算出可用性配额。但配额值其实更具业务意义,因此建议采用先配额后目标,再微调的制定方案。

首先,确定需要扣减可用性配额的故障等级,如P3一般事故及以上的等级需要扣减配额。各个等级扣减配额的方案有多种,可选方案举例:

1)只要达到P3等级,无论严重程度,一律扣减异常持续时间的时长;
2)按等级进行折算,如:

  • P0:从配额中扣减 事故持续时长 x 100% 的时间;
  • P1、P2、P3:从配额中扣减 事故持续时长 x 异常时间区间累计量下降幅度 的时间;

可以结合业务的情况,制定一个合理的算法。

扣减算法确定后,再基于业务线历史的故障情况,和未来的发展预期,大致推算一个可用性配额的量级,最后可能权衡微调为对应99.9%、99.95%、99.98%之类的可用性目标值。

输出:明确量化的可用性配额扣减标准,及各个业务线的可用性配额数值。

步骤四:可用性目标(SLO)管理

业务线全年的可用性配额确定后,可在Flashcat的北极星首页进行录入,Flashcat会根据录入的配额自动计算全年的可用性目标。

计算公式(单位:分钟):

可用性目标 = (365 * 24 * 60 - 配额)/(365 * 24 * 60)* 100%
如,不可用时长配额为262.8分钟,则计算的可用性目标即为99.95%。

后续每次故障复盘中,需要确认故障的等级和消耗的配额,并累加到已消耗的配额中,系统会根据已消耗的配额每天自动计算当前可用性。

计算公式:

当前可用性 = (1月1日到当前的天数 * 24 * 60 - 已消耗的时长)/(1月1日到当前的天数 * 24 * 60)* 100%

系统同时计算预估可用性,即假设从当前时间开始到年末都不出现消耗配额的事故,预期保持到年底时的可用性数值(可用于和可用性目标做对比)。

计算公式:

预估可用性 = (365 * 24 * 60 - 已消耗的配额)/(365 * 24 * 60)* 100%

重要提示:

1)可用性目标因为SLI的选取不同、故障等级的标准不同、配额扣减的标准不同,通常无法在不同标准体系下做横向比较。较有意义的是现在和过去、今年和往年进行对比。但前提是持续管理,并保持标准的一致性。

2)相关术语:
SLA = Service Level Agreement = 服务水平协议
SLO = Service Level Objective = 服务水平目标
SLI = Services Level Indicator = 服务水平指标
Error Budget:基于SLO计算的错误预算

输出:明确的可用性配额录入到北极星业务线中,被在每次事故后更新消耗的配额。

SLA管理最佳实践

最佳实践:基于北极星的业务稳定性SLA管理最佳实践

1)成立公司级(至少是业务线级别)的稳定性联合保障组织,对公司/业务线的服务稳定性负责;
2)定期总结各北极星业务线的稳定性指标达成情况、故障情况、改进项完成情况等数据,作为运营报告输出;
3)对稳定性建设表现优秀的团队进行奖励,对可用性配额消耗大的团队进行复盘总结;

开源版
Flashcat
Flashduty