基于Prometheus计数器设计SLO

问题描述 投票:0回答:2

我想根据下面描述的两个计数器设计一个SLI/SLO:

requestedCounter = 每次向下游服务发送请求时都会增加 Prometheus 计数器

confirmedCounter = Prometheus 计数器,每次收到确认通知下游服务已处理请求时都会递增

用 = 1- [ sum(rate(confirmedCounter)) / sum(rate(requestedCounter)) ] 来模拟不良事件/总事件是否有意义?或者使用像 count_over_time 这样的东西比 rate 更有意义?

任何其他建议也将不胜感激,因为我是 Prometheus SLI/SLO 的新手。

prometheus grafana monitoring sli
2个回答
0
投票

count_over_time
不适用于您的用例,因为它会计算指定时间段内每个系列的样本数。

例如,查看此查询here.

您似乎对两个

counter
指标的增长率比率感兴趣,因此使用
rate
更有意义。

构建 PromQL 查询时要注意的一件事是仔细了解 Operators 的工作原理(参见文档here)。

对于除法,您的分子或分母可以根据查询计算为标量或向量。我建议首先在 Prometheus 表达式浏览器中尝试单独评估分子和分母,以确保最终查询(在进行除法或乘法之后)是正确的。


0
投票

Prometheus counters 计算事件的数量。 count_over_time() 函数计算每个匹配时间序列存储在数据库中的原始样本的数量。因此此函数不适用于 Prometheus 计数器指标。您需要使用 increase() 来计算方括号中指定后视窗口中的事件数。例如,

increase(http_requests_total[1h])
计算过去一小时内的 http 请求数。

因此,对于您的情况,以下查询应返回过去一小时内失败请求的份额:

1 - increase(confirmedCouner[1h]) / increase(requestedCounter[1h])
© www.soinside.com 2019 - 2024. All rights reserved.