本文档中介绍的指标和标签约定对于使用 Prometheus 不是必需的,但可以作为样式指南和最佳实践的集合。各个组织可能希望以不同的方式处理其中的一些实践,例如命名约定。
指标名称…
namespace
。对于特定于应用程序的指标,前缀通常是应用程序名称本身。但是,有时指标更通用,例如客户端库导出的标准化指标。示例prometheus_notifications_total
(特定于 Prometheus 服务器)process_cpu_seconds_total
(许多客户端库导出)http_request_duration_seconds
(所有 HTTP 请求)total
作为后缀。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
(对于跟踪数据处理管道中最新处理记录时间的 时间戳)根据经验,给定指标的所有维度上的sum()
或avg()
都应该有意义(尽管不一定有用)。如果它没有意义,则将数据拆分为多个指标。例如,在一个指标中拥有各种队列的容量是好的,而将队列的容量与队列中当前元素的数量混合则不好。
使用标签来区分正在测量的事物的特征
api_http_requests_total
- 区分请求类型:operation="create|update|delete"
api_request_duration_seconds
- 区分请求阶段:stage="extract|transform|load"
不要将标签名称放在指标名称中,因为这会引入冗余,并且如果相应的标签被聚合掉,会导致混淆。
Prometheus 没有任何硬编码的单位。为了更好的兼容性,应使用基本单位。以下列出了一些指标族及其基本单位。此列表并不详尽。
族 | 基本单位 | 备注 |
---|---|---|
时间 | 秒 | |
温度 | 摄氏度 | 出于实际原因,摄氏度优于开尔文。在特殊情况下(例如色温或温度必须为绝对值时),开尔文是可以接受的基本单位。 |
长度 | 米 | |
字节 | 字节 | |
比特 | 字节 | 为了避免组合不同指标时的混淆,始终使用字节,即使比特看起来更常见。 |
百分比 | 比率 | 值范围为 0-1(而不是 0-100)。ratio 仅用作后缀,例如disk_usage_ratio 。通常的指标名称遵循A_per_B 模式。 |
电压 | 伏特 | |
电流 | 安培 | |
能量 | 焦耳 | |
功率 | 建议导出焦耳的计数器,然后rate(joules[5m]) 会给出以瓦特为单位的功率。 |
|
质量 | 克 | 为了避免千前缀引起的问题,克优于千克。 |
此文档为开源。请通过提交问题或拉取请求来帮助改进它。