Prometheus / Grafana 反单调性
Posted
技术标签:
【中文标题】Prometheus / Grafana 反单调性【英文标题】:Prometheus / Grafana counter monotonicity 【发布时间】:2017-03-18 00:48:15 【问题描述】:有没有办法让 Grafana 中的 Prometheus 计数器真正单调?
每当服务器重新启动时,我服务器上的计数器(使用 Prometheus Java 库)都会重置,并且 Grafana 中的计数器也会降为零。我在 Prometheus 查询的文档中找不到方法。 Java 库也没有提供使 Counter 在重新启动时保持不变的方法。
【问题讨论】:
您是否找到了如何从计数器返回单调递增值的解决方案? 不,我没有:( 【参考方案1】:使用计数器,您几乎从不关心值本身,而只关心它的增长率。因此,计数器总是要与rate()
或increase()
函数结合使用。这些函数会为您处理计数器重置(任何非单调增加都将被视为计数器重置并在速率计算中被抵消)。
【讨论】:
好吧,我几乎从不在乎,除非在这种情况下我会。这就是我问这个问题的原因。当我通过计数器重置处理查找计数器的总价值时,rate() 和 increase() 函数似乎对我没有帮助。 正如@brian-brazil 提到的, rate() 和 increase() 处理计数器重置,因此将给出总计(在您的范围向量中定义的时间段内)。如果您使用这种方法看到不一致的值,我遇到的一个问题是当多个工作人员正在运行并且您没有使用多进程收集器时,在这种情况下会错误地识别计数器重置。rate
和 increase
的问题是它们只会在特定时间内尊重计数器值。据我了解@raimohanska,他们希望从一开始就有一个连续的计数器。这里的问题是,prometheus 仅将时间线存储一段时间,因此 30 天后(或您的配置方式)它会删除旧数据。一般来说,每天或每月的增加比所有时间的增加更有帮助,因为您可以轻松地将其与前一天的值进行比较。一个绝对高的数字很难与您前几天的数字相比【参考方案2】:
解决此问题的方法是使用处理计数器重置的rate
函数。
【讨论】:
我的理解是 rate() 不能帮助我通过计数器重置处理获得“总计”。我错了吗?以上是关于Prometheus / Grafana 反单调性的主要内容,如果未能解决你的问题,请参考以下文章
prometheus-operator结合grafana展示k8s监控
Grafana v9.0正式发布-推出Prometheus和Loki可视化查询构建器
性能监控之 Blackbox_exporter+Prometheus+Grafana 实现网络探测