指标和标签命名

本文档中介绍的指标和标签约定不是使用 Prometheus 的必要条件,但可以作为样式指南和最佳实践的集合。各个组织可能希望以不同的方式处理其中一些实践,例如命名约定。

指标名称

指标名称...

  • ...必须符合数据模型中对有效字符的规定。
  • ...应具有与指标所属领域相关的(单字)应用程序前缀。客户端库有时将此前缀称为 namespace。对于特定于应用程序的指标,前缀通常是应用程序本身的名称。然而,有时指标更通用,例如客户端库导出的标准化指标。示例:
    • prometheus_notifications_total(特定于 Prometheus 服务器)
    • process_cpu_seconds_total(由许多客户端库导出)
    • http_request_duration_seconds(适用于所有 HTTP 请求)
  • ...必须具有单一单位(即不要将秒与毫秒或秒与字节混合)。
  • ...应使用基本单位(例如秒、字节、米 - 而不是毫秒、兆字节、千米)。请参阅下面的基本单位列表。
  • ...应具有描述单位的后缀,采用复数形式。请注意,累积计数除了单位(如果适用)之外,还具有 total 作为后缀。另请注意,这适用于狭义的单位(如下表中的单位),但不适用于一般的可数事物。例如,connectionsnotifications 不被视为此规则的单位,并且不必位于指标名称的末尾。(另请参阅下一段中的示例。)
    • http_request_duration_seconds
    • node_memory_usage_bytes
    • http_requests_total (对于无单位的累积计数)
    • process_cpu_seconds_total (对于带有单位的累积计数)
    • foobar_build_info(对于提供有关正在运行的二进制文件的 元数据的伪指标)
    • data_pipeline_last_record_processed_timestamp_seconds(对于跟踪数据处理管道中处理的最新记录时间的 timestamp)
  • ...可以按一种方式排序其名称组件,以便在按字典顺序对指标名称列表进行排序时,可以方便地进行分组,只要遵循所有其他规则即可。以下示例将其公共名称组件放在前面,以便所有相关指标排序在一起
    • prometheus_tsdb_head_truncations_closed_total
    • prometheus_tsdb_head_truncations_established_total
    • prometheus_tsdb_head_truncations_failed_total
    • prometheus_tsdb_head_truncations_total

以下示例也是有效的,但遵循不同的权衡。它们单独读取更容易,但像 prometheus_tsdb_head_series 这样的不相关指标可能会被排序在中间。* prometheus_tsdb_head_closed_truncations_total * prometheus_tsdb_head_established_truncations_total * prometheus_tsdb_head_failed_truncations_total * prometheus_tsdb_head_truncations_total * ...应该表示跨所有标签维度的相同逻辑测量事物。* 请求持续时间 * 数据传输的字节数 * 以百分比表示的瞬时资源使用率

根据经验,给定指标的所有维度的 sum()avg() 应该是有意义的(尽管不一定有用)。如果它没有意义,请将数据拆分为多个指标。例如,在一个指标中包含各种队列的容量是好的,而将队列的容量与队列中当前元素的数量混合是不好的。

标签

使用标签来区分正在测量的事物的特征

  • api_http_requests_total - 区分请求类型:operation="create|update|delete"
  • api_request_duration_seconds - 区分请求阶段:stage="extract|transform|load"

不要将标签名称放在指标名称中,因为这会引入冗余,并且如果各自的标签被聚合掉,将会导致混淆。

注意:请记住,键值标签对的每个唯一组合都表示一个新的时间序列,这会显著增加存储的数据量。不要使用标签来存储具有高基数(许多不同的标签值)的维度,例如用户 ID、电子邮件地址或其他无限制的值集合。

基本单位

Prometheus 没有硬编码任何单位。为了更好的兼容性,应使用基本单位。下面列出了一些指标系列及其基本单位。该列表并非详尽无遗。

系列 基本单位 备注
时间
温度 摄氏度 出于实际原因,首选摄氏度而不是开尔文。在特殊情况下,例如色温或温度必须是绝对温度时,开尔文是可接受的基本单位。
长度
字节 字节
比特 字节 为了避免混淆组合不同的指标,始终使用字节,即使在比特看起来更常见的情况下也是如此。
百分比 比率 值是 0-1(而不是 0-100)。 ratio 仅用作 disk_usage_ratio 等名称的后缀。通常的指标名称遵循模式 A_per_B
电压 伏特
电流 安培
能量 焦耳
功率 首选导出焦耳计数器,然后 rate(joules[5m]) 将为您提供瓦特功率。
质量 首选而不是千克,以避免前缀的问题。

此文档是开源的。请通过提交问题或拉取请求来帮助改进它。