夜莺-Nightingale
夜莺V7
项目介绍 功能概览
部署升级 部署升级
数据接入 数据接入
告警管理 告警管理
数据查看 数据查看
功能介绍 功能介绍
API FAQ
夜莺V6
项目介绍 架构介绍
快速开始 快速开始
黄埔营
安装部署 安装部署
升级
采集器 采集器
使用手册 使用手册
API API
数据库表结构 数据库表结构
FAQ FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵 第1章:天降奇兵
第2章:探索PromQL 第2章:探索PromQL
第3章:Prometheus告警处理 第3章:Prometheus告警处理
第4章:Exporter详解 第4章:Exporter详解
第5章:数据与可视化 第5章:数据与可视化
第6章:集群与高可用 第6章:集群与高可用
第7章:Prometheus服务发现 第7章:Prometheus服务发现
第8章:监控Kubernetes 第8章:监控Kubernetes
第9章:Prometheus Operator 第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)对稳定性建设表现优秀的团队进行奖励,对可用性配额消耗大的团队进行复盘总结;

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat