[英]How to plot average per day from Prometheus
我必须从 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-negative-offset 命令行标志启用它们。 幸运的是,在 VictoriaMetrics 的MetricsQL中默认支持负偏移 - 我工作的系统。
我仍然不确定您是想要每天的总请求数还是每天的平均请求数,这是后者的表达式:
avg_over_time(
sum(rate(http_request_counter[5m])) by (method, some_other_label)[1d]
)
由于它是一个计数器,因此您需要应用 rate 来获得每秒向量,然后在需要时使用 sum 来聚合某些标签上的多个系列,最后平均超过一天。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.