You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Loki/Grafana查询中统计唯一active_user_id的数量

解决Loki中统计时间段内唯一活跃用户数的问题

要统计指定时间段内唯一active_user_id的数量,你需要调整LogQL的时间范围和聚合方式,以下是正确的查询写法:

方法一:使用sum by + count

count(sum by (active_user_id) (count_over_time({type="request"}[$__range])))

方法二:使用count_values + count

count(count_values("active_user_id", {type="request"}[$__range]))

为什么之前的查询不生效?

  • 第一个查询count by (active_user_id) (count_over_time({type="request"}[$__interval])):使用了$__interval(仪表盘的时间间隔),会按每个时间分片统计用户请求数,返回的是每个分片下的用户分组结果,因此你看到97个独立条目,而非总数。
  • 第二个查询count(count by (active_user_id) (count_over_time({type="request"}[$__interval]))):同样基于$__interval分片,count统计的是所有时间分片下的分组条目总数(包含不同分片的重复用户),因此得到的是时间戳相关的272,而非唯一用户数。

关键说明

  • $__range代表整个查询的时间段(而非分片间隔),确保统计的是全局范围内的用户数据。
  • sum by (active_user_id)会将整个时间段内每个用户的请求数求和,生成每个用户唯一的一条记录;外层count则统计这些记录的数量,即唯一用户数。
  • count_values会直接统计active_user_id标签的所有唯一值,外层count则统计这些唯一值的总数。

内容的提问来源于stack exchange,提问作者Inconsiderable Arse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:17:18