本文介绍了大计数器重置后的单状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们使用Grafana+Prometheus来监控我们的基础设施,最近我们添加了一些以业务为重点的指标,我一直在使用我们跟踪的一个计数器遇到问题。这是一个会话时间计数器。基本上,每次会话结束时,我们都会将该计数器增加用户在该会话中花费的时间。因此,如果用户使用该软件花费200万美元,则计数器将递增120000毫秒。有几天,这种方法工作得非常好,但自从昨天我们的一个实例计数器与其他实例计数器之间出现了很大的差异,而且那个大计数器由于部分服务重新启动而被重置后,我再也无法获得有意义的单一统计信息面板了。

这是发生了什么的图表(此计数器有3个标签,产生了>50个标签组合)

Prometheus graph

此计数器跟踪的当前所有时间总计为13.8年(4天),但自计数器重置以来,我的单个统计指标为-20年(使用DIFF)或35年(使用范围)24天。如果不考虑计数器重置,这是正确的,因为diff和range将查看最小/最大/第一/当前值,但它不再是有用的度量。

如果我将时间范围设置为不包括计数器重置,则diff和range都会显示与预期非常接近的值(我们的使用非常线性且可预测)。

Singlestat面板公式如下

sum(dyno_app_music_total_user_listen_time{server=~"[[server]]", clusterId=~"[[clusterid]]"})

如何在计数器中处理单个统计指标的重置?

推荐答案

我不确定我是否完全理解您的问题,但如果我必须总结一下,我的理解是您有一个具有3个标签的指标(结果是50个不同的时间序列),并且您希望显示一个单一统计信息面板,该面板将所有时间的所有这些计数器加在一起。

在普罗米修斯中处理计数器重置的方式是使用rate()或,如果您需要绝对值increase()。因此,您编写查询的方式(假设您想要所有时间的计数器增量之和)是:

sum(increase(dyno_app_music_total_user_listen_time{...}[100y]))
但是,请注意,随着时间的推移,这将变得越来越慢,因为普罗米修斯将不得不返回并加载所有时间段的50个时间序列,然后才能进行计算。(到加载的样本数量将超过普罗米修斯中配置的限制或可用内存量)。

比这更有用的(而且会随着时间的推移摆脱你昨天经历的峰值)是显示一个图表,显示你的计数器在更短的时间范围内的变化率:

sum(rate(dyno_app_music_total_user_listen_time{...}[1h]))

这将向您显示您可能选择在图表上显示的任何时间范围内前一小时的平均会话数。

这篇关于大计数器重置后的单状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 03:25