SRE的根基起码应该包括:SLO、监控、告警、减少琐事和简单化。

SLO(服务质量目标):用于描述服务可靠性的程度。

SRE的职责并不只是将“所有工作”都自动化,并保持“on-call”状态。

一.入门

系统成熟度级别划分:

1.一个处于开发中的绿地应用,目前还没做过任何生产部署。

2.一个生产系统,在出现问题时,你的监控可以给你发送一些告警。但是,你还没有正式的服务目标,没有错误预算的概念,不过你有的是:一个没有明确的目标,即正常运行时间为100%。

3.一个处于运行中的生产系统,你有一个小于100%的SLO目标。但是,相关团队并没有对他的重要性达成共识,也不知道该怎样利用它来持续改进,换言之,一个没有牙齿的SLO。

为了能够应用基于错误预算的可靠性工程方法,需要达到以下境界:

1.建立一组SLO,组织里的所有利益干系人都认可它适用于对应的产品

2.取得了负责确保该服务落实SLO目标的人员们的认可,他们认为在正常情况下SLO应该可以达成

3.该组织已经承诺,错误预算将会用于决策和优先级排序。这份承诺正式地(官方的)被记录在错误预算策略文档里

4.该组织具备一个持续优化SLO的流程

面向SLI的度量:

服务质量指标(SLI):是你所提供的服务质量的指标。

通常建议:将SLI视为两个数字的比率,良好事件数量/事件总数。例如:

成功的HTTP请求数/总HTTP请求数(成功率)

100ms内完成的gRPC调用数/gRPC调用总数

这种形式的SLI具有一些特别有用的属性。SLI的范围从0%~100%,0%表示无效,100%表示没有任何损失。SLO就是目标的百分比数值,错误预算是用100%-SLO。

首次尝试设定SLI和SLO的时候,也没必要强求一步到位,最重要的目标是能够落地,并且真的开始进行度量了,同时建立起一个有助于你持续改进的反馈循环。

从简单易行的方面下手:

1.挑选一个应用程序,为之定义SLO。如果你的产品包含了许多应用程序,其他的可以随后加入

2.清晰的识别出在各种情况下”用户“是谁。这些人的满意度是你将要优化的方向

3.识别出这些用户常见的与系统交互的方式,即常见任务和关键活动

4.绘制高阶系统架构图,画出那些关键组件、请求流、数据流和重要的依赖关系。将这些组件按下文的类型清单分门别类

组件类型:

1.请求驱动

一个发起互动的用户-发出某些类型的请求,并等待返回结果。

例如:用户通过浏览器与HTTP服务进行互动

2.流水线

一个处理系统-接收输入的信息记录,在完成了处理加工以后,将输出结果存放到其它位置。

例如:一个做优化的系统,定期从关系型数据库中读取数据,并将其写入分布式哈希表;一个视频处理服务,可将视频从一种格式转换为另一种格式

3.存储

一个接收数据(例如:字节、记录、文件、视频)的系统,以后数据可以被检索和取回

SLI从规范到实现:

1.对于第一波SLI,尽量选择那些花费最少工程工作量的东西。对于任何一个SLI都需要具备充足的信息:对于可用性,你需要成功/失败的状态等,通常监控仪表板中可能已经提供了某些信息。

2.为了改进SLO目标,需要有一个信息员,它能够提供用户对服务的满意度,它的范围可以更广:

a.对于故障事件,你可以从公共论坛、支持工单以及客服热线电话等信息源,进行手工统计,得出服务中断次数

b.尝试评估和分析在社交媒体上,用户们的情绪

c.在系统中加入定期的用户满意度调查程序

d.进行面对面的用户访谈调查和采样

3.改进SLO质量,对于手工统计的服务故障次数,如果有支持工单系统的话,也要将其纳入统计范围

4.基于SLO和错误预算的决策,在SLO无法正常达成的时候,应该采取的对策是什么(即错误预算即将耗尽的时候)?在错误预算耗尽时,在错误预算策略文档中应该包含相关措施的描述。策略中通常的描述是:停止特性发布,直到服务重新返回SLO,否则部分/全部技术人员将投入到修复可靠性相关的缺陷上。在极端条件下,在从高层获得批准后,还可以对外宣布团队进入紧急状态,所有的外部请求都会被延期,知道达到退出紧急状态的SLO目标之内了。这些行为包括:改善监控、改善测试、消除潜在的危险性依赖关系,或者通过系统重构消除那些已知的故障类型

最终:

如果服务运行犹如行云流水一般,那就只需要一些微小的监管。此时你就应该将服务移转入较少手动干预支持的等级。你可能只需要持续的对相关事件做出必要的响应,以及进行高阶监管,每天再也不需要对产品给与深入关注了,因此,你就可以专注到其他的更需要SRE支持的系统。

3.SRE.操作手册:基础篇的更多相关文章

  1. Git操作(基础篇)

    Git操作(基础篇) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git的读音为/gɪt/.Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常 ...

  2. C# 操作Excel基础篇(读取Excel、写入Excel)

    注意事项:Excel的数据表中最多只能储存65535行数据,超出后,需要将数据分割开来进行储存.同时对于Excel中的乱码象限,是由于编码的错误方式导致引起的! 一.读取Excel数据表,获得Data ...

  3. python学习笔记三 文件操作(基础篇)

    文件操作 打开文件 open(name[,mode[,buffering]])   open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉]   w ...

  4. vue详细操作目录-基础篇

    目录结构:-lib-main.js -lib-vue.js index.html 每个网页第一个均为HTML页面,第二个为js文件(主要文件) 1.vue的安装以及语法介绍 2.v-for指令 3.v ...

  5. Python+request 使用pymysql连接数据库mysql的操作,基础篇《十一》

    笔记记录: (1)pymysql中所有的有关更新数据(insert,update,delete)的操作都需要commit,否则无法将数据提交到数据库,既然有了commit(),就一定有对应的rollb ...

  6. GitHub 使用手册 - 基础篇

    缘起 Git已经成为程序员必备技能之一,而GitHub做为做流行的Git仓库托管平台,其不仅提供Git仓库托管,还是一个非常棒的技术人员社交平台,可以通过开源的项目进行协作.交流,是现在优秀的工程师必 ...

  7. VBA 字符串操作(基础篇)

    转自:http://blog.csdn.net/jyh_jack/article/details/2315345 mid(字符串,从第几个开始,长度) 在[字符串]中[从第几个开始]取出[长度个字符串 ...

  8. 小刻也能看懂的Unraid系统使用手册:基础篇

    小刻也能看懂的Unraid系统使用手册 基础篇 Unraid系统简介 Unraid 的本体其实是 Linux,它主要安装在 NAS 和 All in One 服务器上,经常可以在 Linus 的视频里 ...

  9. 前端开发工程师 - 03.DOM编程艺术 - 第1章.基础篇(上)

    第1章.基础篇(上) Abstract:文档树.节点操作.属性操作.样式操作.事件 DOM (Document Object Model) - 文档对象模型 以对象的方式来表示对应的html,它有一系 ...

随机推荐

  1. vue2.x版本中computed和watch的使用入门详解-computed篇

    前言 在基于vue框架的前端项目开发过程中,只要涉及到稍微复杂一点的业务,我们都会用到computed计算属性这个钩子函数,可以用于一些状态的结合处理和缓存的操作. 基础使用 在computed中,声 ...

  2. Django APIView源码解析

    APIView使用:luffy项目中关于APIView的使用 在Django之 CBV和FBV中,我们是分析的from django.views import View下的执行流程,以下是代码 fro ...

  3. python3 爬虫4--解析链接

    1.urlparse() 属于urllib.parse 在urlparse世界里面,一个标准的URL链接格式如下 scheme://nrtlooc/path;paramters?query#fragm ...

  4. Shiro Session放到Redis中常遇到的问题

    Shiro会话管理:https://shiro.apache.org/session-management.html#SessionManagement-CustomSessionIDs Redis主 ...

  5. Python包装器

    def func(): print("func body") def f1(arg): print("f1:",arg) def wrapper(b): pri ...

  6. kafka消费组创建和删除原理

    0.10.0.0版本的kafka的消费者和消费组已经不在zk上注册节点了,那么消费组是以什么形式存在的呢? 1 入口 看下kafka自带的脚本kafka-consumer-groups.sh,可见脚本 ...

  7. mac终端所有命令不能用

    最近一次在用终端敲命令的时候发现命令总是不执行(只有cd命令可以正常执行),返回命令未识别的错误-bash: source: command not found 相信很多朋友也会遇到类似的问题. 解决 ...

  8. 项目启动的缓慢之“Build completed with 1 error and 18 warnings in 3 m 51 s”

    一.问题 idea编译项目writing classes很慢,等很久之后项目也启动不起来,如下图 二.解决方案 1.File->Invalidate Caches/Restart...清下缓存 ...

  9. C语言函数中的3个点 ...有什么作用

    标准库提供的一些参数的数目可以有变化的函数.例如我们很熟悉的printf,它需要有一个格式串,还应根据需要为它提供任意多个"其他参数".这种函数被称作"具有变长度参数表的 ...

  10. Cadence 错误合集

    1.原理图DRC出现如下错误"Duplicate Pin Name "GND" found on Packag" 解决方案:原因是元件引脚重复定义,可以进行重新 ...