首页 > 解决方案 > Prometheus 中类似 StatsD 的计数器行为

问题描述

StatsD“计数器”指标类型描述为:

gorets:1|c 这是一个简单的计数器。将 1 添加到“gorets”存储桶中。config.deleteCounters在每次刷新时,当前计数被发送并重置为 0。如果刷新时的计数为 0,那么您可以通过设置(仅适用于石墨后端)选择不为此计数器发送任何指标。Statsd 将在每次刷新时发送速率和计数。

实现方式不同,但原理是一样的:

每次刷新时,都会发送当前计数并将其重置为 0。

将其发送到兼容的后端,并使用任何兼容的工具(例如 Grafana)绘制它,会显示如下图:

3 ┃
2 ┃
1 ┃    █
0 ┗━━━━━━━━━━━━━━

换句话说,计数值将存在于您发出计数器并在之后立即返回零的“桶”中。

使用 Prometheus 似乎只有计数器(它们是持久的,并且不能递减)和仪表。如果 Prometheus 计数器增加,它将读取新的高水位线值,直到进程重新启动。

Prometheus 还提供 Gauges,可以提高和降低其值,但是在某些情况下不存在合适的“负面”操作,并且没有办法在事后将 Gauge 减回零。

Prometheus 提供了一种rate()功能,似乎暗示当在柜台上运行时,可以采用仅显示积极变化的汇率(不可能出现负面变化)。

我宁愿避免向rate()我的所有图表添加修饰符。

最接近模拟 StatsD 计数器行为的 Prometheus 惯用方法是什么?

标签: prometheusstatsd

解决方案


Prometheus 等价物是一个计数器。最大的区别在于状态存在于应用程序内部的内存中,而不是 StatsD 中的网络上。在 Prometheus 中使用rate()所有计数器是正常的。

在这次谈话中有更多关于细节的细节。


推荐阅读