13

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

# 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 而文档说:

计数器是一个累积度量,它代表一个只会上升的单个数值。

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

这是redis重新启动后的计数器图像: 在此处输入图像描述

4

2 回答 2

14

计数器被允许重置为 0,所以这里不需要做任何特殊的处理。有关详细信息,请参阅http://www.robustperception.io/how-does-a-prometheus-counter-work/ 。

建议使用可以为您处理所有这些的客户端库。

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

于 2016-05-31T14:46:16.697 回答
9

您通常不希望以您在示例中的方式查看计数器的总数,因为一旦您实际尝试分析性地使用它,它就不是很有意义。

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

这个答案这篇文章很好地解释了这一切,但这里有一些例子。出于演示目的,我使用了一个名为walks_started_total.

问题

查询:`walks_started_total`

在此处输入图像描述

解决方案 1

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

在此处输入图像描述

解决方案 2

超过 1 分钟:`increase(walks_started_total[1m])`

在此处输入图像描述

于 2020-03-01T23:30:53.980 回答