SLI 与 SLO
SLI(服务质量指标) 指的是一个服务的某项服务质量的一个具体量化指标(如请求延迟、错误率、QPS)。
SLO(服务质量目标) 则是服务的某个 SLI 的目标值,例如,我们可以定义一个SLO,要求 95% 的请求的延迟小于 100ms。
SLI与SLO是传统运维转型SRE绕不过的主题,它们是SRE实践的核心。传统运维通常追求 100% 的可用性,但这个目标是不可能实现的,通过实施SLO,可以带来如下好处:
-
监控应用程序的行为,以便更好地改进应用程序
-
确定工作优先级,即开发新特性还是保障服务稳定性
-
作为控制手段使用,通过比较SLI与SLO,决定某项操作是否执行
-
建立用户预期
定义 SLI
要实施 SLO,首先要定义出来 SLI,而 Prometheus 监控则是定义 SLI 的一种很好的工具,下面将介绍在 Perl 程序中暴露 Prometheus Metric 来定义 SLI。
在 Perl 程序中暴露 Prometheus Metric
在 Perl 程序中暴露 Prometheus Metric,我们用到了两个模块:
-
Dancer2 [1]:Perl 的一款轻量级Web应用程序框架。
-
Net::Prometheus [2]: Perl 的 Prometheus 客户端库