指标系统

指标(Metrics)是对系统状态的数值化表达。与日志的离散事件不同,指标是连续采样的数值序列,经过聚合计算后,可以揭示系统的健康趋势、容量状态和性能特征。指标是可观测性三大支柱中「最结构化」的数据形式,适合用于告警阈值设定、容量规划和趋势预测。

一个完善的指标系统应该回答三类问题:现在怎么样(实时值)、过去怎么样(历史趋势)、会怎么样(容量预测)。这三类问题对应着指标的不同使用场景:告警依赖实时值,仪表盘展示历史趋势,容量规划需要趋势外推。

指标的三大类型

根据数据特性和用途,指标分为三种基本类型:

Counter(计数器):只增不减的累计值,用于统计「总量」,如请求总数、错误总数。Counter 的价值在于计算变化率(rate()),而非绝对值——因为重启后 Counter 会重置为 0,但两次采样的差值(increase)仍然正确。

Gauge(仪表盘):可增可减的瞬间值,用于表达「状态」,如当前 CPU 使用率、内存使用量、队列长度。Gauge 的特点是适合设置阈值告警,当值超过或低于某个阈值时触发通知。

Histogram(直方图):将数值范围划分为 Bucket,统计每个 Bucket 内的样本数量,用于分析分布,如请求延迟分布、响应大小分布。Histogram 是计算分位数(P50、P90、P99)的基础。

Summary 与 Histogram 类似,但区别在于:Histogram 需要预先定义 Bucket 边界,Summary 的分位数是服务端直接计算的。Histogram 支持查询时聚合,Summary 不支持聚合但计算更精确。选择哪种取决于你的查询需求。