我们使用 Grafana + Prometheus 来监控我们的基础设施,最近我们添加了一些以业务为中心的指标,我一直在使用我们跟踪的一个计数器时遇到问题。这是一个会话时间计数器。基本上,每次会话结束时,我们都会将该计数器增加用户在该会话中花费的时间。因此,如果用户使用该软件花费 2m,则计数器将增加 120000 ms。几天来,这种方法效果很好,但是从昨天开始,当我们在一个实例计数器和其他实例计数器之间存在很大差异时,并且由于部分服务重新启动而重置了那个大计数器,我无法获得有意义的单一统计面板了。
这是所发生情况的图表(此计数器有 3 个标签,导致 >50 个标签组合)
此计数器跟踪的当前所有时间总计为 13.8 年,为期 4 天,但自从计数器重置后,我的单一统计指标在 24 小时内为 -20 年(使用差异)或 35 年(使用范围)。如果您不考虑计数器重置,这并没有错,因为 diff 和 range 将查看 min/max/first/current 值,但它不再是一个有用的指标。
如果我将时间范围设置为不包括计数器重置,则 Diff 和 Range 都显示非常接近预期的值(我们的使用非常线性且可预测)。
单统计面板公式如下所示
sum(dyno_app_music_total_user_listen_time{server=~"[[server]]", clusterId=~"[[clusterid]]"})
如何处理单统计指标的计数器中的重置?