如何对小数据集的Prometheus计数器进行求和计算
解决小数据集下Prometheus统计用户操作总数的问题
你的场景里,用户操作数据量极小(每月仅十几个),increase()函数依赖足够的样本间隔计算增量,确实容易出问题。试试用下面的查询语句:
sum(last_over_time(user_actions_total[$__range]) - first_over_time(user_actions_total[$__range])) by (user_id)
原理很直白:
first_over_time(user_actions_total[$__range])会取时间范围内该用户计数器的第一个样本值last_over_time(user_actions_total[$__range])取时间范围内的最后一个样本值- 两者相减就是这段时间内该用户的操作增量(也就是总数),最后按
user_id聚合求和
如果你的计数器从来没有重置过(比如每个用户的操作都是从0开始累积),也可以简化成:
sum(last_over_time(user_actions_total[$__range])) by (user_id)
不过还是推荐第一种写法,能兼容计数器重置的情况,更稳妥。
内容的提问来源于stack exchange,提问作者user963935
相关产品推荐
相关产品推荐

