Counters(计数型)是Prometheus 的一种指标类型,其值只增不减,且代表累计的总计数,比如“总共已处理了多少请求?”或者“用了多少秒来处理请求?”由于counter的值取决于追踪和公开过程的初始(重新)启动时间,因此它的绝对值几乎是没有用的。所以在根据counter绘图或做任何事之前,通常要借助rate(), irate()或 increase() 函数来查看它的rate。
这三个函数的确切运行方式经常引起混淆,因此本文会详细介绍每一个函数,以及它们如何处理counter重置,对数据做出推断并得出最终值。需要注意的是,本文只涉及到以上提及的三个有关counter的函数,如果你想追踪Gauge指标的增长或下降,则需要使用delta() 或deriv() 函数,我们会在后续的文章中介绍它们。
综述
以下内容高度概况了三个函数计算counter增长率的差异:
rate()
此函数计算整个采样周期内每秒的增长率。
例如:rate(http_requests_total[5m]) 得出的是HTTP在5分钟窗口内,平均每秒的请求率。作为最常见的函数,它以可预测的每秒输出单位产生平滑的rate。
irate()
即 “瞬时rate”,此函数和rate()一样,计算每秒的增长率,但只对规定采样周期内的最后两个样本进行计算,而忽略前面所有样本。
例如:irate(http_requests_total[5m]) 选取规定5分钟窗口内的最后两个样本,并计算两者之间每秒的增长率。如果想让一个放大的图形显示出对rate变化的快速响应,那这个函数就很有用,它呈现的结果会比rate()的有更多的峰值。
increase()
此函数和 rate() 完全一样,只是它没有将最终单位转换为 “每秒”(1/s)。每个规定的采样周期就是它的最终单位。
例如:increas