设计 SLO
本页面提供您在创建服务等级目标 (SLO) 之前可能需要的信息。
如需了解 SLO,请参阅服务等级目标概览。
SLI 类型和合规目标
Cloud Service Mesh 支持以下类型的服务等级指标:
- 延迟时间:服务返回请求的响应所需的时间(以毫秒为单位)。
- 可用性:服务成功响应的时间比例。
- 其他:基于可配置指标的可自定义 SLO 类型。
您还需要定义您希望从服务中实现的合规目标。一般来说,SLO 不应高于用户必要或有意义的内容。考虑用户可能会注意到服务降级的情况。例如,如果您的用户无法分辨服务的延迟时间是 300 毫秒还是 500 毫秒,请使用更高的值作为 SLO 中的延迟时间阈值。较低的值需要较高的成本才能满足,并且您的用户并不会注意到两者之间的差异。
设置合规目标时,考虑服务的最终用户要求。例如,员工在预订休假时间时使用的内部工具可能没有问题,目标可用性为 99%(每年大约 3 天的停机时间)。但是,网店的关键服务可能需要 99.999% 的可用性(每年约 5 分钟的停机时间)。
合规期
除了为 SLI 定义目标之外,SLO 还指定衡量 SLI 的时间段。例如,某一天内的 99% 可用性与一个月内的 99% 可用性不同。第一个 SLO 不允许 14 分钟以上的连续停机时间(24 小时 * 1%),而第二个 SLO 允许连续停机时间长达约 7 小时(30 天 * 1%)。
如果将 SLO 包含在与您的用户达成的服务等级协议 (SLA) 中,则合规期尤为重要。SLA 是与服务用户达成的合同,通常指定不满足 SLO 的后果。您与用户是否达成 SLA 是产品或业务决策,但出于监控目的,您仍然需要在创建 SLO 时指定合规期。
配置 SLO 时,您需选择合规期的类型:
日历:选择日历作为期间类型时,您还需指定期间长度,可以是天、周或月。期间不重叠,并且固定在日历的开始日期和结束日期中。只能在时间段结束时评估合规性。
滚动:选择滚动作为期间类型时,您还需指定期间长度的天数,例如 30 天。与日历期间不同,滚动期间没有固定的开始日期和结束日期。Cloud Service Mesh 通过滚动合规期持续评估 SLO。以前计算中的最旧数据将被替换为新数据,因此在当前计算中将弃用。滚动期间可提供更多的合规性衡量结果,因为每天您衡量的都是过去 30 天的合规性,而不是每月一次。但是,由于 SLO 状态会每天发生变化,服务可能会在合规和不合规之间摇摆。
错误预算
另一个重要的监控概念是错误预算。SLO 指定 SLI 和目标值,用于衡量服务在合规期的成功程度。SLO 的错误预算表示服务可以在其违反 SLO 之前不合规的总时间量。因此,错误预算为 100% - SLO%
。例如,如果您的滚动 30 天可用性 SLO 的合规目标是 99.99%,则错误预算为 30 天的 0.01%:每 30 天允许的停机时间刚刚超过 4 分钟。需要满足 100% SLO 的服务没有错误预算。
通过错误预算,您可以跟踪在合规期的剩余时间内在服务违反 SLO 之前允许的不良 SLI 衡量结果数。您可以使用错误预算来帮助管理维护任务,例如部署新版本。当错误预算接近耗尽时,不宜采取有风险的操作,例如部署新更新。相反,如果您在合规期快结束之前具有全部错误预算,则可能想要启动新功能,因为违反 SLO 的风险较低。
如果您在衡量具有日历合规期的 SLO 时,Service Mesh 会在最大值处启动错误预算并随着时间推移减少预算,从而在错误预算下降到低于 0 时触发 SLO 违规。Cloud Service Mesh 会在 合规期。
如果您在滚动合规期测量 SLO,则实际上您始终处在合规期的末尾。系统会不断删除旧数据点并不断添加新数据点,而不是从头开始。如果某个合规性不佳的时间段超过合规窗口,并且 SLO 合规,则错误预算会增加。在任何时间点,error budget ≥ 0
表示滚动 SLO 窗口合规,而 error budget < 0
表示滚动 SLO 窗口不合规。