Prometheus 如何处理服务器上的计数器

Prometheus how to handle counters on server

我有文章,每篇文章我都想阅读计数

# TYPE news_read_counter2 Counter
news_read_counter2{id="2000"} 168

现在服务器上的计数器保存在 redis\memcached 中,因此它们可以不时重置,所以过了一会儿,redis 机器重新启动并且服务器没有最后一个 news_read_counter 数字如果我再次从零开始

# TYPE news_read_counter2 Counter
news_read_counter2{id="2000"} 2

现在查看 news_read_counter2{id="2000"} 图表,我看到计数器下降到 2 而文档说:

A counter is a cumulative metric that represents a single numerical value that only ever goes up.

所以现在要跟踪 news_read_counter 我需要将数据保存到数据库中,然后我回到需要使用 mysql 处理我的数据的起始区域

这里是 redis 重启后的计数器图像:

允许将计数器重置为 0,因此无需在此处执行任何特殊操作来处理它。有关详细信息,请参阅 http://www.robustperception.io/how-does-a-prometheus-counter-work/

建议使用 client library,它将为您处理所有这些。

此外,按照惯例,您应该为计数器添加 _total 后缀,以便指标应为 news_reads_total.

您通常不想像您在示例中那样查看计数器的总数,因为一旦您实际尝试分析性地使用它,它就没有多大意义。

这个想法是你想知道在一段时间内增加。例如,你想知道最近7天、本月到目前为止、最近30天等的文章总浏览量吗?

and this article 很好地解释了所有这些,但这里有一些例子。出于演示目的,我使用了一个名为 walks_started_total.

的计数器

问题

查询:`walks_started_total`

解决方案 1

查看上周的总数:`increase(walks_started_total[1w])`

解决方案 2

在 1 分钟内:`increase(walks_started_total[1m])`