我们使用Grafana Prometheus来监控我们的架构体系,最近我们添加了一些以业务为中心的指标,我们跟踪的一个计数器出现了问题。这是一个会话时间计数器。基本上,每次会话结束时,我们都会根据用户在该会话中花费的时间增加计数器。因此,如果用户花费2m使用该软件,计数器将增加120000毫秒。几天来,这种方法运行得非常好,但是从昨天开始,当我们在一个实例计数器和其他实例计数器之间有一个很大的差异,并且那个大计数器由于部分服务被重新启动而被重置时,我找不到一个有意义的单一统计面板不再。
下面是发生的情况的图表(此计数器有3个标签,导致
普罗米修斯图
该计数器跟踪的当前所有时间总计为13.8年,持续4天,但自计数器重置后,我的单个统计指标在24小时内为-20年(使用差异)或35年(使用范围)。如果不考虑计数器重置,这是正确的,因为diff和range将查看min/max/first/current值,但它不再是有用的度量。
如果我将时间范围设置为不包括计数器重置,则Diff和Range显示的值与预期值非常接近(我们的使用非常线性且可预测)。
singlestat面板公式如下所示
sum(dyno_app_music_total_user_listen_time{server=~"[[server]]", clusterId=~"[[clusterid]]"})
如何处理单统计指标的计数器中的重置?
我不确定我是否完全理解您的问题,但如果我必须总结一下,我所理解的是,您有一个带有3个标签的度量(导致50个不同的时间序列),并且您希望显示一个singlestat面板,将所有时间内的所有计数器相加。
在Prometheus中,处理计数器重置的方法是使用rell()
,或者,如果您想要绝对值add()
。因此,您编写查询的方式(假设您希望计数器始终增加)是:
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毫秒。有几天,这种方法非常有效,但自从昨天我们在一个实例计数器和其他实例计数器之间出现了很大的差异,并且由于部分服务被重新启
所以,这不是关于如何计算数字中的数字。它是如何计算每一个有多少。说: 多少个0,多少个1等等,我想把它放到树形图中 那我该怎么做呢? 数组将是任意大小的,所以我想我可以循环通过它,对于每个新的int,检查每个数字,如果那么等。但不确定如何增加KV映射中的值。
下面的代码给了我大约14位小数。我怎样才能把它修剪到小数点后2位?
我有大量的数据( 另外,是否是合适的数据结构?或者另一种数据结构会提供更好的复杂性 注意:我不能使用,因为如果使用,也可能存在重复项。查找中值将增加复杂性,因为我将从开始到中间循环以获取其值。
主要内容:1.订单系统在企业中的角色,2.订单系统与各业务系统的关系,3.订单系统上下游关系,4.订单系统的业务架构1.订单系统在企业中的角色 在搭建企业订单系统之前,需要先梳理企业整体业务系统之间的关系和订单系统上下游关系,只有划分清业务系统边界,才能确定订单系统的职责与功能,进而保证各系统之间高效简洁的工作。 2.订单系统与各业务系统的关系 2.1 对外系统 所有给企业外部用户使用的系统都在这一层,包括官网、普通用户使用的C端,还包括给商户使用的商家后台和在各个销售渠道进行分销的系统,比如与
我需要计算特定数字的计数(介于0之间 这适用于小数字输入:7 0输出:2描述:7!=5040有两个零,但对于大数字需要很长时间输入: