我正在检测一个称为“普罗米修斯”的反制指标 “ http_requests_by_endpoint_and_status”包含2个标签,分别为“ http_endpoint”和“ http_status”。我想使用此计数器来生成PromQL查询,以生成报告以跟踪哪些api端点存在错误,使得错误百分比> 0.2%。
我将查询的结构构造为:
100*(sum(rate(http_requests_by_endpoint_and_status{http_status="500"}[5m])) by
(http_api_endpoint) / sum(rate(http_requests_by_endpoint_and_status[5m])) by
(http_api_endpoint)) > 0.2 and
sum(rate(http_requests_by_endpoint_and_status[5m])) by (http_api_endpoint)) >
0
我的问题是,如果我直接在柜台上求和,而不是使用汇率函数,那会不正确吗?
例如
100*(sum(rate(http_requests_by_endpoint_and_status{http_status="500"}[5m])) by
(http_api_endpoint) / sum(rate(http_requests_by_endpoint_and_status[5m])) by
(http_api_endpoint)) > 0.2 and
sum(rate(http_requests_by_endpoint_and_status[5m])) by (http_api_endpoint)) >
0
答案 0 :(得分:0)
我的问题是,如果我直接在柜台上求和,而不是使用汇率函数,那会不正确吗?
取决于您的意思是不正确。自服务器启动以来,它将为您提供错误率,这很可能不是您想要的。而且,如果您有一台以上的服务器,那么较早启动的服务器将比最近启动的服务器重。特别地,举一个极端的例子,如果一台服务器在500天前启动并且没有发生错误,而另一台服务器刚刚重新启动并且仅在提供错误,则在触发警报之前将需要整整一天的错误。
此外,最后不需要and sum(...) > 0
条件。如果计数器(或其5分钟的速率)为零,则该组标签的结果将为NaN
,而不是> 0.2
。