Gauge 和 Counter 有什么区别?(Prometheus 指标类型)

Counter 只增不减(重启归零),记录累计量如请求总数;Gauge 可增可减,记录瞬时值如内存占用。查询方式也因此不同:Counter 用 rate() 看速率,Gauge 直接看值。一文讲清选型。

最佳实践
Gauge 和 Counter 有什么区别?(Prometheus 指标类型)封面

核心区别一句话:Counter 是"累计计数器"——只会增加(服务重启才归零);Gauge 是"温度计"——可增可减,代表当前这一刻的值。

Counter:单调递增

from prometheus_client import Counter
http_requests = Counter('http_requests_total', 'Total HTTP requests')
http_requests.inc()      # 只能 +1 / +n,不能减

适用:请求总数、错误总数、处理任务数、字节收发总量。
查询:rate(http_requests_total[5m]) 看每秒速率;increase(...[1h]) 看小时总量。重启归零会被这两个函数自动处理。

Gauge:可增可减

from prometheus_client import Gauge
memory_usage = Gauge('memory_usage_bytes', 'Current memory usage')
memory_usage.set(500)    # 直接设值
memory_usage.inc(100)    # 也能 +100
memory_usage.dec(50)     # 也能 -50

适用:内存/CPU 占用、当前连接数、队列深度、在线人数。
查询:直接取值,或 avg_over_time 看一段时间均值。

速查表

Counter Gauge
方向 只增(重启归零) 可增可减
语义 累计量 瞬时值
例子 请求总数 当前内存
查询 rate / increase 直接取值

判断口诀:这个值"天然只涨"(总数)用 Counter;"有涨有落"(水位)用 Gauge。

观测云对照

观测云指标查询会自动按指标语义提供合适的聚合方式(计数类给速率/增量选项,水位类给均值/最值),通过 DataKit 采集的 Prometheus 指标类型信息完整保留。

常见问题(FAQ)

Q:错误率该用哪种? 分子分母都用 Counter(错误数、总数),查询时相除。

Q:Gauge 能算速率吗? 不推荐——用 deriv()(瞬时导数)或 delta(),语义和 rate 不同。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台