Google SRE 读书笔记 扒一扒SRE用的那些工具
写在前面
最近花了一点时间阅读了《SRE Goolge运维解密》这本书,对于书的内容大家可以看看豆瓣上的介绍。总体而言,这本书是首次比较系统的披露Google内部SRE运作的一些指导思想、实践以及相关的问题,对于我们运维乃至开发人员都有一定的借鉴意义。
书中的一些思想也令我印象深刻,例如SRE工程师要保证投入50%的时间在项目上、错误预算、命运之轮、事故总结等等,对于从业者有很大的启发。书中提到了很多思想,也提到了很多工具,我想不同的单位有不同的文化、制度背景,这种指导思想未必能够执行,但是书中提到的工具,却有被其他人利用的可能。因此,我就整理了书中提到的一些工具以及搜索是否有对应的开源工程,整理成下面的列表供大家参考。
如果大家发现有不全的,或者对于某个工具希望深入讨论的,欢迎给我留言。
Google 技术栈
| 功能介绍 | 产品 | 对标的开源产品 | 备注 | 
|---|---|---|---|
| 分布式共识系统、分布式锁服务 | Chubby 书中描述为强一致性存储系统 | ZooKeeper、Consul | |
| 监控服务 | Borgmon | Prometheus、Riemann、Heka、Bosun | |
| Photon | |||
| 分布式周期性任务系统 | Cron | ||
| 任务分发系统,集群管理系统 | Borg | ||
| 分布式文件系统 | GFS | ||
| Mesos | |||
| 管理报警响应及升级规则 | Escalator | ||
| 故障跟踪工具(被动收集监控系统发出的所有报警信息,同时提供标记、分组和数据分析功能) | Outalator | ||
| 数据流水线 | MapReduce、Flume | ||
| 大规模数据处理 | Workflow | Spanner ? | |
| Incident Command System | |||
| 构建系统 | Bazel | ||
| 分布式文件系统 | GFS | 
Borg 调度服务(2003),开源产品 Kubernetes
Borg Name Service BNS 名称解析系统
Bigtable
Blaze/Bazel 构建
Rapid 发布
Midas Pacakge Management MPM 打包
Sisyphus 发布自动化框架
Chubby 强一致性存储系统
Prober 端到端检测(黑盒监控 Black Box Monitoring)
Protocol Buffer (Protobuf)
Alert Manager 报警管理服务
Dapper 分布式组件跟踪工具
Incident Command System 应急事件管理
IRC机器人
Dagger 依赖注入(Dependency Injection)工具
Protocol Buffer 数据交换格式
Auxon 自动化容量规划
gRPC Google RPC 框架
Doorman 协作性分布式客户端节流系统
Zipking 业务流追踪
Stackdriver
两点吐槽
一、绕口的翻译
P158:一个测试系统可以检测出一个MTTR为0的Bug。
P253:这种设计类型在服务领头人的工作量是分片的。
P327:Google几乎没有处理大规模消费者产品运行不能直接控制的客户端代码的经验。
二、强大的客户端

全书各章节及小评
| 章节及名称 | 感想 | 
|---|---|
| 1 介绍 | |
| 2 Google 生产环境:SRE视角 | |
| 3 拥抱风险 | |
| 4 服务质量目标 | |
| 5 减少琐事 | |
| 6 分布式系统的监控 | |
| 7 Google 的自动化系统演进 | 自动化的价值,自动化的层次 | 
| 8 发布工程 | |
| 9 简单化 | |
| 10 基于时间序列数据进行有效报警 | |
| 11 on-call 轮值 | |
| 12 有效的故障排查手段 | |
| 13 紧急事件响应 | |
| 14 紧急事故管理 | |
| 15 事后总结:从失败中学习 | |
| 16 跟踪故障 | |
| 17 测试可靠性 | |
| 18 SRE部门中的软件工程实践 | |
| 19 前端服务器的负载均衡 | 不同数据中心之间的负载均衡策略最佳实践,基本的方案有DNS、VIP(网络负载均衡器 F5) | 
| 20 数据中心内部的负载均衡系统 | 从应用层面谈如何进行负载均衡,如何让各台服务器的使用率更加均衡,避免出现闲忙不均的情况。如何更准确的识别出后端的真实状态的方法:跛脚鸭状态。 | 
| 21 应对过载 | |
| 22 处理连锁故障 | |
| 23 管理关键状态:利用分布式共识来提高可靠性 | |
| 24 分布式周期性任务系统 | |
| 25 数据处理流水线 | |
| 26 数据完整性:读写一致 | |
| 27 可靠地进行产品的大规模发布 | |
| 28 迅速培养SRE加入on-call | |
| 29 处理中断性任务 | |
| 30 通过嵌入SRE的方式帮助团队从运维过载中恢复 | |
| 31 SRE与其它团队的沟通与协作 | |
| 32 SRE参与模式的演进历史 | |
| 33 其他行业的实践经验 | |
| 34 结语 | 
参考资料:
1、Google Borgmon
2、Google使用Borg进行大规模集群的管理-2015
3、基于 Prometheus 的数据库监控
4、Prometheus
5、Google Protocol Buffer 的使用和原理
6、Doorman: Global Distributed Client Side Rate Limiting
7、SRE Book notes
8、Zipkin
9、morgue 事故总结工具
10、Incident management at Google
11、TerraForm
12、
Google SRE 读书笔记 扒一扒SRE用的那些工具的更多相关文章
- 人生效率手册:如何卓有成效地过好每一天--By张萌姐姐--读书笔记
		读书笔记:<人生效率手册>:如何卓有成效地过好每一天--By张萌姐姐... 整本书看完的感受: 这本书主要讲的是生活中我们需要给自己一个目标,然后通过自己的努力去实现这个目标,书中说的很多 ... 
- Android驱动开发5-8章读书笔记
		Android驱动开发读书笔记 第五章 S5PV210是一款32位处理器,具有 ... 
- Web Scraping with Python读书笔记及思考
		Web Scraping with Python读书笔记 标签(空格分隔): web scraping ,python 做数据抓取一定一定要明确:抓取\解析数据不是目的,目的是对数据的利用 一般的数据 ... 
- 远程办公《Remote》读书笔记:中国程序员在家上班月入过六万不是梦
		这不是一本新书,这是一本很值得中国程序员看的老书,所以我不是来做卖新书广告的:) 但它的确是一本好书,这本书在Amazon上3个business categories排第一.作者Jason Fried ... 
- think straight系列读书笔记之《暗时间》
		一周一篇读书笔记,这是第零篇,为啥从零计数,你们懂的~ 大二读了<暗时间>,这本书带我进入了心理学的大门,让我开始关注思维,专注,效率,认知,记忆等东西.两年之后重读这本书,依然收获很 ... 
- 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化
		第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ... 
- 读书笔记:《梦断代码Dreaming in Code》
		读书笔记:<梦断代码Dreaming in Code> 拿到<梦断代码>书后,一口气翻了一遍,然后又用了3天时间仔细读了一遍,也不禁掩卷长叹一声,做软件难.虽难,仍要继续走下去 ... 
- web前端安全---读书笔记
		web前端安全---读书笔记 粗略的看完了Web前端黑客技术揭秘前两章了,由于自身的前端功力不深,当然也是初涉前端的安全问题,所以实话还是有些问题看不太明白的.在豆瓣看到的这本书,名字真心有点很肥主流 ... 
- React 读书笔记
		序言: 领导安排部门同事本月内看一本跟自己职业相关的书籍, 根基类的书籍已经看过了,重复阅读的意义不大,所以我平时看的都是视频,也许是视频作者没有出书的条件,也许是现在出书看的人越来越少了,也许有其他 ... 
随机推荐
- 【AtCoder】AGC021
			A - Digit Sum 2 从高位到低位数的第i位以前前缀都相同,第i位比当前位上的数小1的情况下,后面都填9 枚举一下然后计算最大的就好 #include <bits/stdc++.h&g ... 
- Codeforces 258C Little Elephant and LCM
			Little Elephant and LCM #include<bits/stdc++.h> #define LL long long #define fi first #define ... 
- Codeforces Round #440 (Div. 1, based on Technocup 2018 Elimination Round 2) C - Points, Lines and Ready-made Titles
			C - Points, Lines and Ready-made Titles 把行列看成是图上的点, 一个点(x, y)就相当于x行 向 y列建立一条边, 我们能得出如果一个联通块是一棵树方案数是2 ... 
- hibernate Validator 6.X 的学习,bean的约束(主要包括的是容器元素的验证)
			1. 四:案例二(property的验证) 1. 
- 033 Java Spark的编程
			1.Java SparkCore编程 入口是:JavaSparkContext 基本的RDD是:JavaRDD 其他常用RDD: JavaPairRDD JavaRDD和JavaPairRDD转换: ... 
- String、Date和Timestamp的互转
			begin 2018年8月17日19:09:49 String.Date和Timestamp的互转 String和Date的互转 关于String和Date的互转,在java8后会有不同.因为java ... 
- MySQL DROP DB或TABLE场景下借助SQL Thread快速应用binlog恢复方案
			[问题] 假设有这种场景,误操作DROP DB或TABLE,常规的恢复操作是还原全备份,并用mysqlbinlog追加到drop操作前的位置. 如果需要恢复的binlog的日志量比较大而我们只希望恢复 ... 
- linux 输入设备驱动
			<输入子系统简介> a:背景 内核的输入子系统是对“分散的”,“多种不同类别”的输入设备(键盘,鼠标,跟踪杆,触摸屏,加速度计等)进行“统一处理”的驱动程序.具有如下特点: a-1:统一各 ... 
- BZOJ3956: Count
			Description Input Output Sample Input 3 2 0 2 1 2 1 1 1 3 Sample Output 0 3 HINT M,N<=3*10^ ... 
- zoj 3662 第37届ACM/ICPC长春赛区H题(DP)
			题目:给出K个数,使得这K个数的和为N,LCM为M,问有多少种 f[i][j][k]表示选i个数,总和为j,最小公倍数为k memery卡的比较紧,注意不要开太大,按照题目数据开 这种类型的dp也是第 ... 
