求科普Prometheus核心数据模型(Counter)及rate函数原理
Prometheus核心数据模型解析(聚焦Counter)
时间序列的本质定义
- 时间序列的唯一身份由标签键值对的集合决定,数据类型(如Counter)是该序列的行为属性,而非身份标识的一部分。也就是说,标签完全一致的序列,只会对应一种数据类型。
- 标签组合的数量计算正确:若标签A有|A|种取值,标签B有|B|种取值,最终会生成|A|×|B|条独立的时间序列,每条都有自身的Counter数值变化轨迹。
瞬时向量(Instant Vector)
- 瞬时向量是某个特定时间点上,符合匹配条件的所有时间序列的最新样本值集合。比如每小时采样一次,每个小时时间点的瞬时向量规模就是匹配的标签组合数;若指定标签A的某一取值,规模则变为|B|。
- 不能称其为“向量的时间序列”:瞬时向量是静态的时间点快照,是多个序列在该点的数值集合;而时间序列是单个标签组合随时间的数值变化轨迹,是动态的、按时间排序的样本序列,二者是完全不同的概念。
范围向量(Range Vector)
- 范围向量是一段连续时间窗口内,符合匹配条件的所有时间序列的样本片段集合。它不是矩阵,更准确的描述是:每个元素对应一条时间序列在窗口内的全部样本(比如窗口包含N次采样,每个元素就是N个<时间戳, 数值>对),总元素数等于匹配的标签组合数(|A|×|B|)。
rate()函数的实际逻辑:并非简单取窗口首尾样本相减除以时间差,它会自动识别Counter的重置(如进程重启导致Counter归零),将重置前后的片段分别计算速率后再合并,最终得到窗口内的平均每秒增长率。
Counter的核心使用提示
- Counter是单调递增的数值(仅在重置时会下降),原始样本值的参考意义有限,通常通过
rate()(长窗口平均速率)或irate()(瞬时速率)计算增长率,用于监控如请求量、错误数这类累加型指标。
内容的提问来源于stack exchange,提问作者nadavgam
相关产品推荐
相关产品推荐

