首页/云/可观测性速查/指标命名与单位规范
监控体系与方法40 条

指标命名与单位规范

Prometheus 社区约定:小写 snake_case、带单位后缀、Counter 以 _total 结尾、使用基本单位(秒、字节);统一命名才能让查询与看板可复用。

可观测性速查云更新于 2026-10-13

指标命名是什么

在 Prometheus 与 OpenTelemetry 生态里,指标名加标签共同构成一条时间序列的唯一标识。社区约定:小写 snake_case、带单位后缀、计数器以 _total 结尾、数值统一用基本单位(秒、字节)。命名统一之后,看板、告警与记录规则才能跨服务复用;命名混乱时同一件事在不同服务里会写成三个名字,查询与规则都要逐服务适配。维度信息交给标签承载,不拼进指标名。

基本信息

适用范围Prometheus / OpenTelemetry 指标
命名风格小写 snake_case,可含数字与下划线
单位后缀_seconds、_bytes 等,只写基本单位
计数器后缀_total(累计值)
维度承载用标签承载,不拼进指标名
子系统前缀nginx_、mysqld_ 等限定来源

典型使用场景

  • 新服务接入监控时先定指标名,再写埋点代码,避免上线后大规模改名
  • 多团队共用一块看板时靠统一命名让同名指标口径一致
  • 写记录规则与告警表达式时直接匹配目标指标,不必逐服务适配
  • 把 promtool check metrics 接入采集端质量门禁,拦截不合规范的命名
  • 系统迁移或重构时对比新旧指标名,确认单位没有悄悄变化
  • 做容量与成本分析时靠命名把同类指标批量检索出来

常用单位后缀约定

常用单位后缀约定
_seconds / _milliseconds     时间
_bytes                       大小
_total                       计数器累计值
_info                        静态元信息(值恒为 1)
_timestamp_seconds           时间点
_ratio                       无量纲比例(0-1)

命名规则

规则正例反例
小写 snake_casehttp_request_duration_secondshttpRequestDuration
用基本单位request_size_bytes、latency_secondsrequest_size_kb、latency_ms
Counter 后缀 _totalrequests_totalrequests_count
含义具体可组合node_network_receive_bytes_totaldata1、value
名称不含标签值http_requests_total{code="500"}http_500_requests
指标名加子系统前缀(如 nginx_、mysqld_)便于按来源筛选,也降低不同 exporter 之间重名的概率。
单位只能写一次且不可变:把 ms 改成 s 会让历史序列与新建序列在图上拼成两条曲线,同一看板出现相差 1000 倍的数值。
OpenTelemetry 的语义约定与 Prometheus 惯例大体一致,但 SDK 侧常用 UCUM 单位(如 ms),导出到 Prometheus 时由 exporter 统一换算成秒与字节。

易错点

  • 把毫秒、KB 写进指标名会带来换算负担,统一用秒与字节、由展示端做单位转换
  • 同一指标在不同版本更换单位(ms 与 s)会让看板数值差 1000 倍且难以察觉
  • 把标签值(状态码、实例名)拼进指标名会让序列数随取值膨胀,检索和聚合都变困难
  • 重命名等于换新指标:老数据的查询与告警需同步改,改名要配套清理旧规则与旧看板
  • 同一个名字在不同服务里含义不同(都叫 latency),跨服务聚合会把不同口径混在一起

数据来源与参考

  • Prometheus 文档 · Metric and label naming
  • Prometheus 文档 · Instrumentation 实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌