我有一个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
也有,但没有运气)
1条答案
按热度按时间vktxenjb1#
为了便于理解,我将分两步进行解释:
第一:你可以使用
count
连同by
功能,以便对user_id
你的度量单位。您的度量有点混乱,因为度量的名称等于标签的名称。我将尝试编写您的查询,并将其与我的查询进行比较,以便检查结果。举个例子,我想得到度量
http_server_requests_seconds_bucket
并按标签进行分组pod
,然后我数。对于您的度量,它将如下所示,其中您的度量是第一个度量
user_id
,您可以按标签分组user_id
,然后计算:第二:如果您想要计算预定义的时间量,那么您必须使用
rate
功能。假设你在最后5分钟想要。我使用rate(MU_METRIC)[5m]
然后我按标签分组pod
使用by
关键字,然后我计数。对于您的度量,它将如下所示:
参考文献的例子可以在这里找到。