Prometheus 度量时间度量值高于阈值

Prometheus 度量时间度量值高于阈值,prometheus,Prometheus,我的Minecraft服务器有一个指标,mc\u player\u online。如果玩家在线,则显示1,否则显示0 我可以用图表显示有多少玩家在线 我想计算玩家在Minecraft服务器上的游戏时间。输出可以列表显示“玩家史蒂夫的游戏时间=2d 3h 45m” 我如何计算玩家在线的时间 我还想计算服务器的利用率。因此,如果服务器从12:00运行到13:00,并且有10名玩家在12:00同时登录并一直玩到12:10,那么利用率应该是10分钟(不是10*10分钟) 如何计算一个指标(mc\u p

我的Minecraft服务器有一个指标,
mc\u player\u online
。如果玩家在线,则显示
1
,否则显示
0

我可以用图表显示有多少玩家在线

我想计算玩家在Minecraft服务器上的游戏时间。输出可以列表显示“玩家史蒂夫的游戏时间=2d 3h 45m”

我如何计算玩家在线的时间

我还想计算服务器的利用率。因此,如果服务器从12:00运行到13:00,并且有10名玩家在12:00同时登录并一直玩到12:10,那么利用率应该是10分钟(不是10*10分钟)


如何计算一个指标(
mc\u player\u online
)超过阈值(0)的时间长度?

我假设
mc\u player\u online
是每个球员的一个指标(球员的名字作为标签)

稍微精确一点:您显示的图表仅指示玩家何时在线。如果您希望在任何时间看到玩家的数量,则表达式为:

sum(mc_player_online)
avg_over_time(mc_player_online[7d]) * 604800
要计算玩家在微型飞行器上花费的时间,您只能在一个滑动窗口上进行计算,该窗口表示为最后一个
N
(过去7天,1个月…)。以上周播放的时间为例,以秒为单位(7天为604800秒),它将是:

sum(mc_player_online)
avg_over_time(mc_player_online[7d]) * 604800
您可以使用Grafana中的表显示来获得漂亮的显示。如果你想从永远开始积累,你必须有一个记录,让普罗米修斯来记录

利用率的计算类似于用户花费时间的计算,但当至少一个用户在线时,表达式的计算结果为1(使用
bool
修饰符):

这变成(在过去一小时内):


请注意,此表达式需要支持(
version>=2.7
)的普罗米修斯版本。如果你的普罗米修斯年龄较大,你可以按照录音规则来做。

谢谢,这一切都很好,除了我遇到的一个问题。如果一个玩家加入,那么他们的距离向量将比其他玩家存在的时间更短。例如,如果他们在1天前加入,则他们的范围向量在1小时内正确计算,但随后乘以7天,因此他们的游戏时间显示为7天。要解决这个问题,他们的范围向量需要一个默认值0,如果它不存在。这能做到吗?好的,修好了
avg_over_time(mc_player_online[7d])*count_over_time(mc_player_online[7d:1s])
返回以秒为单位的播放时间。你能更新你的答案吗?我会接受的实际上,这可以进一步简化,因为它是在计算
(sum/count)*count
。因此,只需执行
sum\u over\u time(mc\u player\u online[7d:1s])
返回7天内播放的秒数,无需乘以秒数。总利用率可以简化为
sum\u over\u time((sum(mc\u player\u online)>bool 0)[1h:1s])