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. PMP之挣值管理(PV、EV、AC、SV、CV、SPI、CPI)的记忆方法

    挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三个参数:PV.AC.EV. PV:计划值,在即定时间点前计划完成活动 ...

  2. zabbix图形中文乱码

    别的贴子都是说到修改/usr/share/zabbix/include/defines.inc.php中的 define('ZBX_FONT_NAME', 'msyh'); define('ZBX_G ...

  3. Java的http post请求01之HttpURLConnection

    package com.ricoh.rapp.ezcx.iwbservice.webservice; import java.io.BufferedOutputStream; import java. ...

  4. python练习册 每天一个小程序 第0008题

    1 # -*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 一个HTML文件,找出里面的正文. 6 7 思路: 8 利用Beautiful ...

  5. Docker容器入门实践

    Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux 基金会,遵从了 ...

  6. display 不同的值及他们的作用

    display 不同的值及他们的作用 常见 block 块元素类型,默认宽度为父元素宽度,可设置宽高,并独占一行 none 元素不显示,并从文档流中移除 inline 行内元素类型,默认宽度为内容宽度 ...

  7. linux-安装zookeeper及相关操作

    下载两个安装包并解压: 配置jdk环境变量: [root@VM-0-10-centos zookeeper]# cat /root/.bash_profile # .bash_profile # Ge ...

  8. spring-boot-learning-事务处理

     事务处理的重要性: 面对高井发场景, 掌握数据库事务机制是至关重要的,它能够帮助我们在一定程度上保证数据的一致性,并且有效提高系统性能,避免系统产生岩机,这对于互联网企业应用的成败是至关重要的. 以 ...

  9. 在虚拟机里面运行java程序

    首先输入vi在里面写一个java程序 然后再查找jdk 复制jdk名字 然后安装jdk 安装完之后输入Javac加你创建的文件名 然后再输入Java 和文件名(这个不要加后缀)然后就打印出来了

  10. 学习Solr(三)

    本文以solr5为例说明在linux系统上单机安装过程. 一.    solr的安装 1.   solr能够安装在不同的操作系统上,安装solr前需要安装何时的JRE.当前版本5.5最低需要JRE1. ...