我有一个Minecraft服务器mc_player_online
指标。如果玩家在线,则显示1
,否则显示0
。
我可以用图表来显示有多少玩家在线。
我想计算Minecraft服务器上播放器的播放时间。输出可以制成表格以显示“ Player Steve的播放时间= 2d 3h 45m”。
我如何计算玩家在线的时间?
我还想计算服务器的利用率。因此,如果服务器的运行时间是从12:00到13:00,并且10个玩家在12:00同时登录并玩到12:10,则利用率应为10分钟(而不是10 * 10分钟)。
如何计算指标(mc_player_online
)超过阈值(0)多长时间?
[我假设mc_player_online
是每个玩家的指标(以玩家的名字作为标签)。
精度低:您显示的图表仅表示玩家在线时的情况。如果您想一次查看球员人数,则表达式为:
sum(mc_player_online)
要计算玩家花在Minicraft上的时间,您只能在表示为最后N <unit of time>
(过去7天,1个月...)的滑动窗口上进行操作。以上周播放的时间(以秒为单位(7天为604800秒))为例,它将是:
avg_over_time(mc_player_online[7d]) * 604800
您可以使用Grafana中的表格显示来显示漂亮的图像。如果要永远积累,就必须有recording rule并让Prometheus进行录音。
[利用率的计算类似于用户花费的时间的计算,但当至少一个用户在线时(使用bool
修饰符,表达式为1):
sum(mc_player_online) > bool 0
这(过去一个小时内:)>
avg_over_time((sum(mc_player_online) > bool 0)[1h:]) * 86400
注意,此表达式需要支持subquery(
version >= 2.7
)的Prometheus版本。如果您的Prometheus年龄较大,则可以使用记录规则。