- 度量指标和标签命名
- 度量指标名称
- 标签
度量指标和标签命名
本文档中提供的指标和标签约定不需要使用Prometheus,但可以作为风格指南和最佳实践的集合。个别组织可能想要采取其中一些做法,例如:不同的命名约定。
度量指标名称
一个度量指标名称…
… 应该有一个与单位所属的域相关的(单个单词)应用程序前缀。前缀有时成为客户端库的命名空间。对于特定于应用程序的度量指标,前缀通常是应用程序名称本身。然而,有时候,指标更为通用,如客户端导出的标准化指标。例子:
prometheus_notifications_total
(指定Prometheus服务)process_cpu_seconds_total
(由许多客户库导出)http_request_duration_seconds
(所有HTTP请求)- …必须有一个单位(既不用毫秒或者秒与字节混合秒).
- …应该有一个基本单位(例如:秒,字节,米,不是毫秒,兆字节,公里)
- …应该有一个描述单位的后缀,复数形式。请注意,除了适用的单位之外,积累计数总计作为后缀。
http_request_request_seconds
node_memory_usage_bytes
http_requests_total
(无单位累计计数)process_cpu_seconds_total
(有单位的累计计数)- …应该代表在所有标签维度上测量的相同逻辑东西
- 请求持续时间
- 传输的字节数
- 即时资源使用率百分比
作为经验法则,给定度量指标所有维度上的sum()
或avg()
应该是有意义的(尽管不一定有用)。如果没有意义,将数据分成多个指标。例如,在一个度量中具有各种队列的容量是好的,而将队列的容量与队列中的当前数量的元素混合是不好的。
标签
使用标签来区分正在测量的事物特征:
api_http_requests_total
- 区分请求类型:type="created| update | delete
.api_request_duration_seconds
- 区分请求阶段:stage="extract | transform | load"
不要将标签名称放在度量指标名称下面,因为这会导致冗余,如果响应的标签被聚合,会导致混淆。
谨慎:请记住,键值标签对的每个独特组合都代表了一个新的时间序列,可以显着增加存储的数据量。 不要使用标签来存储具有高基数(许多不同标签值)的维度,例如用户ID,电子邮件地址或其他无限制的值集合。