跳到主要内容

指标命名最佳实践

在 Prometheus 中,指标是监控系统的核心。良好的指标命名不仅有助于提高代码的可读性,还能确保团队协作时的一致性。本文将介绍 Prometheus 指标命名的最佳实践,帮助你创建清晰、一致且易于维护的指标。

什么是 Prometheus 指标?

Prometheus 指标是用于监控和警报的时间序列数据。每个指标都有一个唯一的名称,用于标识其含义。例如,http_requests_total 表示 HTTP 请求的总数。指标名称是 Prometheus 查询语言(PromQL)的基础,因此命名必须清晰且有意义。

指标命名的重要性

良好的指标命名可以帮助你:

  • 提高可读性:清晰的命名可以让其他开发者快速理解指标的含义。
  • 确保一致性:统一的命名规范有助于团队协作,减少混淆。
  • 简化查询:合理的命名可以使 PromQL 查询更加直观和高效。

指标命名最佳实践

1. 使用小写字母和下划线

Prometheus 指标名称应使用小写字母和下划线(_)作为分隔符。避免使用大写字母、连字符或其他特殊字符。

示例:

plaintext
http_requests_total
cpu_usage_percent

2. 使用描述性名称

指标名称应清晰描述其含义。避免使用缩写或模糊的术语,除非它们是广泛接受的。

示例:

plaintext
# 好
http_requests_total
disk_usage_bytes

# 不好
hrt
du

3. 使用单位后缀

在指标名称中包含单位,以便明确其含义。例如,使用 _seconds 表示时间,_bytes 表示数据大小。

示例:

plaintext
request_duration_seconds
memory_usage_bytes

4. 使用 _total 后缀表示计数器

对于计数器类型的指标,使用 _total 后缀表示其累积值。

示例:

plaintext
http_requests_total
errors_total

5. 避免重复信息

不要在指标名称中重复标签(label)中的信息。标签用于进一步细分指标,因此指标名称应保持简洁。

示例:

plaintext
# 好
http_requests_total{method="GET", status="200"}

# 不好
http_requests_get_total{method="GET", status="200"}

6. 使用一致的命名模式

在整个应用程序中保持一致的命名模式。例如,如果你使用 _total 表示计数器,那么所有计数器都应遵循这一模式。

示例:

plaintext
http_requests_total
database_queries_total

实际案例

假设你正在监控一个 Web 应用程序,以下是几个合理的指标命名示例:

plaintext
http_requests_total{method="GET", status="200"}
request_duration_seconds{method="POST", endpoint="/api/v1/users"}
memory_usage_bytes{service="auth"}

这些指标名称清晰、一致,并且包含了必要的单位后缀。

总结

良好的指标命名是 Prometheus 监控系统的基础。通过遵循本文介绍的最佳实践,你可以创建清晰、一致且易于维护的指标。记住,指标名称应使用小写字母和下划线,包含描述性名称和单位后缀,并避免重复信息。

附加资源

练习

  1. 为以下场景设计指标名称:

    • 监控数据库查询的响应时间。
    • 跟踪应用程序的内存使用情况。
    • 记录 HTTP 请求的错误数量。
  2. 检查你现有的 Prometheus 指标,确保它们遵循本文介绍的最佳实践。