B. Google SRE指导思想
拥抱风险
服务质量目标
- 服务质量指标
- 常见指标
- 错误率
- 系统吞吐量
- 可用性
- 持久性:数据能够完整保存的时间
- 等等
- 分类
- 通用的指标:正确性
- 用户可见的服务系统:可用性、延迟、吞吐量
- 存储系统:延迟、可用性和数据持久性
- 大数据系统:吞吐量、端到端延迟
- 汇总
- 平均值:掩盖分布变化和受长尾效应影响
- 分布(百分位)
- 标准化:需要形成SLI模板
- 汇总间隔:每 1 分钟汇总一次
- 汇总范围:集群中的全部任务
- 度量频率:每10秒一次
- 包含哪些请求:从黑盒监控任务发来的 HTTP GET请求
- 数据如何获取:通过监控系统获取服务器端信息得到
- 数据访问延迟:从收到请求到最后一个字节被发出
- 常见指标
- 服务质量目标:某个指标的目标值或者目标范围
- 目标定义
- 目标的选择
- 不要仅以目前的状态为基础选择目标:例如系统重构会影响到SLO等
- 保持简单:质量指标尽可能的简单
- 避免绝对值:目标以区间为宜,系统在没有延迟增长的情况下无限扩张或许能够做到,但是代价也是巨大的
- SLO越少越好
- 不要追求完美
- 案例:Chubby:计划内停机。当Chubby的SLO远超预期的时候,会人为地停止服务,从而找出哪些服务对Chubby不合理的依赖。
- 服务质量协议
分布式系统监控
- 观点
- Google趋向于使用监看和快速的监控系统配合高效的工具进行事后分析。我们会避免任何“魔法”系统 — 例如试图自动学习阈值或者自动检测故障原因的系统
- 监控类型
- 白盒监控
- 黑盒监控
- 4个黄金指标
- 延迟:处理某个请求所需要的时间
- 流量:HTTP请求数量,或者网络I/O速率,或者并发会话数
- 错误:有可能是显示错误、隐式错误(返回错误信息)、或者策略性错误(比如说超过1s返回就算错)
- 饱和度:很多服务在资源占用达到100%之前,性能就已经严重下降了
- 长尾问题:例如平均响应时间100ms,但是1%的请求会占到5s
- 分位数统计
- 分组:比如说010ms请求数,30100ms请求数,等等
- 不同指标采用不同的精度
- 比如
- CPU 1分钟的平均负载,可能措施峰值
- 年度可用性在99.9%的服务每分钟检测1~2次可能过于频繁
- 年度可用性在99.9%的服务每分钟检测磁盘容量可能过于频繁
- 等等
- 比如
- 战术
- 短期可用性和长期可用性之间的冲突和平衡
自动化系统
- 琐事
- 手动性
- 重复性的
- 可以被自动化的
- 战术性的
- 没有持久价值
- 与服务同步线性增长
- 价值
- 一致性:如果是人工操作,无法保证针对同一个故障每次操作结果都是一致的
- 平台性
- 修复速度快
- 行动速度更快
- 节省时间
- 类型
- 脚本自动化
- Borg/Kubernetes
- 上线自动化