如何绘制普罗米修斯的每日平均值



我必须从Prometheus度量创建一个可视化。我有一个计数器度量http_request_counter,我想显示一天内服务的总请求的摘要。当我们有石墨作为数据源时,我就是这样做的。

alias(summarize(sumSeries(consolidateBy(nonNegativeDerivative(http_request_counter.count), 'sum')), '1d', 'sum', false), 'TPS per day')

我看了一些文献,并尝试了increase(http_requests_total[24h]),它用t-24h值绘制了图。

有人能帮我在普罗米修斯中找到一个等效的summarize函数吗?

您需要sum(increase(http_requests_total[24h]))。它返回最后24小时内图形上每个点的请求总数。默认情况下,Grafana从Prometheus查询许多点,以便为图形的当前水平分辨率绘制平滑图形。在Grafana中编辑图形时,可以使用min step选项调整图形上的点数。另一种选择是使用具有外部查询所需步骤的子查询:

last_over_time(sum(increase(http_requests_total[24h]))[1d:1d])

它将以一天的步长返回连续线。这些步骤将在过去移动一天,例如,当天的步骤将包含前一天的请求数量。此偏移可通过负offset:消除

last_over_time(sum(increase(http_requests_total[1d] offset -1d))[1d:1d])

不幸的是,这个查询在Prometheus中无法开箱即用,因为默认情况下它不接受负偏移。启动Prometheus时,必须使用--enable feature=promql负偏移量命令行标志来启用它们。幸运的是,VictoriaMetrics中的MetricsQL默认支持负偏移,这是我工作的系统

我仍然不确定你想要的是每天的总请求数还是每天的平均请求数,下面是后者的表达式:

avg_over_time(
sum(rate(http_request_counter[5m])) by (method, some_other_label)[1d]
)

由于它是一个计数器,您需要应用rate来获得每秒向量,然后在需要时使用sum来聚合一些标签上的多个序列,并最终在一天内进行平均。

最新更新