使用 Loki LogQL 计算唯一值的数量

The*_*age 6 grafana grafana-loki logql

我有一个带有 UserID= 标签的日志流。我正在尝试计算一小时内唯一用户的数量。

这是我的日志流的示例:

ts=2022-09-16T10:52:54.21344541Z level=INFO UserID=65166 elapsed=2.364015ms
ts=2022-09-16T10:52:51.580617785Z level=INFO UserID=24413 elapsed=2.324235ms
ts=2022-09-16T10:52:48.947248244Z level=INFO UserID=65166 elapsed=2.818146ms
ts=2022-09-16T10:52:41.51854716Z level=INFO UserID=24413 elapsed=2.633352ms
ts=2022-09-16T10:51:14.584272582Z level=INFO UserID=24413 elapsed=2.04884ms
ts=2022-09-16T10:51:14.45564065Z level=INFO UserID=65166 elapsed=4.889566ms
Run Code Online (Sandbox Code Playgroud)

我设法实现的最接近的事情是计算每个用户的请求数量,但我只需要知道给定时间范围内唯一用户的数量。这是我所拥有的:

count(count_over_time({app="app"} | logfmt [1h])) by (UserID)

The*_*age 10

经过一番尝试后,我意识到我可以将上述查询包装在另一个查询中count(),并以这种方式获取唯一用户的数量。为了完整起见,以下是查询:

count(count(count_over_time({app="app"} | logfmt [1h])) by (UserID))

这就是我得到的:

在此输入图像描述