使用Prometheus跟踪独立用户登录并在Grafana展示方案咨询
ShinyProxy登录用户指标统计落地方案
Prometheus存储适配性结论
完全适合作为该需求的后端存储。独立登录用户数属于典型的时序事件类统计场景,和Prometheus的设计定位完全匹配,依托你现有已经部署好的Prometheus+Grafana技术栈即可实现,不需要额外引入其他存储组件,查询性能可以满足日常运维看板的需求。
推荐使用的Prometheus指标类型
选用*Counter(单调递增计数器)*类型实现埋点:
- 指标名建议定义为
shinyproxy_user_login_total - 固定携带
user标签,存储用户的全局唯一标识(如用户名、工号、统一认证ID,禁止使用昵称、部门等非唯一值) - 可选携带
login_result标签,取值为success/failed,用于区分登录成功/失败事件 - 埋点触发时机固定在用户登录认证成功的逻辑节点,不要在普通接口请求处重复打点,避免产生冗余无效指标
不建议使用Gauge类型:Gauge仅记录瞬时状态值,无法回溯历史时间窗口内的事件分布,无法支撑任意时间周期的独立用户统计需求。
Grafana对应查询语句
在Grafana面板中选择Prometheus数据源,输入以下PromQL即可自动适配页面顶部选定的时间周期,返回对应周期内的独立登录用户数:
count( count_over_time(shinyproxy_user_login_total{login_result="success"}[$__range]) > 0 )
语句逻辑说明:
$__range是Grafana内置变量,会自动替换为用户在看板选择的时间范围长度,无需手动修改count_over_time(...)会筛选出选定时间范围内存在登录成功记录的所有用户时序- 外层
count()对符合条件的时序计数,最终结果就是该时间周期内的独立登录用户总数
配置注意事项
- Prometheus抓取ShinyProxy指标端点的间隔建议设置为15s-30s,间隔过长可能漏采短时间内发生的登录事件
- 若需要统计周期内实际启动应用的活跃用户而非仅登录用户,可将埋点触发时机调整为用户成功启动ShinyProxy应用的节点,指标名改为
shinyproxy_app_start_total,查询逻辑完全一致 - 单指标携带
user标签产生的时序基数等于你的平台总用户规模,十万级以内的用户量对Prometheus无额外性能压力,不需要做特殊调优
内容的提问来源于stack exchange,提问作者Bennimi
相关产品推荐
相关产品推荐

