我应该如何实现PromQL查询,该查询生成错误百分比> 0.2%的所有Http Api端点的报告

时间:2018-07-06 23:31:15

标签: prometheus

我正在检测一个称为“普罗米修斯”的反制指标 “ 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

1 个答案:

答案 0 :(得分:0)

  

我的问题是,如果我直接在柜台上求和,而不是使用汇率函数,那会不正确吗?

取决于您的意思是不正确。自服务器启动以来,它将为您提供错误率,这很可能不是您想要的。而且,如果您有一台以上的服务器,那么较早启动的服务器将比最近启动的服务器重。特别地,举一个极端的例子,如果一台服务器在500天前启动并且没有发生错误,而另一台服务器刚刚重新启动并且仅在提供错误,则在触发警报之前将需要整整一天的错误。

此外,最后不需要and sum(...) > 0条件。如果计数器(或其5分钟的速率)为零,则该组标签的结果将为NaN,而不是> 0.2