changes 与 resets 是什么
changes() 统计时间窗口内指标值发生变化的次数,适合观察状态类指标翻转了多少回;resets() 统计计数器被重置的次数,通常对应进程重启或计数器异常。两者都是「事件计数」而不是「数值大小」,在排查反复重启、状态抖动这类问题时比看数值曲线更直接。
基本信息
| changes | 窗口内值发生变化的次数,适用于各类指标 |
|---|---|
| resets | 窗口内计数器重置的次数,仅对计数器有意义 |
| 统计窗口 | 常用 1 小时到 1 天,需覆盖一次完整事件 |
| 典型指标 | 进程启动时间、容器重启计数、连接状态 |
典型使用场景
- 重启排查:统计计数器重置次数判断进程是否反复重启
- 状态抖动:用变化次数衡量实例可用性翻转频率
- 变更定位:重启时间与发布记录对照,确认是否人为触发
- 稳定性看板:把重置次数作为服务稳定性的观察项
- 容量异常:重置次数突增时排查是否发生了被动的资源回收
用法示例
用法示例
# 计数器在窗口内的重置次数(进程重启会导致重置)
resets(http_requests_total{job="api"}[1h])
# 判断进程是否在窗口内重启过:启动时间是否变大
process_start_time_seconds > process_start_time_seconds offset 1h
# 状态类指标值变化次数(例如实例可用性翻转)
changes(up{job="node"}[1h])
# 容器重启计数直接用累计值对比更直观
# 注意:对计量型指标使用 resets 没有意义函数与适用对象
| 函数 | 统计内容 | 适用与不适用 |
|---|---|---|
| changes | 值变化次数 | 状态类与计数类都可用,注意采集抖动影响 |
| resets | 计数器重置次数 | 仅适用于只增计数器 |
| (对照)rate | 每秒平均增长速率 | 用于流量与速率,不反映重置 |
| (对照)启动时间 | 启动时刻是否变大 | 判断是否重启过,最直观 |
| (对照)重启计数 | 容器累计重启次数 | 直接反映重启,无需推导 |
重置次数偏高是进程稳定性的信号:与容器重启计数、发布记录对照,能快速区分是人为发布还是异常退出。
频繁重启会同时抬高速率类查询的尖峰:排查时把重置次数与速率曲线一起看,避免把重启造成的计数跳变误读成业务流量上涨。