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

Grafana中基于Loki统计Nginx日志每小时活跃用户遇系列数超限

解决Loki查询系列数超限的每小时活跃用户统计方案

方案1:使用count_distinct_over_time直接统计(推荐)

Loki的count_distinct_over_time函数专门用于统计指定时间窗口内某字段的不同值数量,完全匹配活跃用户数需求,且不会生成大量中间系列(无需先按用户分组再聚合),从根源避免系列数超限问题。

查询语句:

count_distinct_over_time(
  {container="/nginx", hostname="whirlpool-prod"} 
  | json 
  | log_http_headers_authorization != "" 
  [1h]
)
  • 逻辑说明:先过滤目标容器、主机的日志,解析JSON结构,排除空的authorization字段,最后统计1小时窗口内不同authorization值的数量(即活跃用户数)。

方案2:调整聚合逻辑减少中间系列(兼容旧版Loki)

如果你的Loki版本不支持count_distinct_over_time,可以通过调整聚合顺序,先按小时窗口统计用户存在性,再聚合计数:

查询语句:

count(
  sum by (log_http_headers_authorization) (
    count_over_time(
      {container="/nginx", hostname="whirlpool-prod"} 
      | json 
      | log_http_headers_authorization != "" 
      [1h]
    )
  )
)
  • 优化点:将原查询的1m窗口改为1h窗口,每个用户仅生成1条系列数据(而非每1m一条),大幅减少中间系列数量。若仍触发限制,可在FluentBit侧添加过滤规则,仅保留含有效authorization的日志,进一步降低数据量。

额外优化建议

  • 尽量使用新版Loki,其对聚合函数的性能和系列数限制处理更友好;
  • 在Grafana面板时间范围设置中,避免一次性查询过长时间(如超过24小时),可通过面板时间分段展示规避。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:52:36