应将工程时间用于最重要服务的最重要功能
服务质量指标(SLI)
SLI: Service Level Indicator
基本概念
定义 该服务的某项服务质量的一个具体量化指标。
特点
- 随着时间变化的度量值
意义
通过 SLI 测量出服务的质量指标,该值用于描述 SLO
示例
- 请求计数:5分钟内慢查询数量、每分钟慢请求数量。
- 响应延迟时间:慢查询的执行时间、慢请求的响应延迟
可测量指标分类
- 性能
- 响应时间(latency)
- 吞吐量(throughput)
- 请求量(qps)
- 实效性(freshness)
- 可用性
- 运行时间(uptime)
- 故障时间/频率
- 高可用
- 质量
- 准确性(accuracy)
- 正确性(correctness)
- 完整性(completeness)
- 覆盖率(coverage)
- 相关性(relevance)
- 内部指标
- 队列长度(queue length)
- 内存占用(RAM usage)
- 因素
- 响应时间(time to response)
- 修复时间(time to fix)
- 修复率(fraction fixed)
常见问题
- 要测量的指标是什么?
- 测量时的系统状态?
- 如何汇总处理测量的指标?
- 测量指标能否准确描述服务质量?
- 测量指标的可靠度(trustworthy)?
不同类型组建的潜在SLI:可用性、延迟、质量、时效性、正确率、覆盖率、持久性
举例说明: hotmail的downtime SLI
错误率(error rate)计算的是服务返回给用户的error总数
如果错误率大于X%,就算是服务down了,开始计算downtime
如果错误率持续超过Y分钟,这个downtime就会被计算在内
间断性的小于Y分钟的downtime是不被计算在内的。
测量时的系统状态,在什么情况下测量会严重影响测量的结果
- 测量异常(badly-formed)请求,还是失败(fail)请求还是超时请求(timeout)
- 测量时的系统负载(是否最大负载)
- 测量的发起位置,服务器端还是客户端
- 测量的时间窗口(仅工作日、还是一周7天、是否包括计划内的维护时间段)
如何汇总处理测量的指标?
- 计算的时间区间是什么:是一个滚动时间窗口,还是简单的按照月份计算
- 使用平均值还是百分位值,比如:某服务 X 的 ticket 处理响应时间 SLI 的
- 测量指标:统计所有成功解决请求,从用户创建 ticket到问题被解决的时间
- 怎么测量:用 ticket 自带的时间戳,统计所有用户创建的 ticket
- 什么情况下的测量:只包括工作时间,不包含法定假日
- 用于SLI的数据指标:以一周为滑动窗口,95%分位的解决时间
测量指标能否准确描述服务质量?
- 性能:时效性、是否有偏差
- 准确性:精度、覆盖率、数据稳定性
- 完整性:数据丢失、无效数据、异常(outlier)数据
测量指标的可靠度
- 是否服务提供者和客户都认可
- 是否可被独立验证,比如三方机构
- 客户端还是服务器端测量,取样间隔
- 错误请求是如何计算的