了解SLI、SLO和SLA
概念解释
服务水平指标(SLI)
SLI代表目前服务的状态,例如可以是最基本的接口成功率、p99响应时间,也可以是一些业务指标,例如用户投诉率之类的。是可量化,是可确定的。
服务水平目标(SLO)
SLO是目标,SLO是我们希望将特定的SLI视为健康服务的目标范围。SLO必须定义为给定时间范围内的一个具体值。例如一天内成功率不得低于99.9%。
服务水平协议(SLA)
SLA是签订的协议中包含的SLO,如果未满足该SLA,将受到处罚。也不是所有的公司和业务都需要签订协议。
如何选择合适的指标
选择指标和目标的目的是随时使用客观指标评估团队是否能够利用新功能进行创新,或者稳定性是否有可能降至客户可接受的水平以下,因此需要更多的关注和资源。
以用户体验为中心
定义好的SLI和匹配的SLO,是简洁地解释如何为客户提供愉快的用户体验的核心。如果客户对于两秒内加载页面感到满意,则无须设置750毫秒内加载页面的目标。所以,要找到用户满意的最低标准,例如2s,超过两秒就是不可接受的,那么可以设置SLO为页面加载时间p99不得低于2s。
量力而行
工程时间是有限的资源,所以在选择SLO时必须注意不要过于追求完美。例如1s内加载好就可以了,非要设置20ms内加载完毕;或者成功率为100%,我觉得这些都很难达到或者要付出很大的成本才行,投入产出比很低,没有必要。
例如,有遇到一个指标是首页加载时间p99为20ms,为什么是20ms,为什么不是200ms,20ms是根据哪些数据推导出来的?我敢肯定没有人能说的清楚。被定这种目标就很无奈,很难达到。
平衡现在和未来
有些指标是前导型的指标,例如增长率等等,可以适当增加这类指标来提前预防问题。例如流量增长率和设备性能不匹配,有可能导致服务处理不过来。这样可以从一定程度上提前保护用户体验。
告警
告警最好能设置不同的阈值。例如成功率低于95%微信告警,低于90%则电话告警。这样就会有一个信号,收到电话告警一定是比较严重的问题,避免被告警海洋淹没导致麻木。
回想起以前工作的日子,经常在工作时间收到电话告警,上去一看,原来就是正常的网络抖动。这还算好的,凌晨睡梦中被告警电话叫起才烦人,上线一看其实就是抖动或者问题严重程度不高,完全可以上班再处理。现在想想,这就是阈值设置的不好。