当前位置: 首页 > 知识库问答 >
问题:

Grafana-大计数器复位后的单统计

谭吉星
2023-03-14

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

下面是发生的事情的图表(这个计数器有3个标签,导致超过50个标签组合)

普罗米修斯图

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

如果我将时间框架设置为不包括计数器复位,那么Diff和Range都会显示非常接近预期的值(我们的用法是非常线性和可预测的)。

singlestat面板公式如下所示

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

如何处理singlestat度量的计数器中的重置?

共有1个答案

赖杰
2023-03-14

我不确定我是否完全理解您的问题,但如果我必须总结,我理解的是,您有一个包含3个标签的度量(导致50个不同的时间序列),并且您希望显示一个singlestat面板,该面板将所有这些计数器在所有时间内总和在一起。

在Prometheus中处理计数器重置的方法是使用rate(),或者在需要绝对值的情况下使用arge()。因此,您编写查询的方式(假设您希望所有时间的计数器增加的总和)是:

sum(increase(dyno_app_music_total_user_listen_time{...}[100y]))

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

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

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

这将向您显示(一个近似值),在您可以选择显示在图表上的任何时间范围内,在前一个小时内的平均会话数。

 类似资料:
  • 我们使用Grafana Prometheus来监控我们的架构体系,最近我们添加了一些以业务为中心的指标,我们跟踪的一个计数器出现了问题。这是一个会话时间计数器。基本上,每次会话结束时,我们都会根据用户在该会话中花费的时间增加计数器。因此,如果用户花费2m使用该软件,计数器将增加120000毫秒。几天来,这种方法运行得非常好,但是从昨天开始,当我们在一个实例计数器和其他实例计数器之间有一个很大的差异

  • 在普罗米修斯中,我有一个单调递增计数器(在本例中为IF-MIB的ifHCInOctets)。 在Grafana中,我可以使用简单的查询< code>ifHCInOctets{job='snmp ',instance='$Device ',ifDescr=~'eth0'}创建一个图表,并通过在右上角选择所需的范围来查看不同时间范围内绘制的计数器。 这几乎正是我想要的。然而,我希望图形总是从零开始,然

  • 所以,这不是关于如何计算数字中的数字。它是如何计算每一个有多少。说: 多少个0,多少个1等等,我想把它放到树形图中 那我该怎么做呢? 数组将是任意大小的,所以我想我可以循环通过它,对于每个新的int,检查每个数字,如果那么等。但不确定如何增加KV映射中的值。

  • 下面的代码给了我大约14位小数。我怎样才能把它修剪到小数点后2位?

  • 我有大量的数据( 另外,是否是合适的数据结构?或者另一种数据结构会提供更好的复杂性 注意:我不能使用,因为如果使用,也可能存在重复项。查找中值将增加复杂性,因为我将从开始到中间循环以获取其值。

  • 主要内容:1.订单系统在企业中的角色,2.订单系统与各业务系统的关系,3.订单系统上下游关系,4.订单系统的业务架构1.订单系统在企业中的角色 在搭建企业订单系统之前,需要先梳理企业整体业务系统之间的关系和订单系统上下游关系,只有划分清业务系统边界,才能确定订单系统的职责与功能,进而保证各系统之间高效简洁的工作。 2.订单系统与各业务系统的关系 2.1 对外系统 所有给企业外部用户使用的系统都在这一层,包括官网、普通用户使用的C端,还包括给商户使用的商家后台和在各个销售渠道进行分销的系统,比如与