测微计:在一段时间内,系统中没有活动用户?

7lrncoxx  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(352)

我有一个spring boot应用程序,可以将度量值推送到普罗米修斯。
我想跟踪预定义时间内系统中活动用户的数量。为此,我将用户_id发布为gauge metric中的标记,如下所示,

user_id{user_id="test-user-id-2"} 1.0
user_id{user_id="test-user-id-5"} 1.0
user_id{user_id="test-user-id-1"} 1.0
user_id{user_id="test-user-id-0"} 1.0
user_id{user_id="test-user-id-9"} 1.0

这个系统是内部的,只有大约100个用户,我们预计用户数量不会增长。唯一的用户id用作标记,因为我们在集群中运行相同的示例,并且不希望集中的位置保留此数据。这是一个设计成无状态的简单系统。
现在,我不希望在一段时间内报告上述指标。例如,我想知道过去5个月有多少用户是活跃的。我试过了 rate 函数,但无法获得所需的结果。有没有办法在特定时间段内获得这些指标的总和我试过了 sum_over_time 也有,但没有运气)

vktxenjb

vktxenjb1#

为了便于理解,我将分两步进行解释:
第一:你可以使用 count 连同 by 功能,以便对 user_id 你的度量单位。您的度量有点混乱,因为度量的名称等于标签的名称。我将尝试编写您的查询,并将其与我的查询进行比较,以便检查结果。
举个例子,我想得到度量 http_server_requests_seconds_bucket 并按标签进行分组 pod ,然后我数。

count(http_server_requests_seconds_bucket) by (pod)

对于您的度量,它将如下所示,其中您的度量是第一个度量 user_id ,您可以按标签分组 user_id ,然后计算:

count(user_id) by (user_id)

第二:如果您想要计算预定义的时间量,那么您必须使用 rate 功能。假设你在最后5分钟想要。我使用 rate(MU_METRIC)[5m] 然后我按标签分组 pod 使用 by 关键字,然后我计数。

count by (pod) (rate(http_server_requests_seconds_bucket[5m]))

对于您的度量,它将如下所示:

count by (user_id) (rate(user_id[5m]))

参考文献的例子可以在这里找到。

相关问题