03.10Prometheus最佳实践

分类: Prometheus安装与配置

Prometheus 最佳实践

本节将学习:标签设计原则、指标命名规范、存储优化方法,以及监控最佳实践。这些实践可以帮助我们更好地使用 Prometheus。

标签设计原则

标签设计有什么原则呢?

第一个原则:使用有意义的标签名。 标签名应该有意义。例如

method
status
path
,而不是
l1
l2
label1

第二个原则:标签值应该是有限的。 标签值应该是有限的、预定义的。例如

method="GET"
status="200"
,而不是
user_id="12345"
order_id="67890"

第三个原则:避免高基数的标签。 高基数标签会导致大量的时间序列,增加存储和查询成本。例如用户 ID、订单 ID 这些标签,不要直接作为标签。

第四个原则:遵循命名规范。 使用小写字母和下划线。例如

instance
environment
service

标签设计示例:

✅ 好的标签设计:

http_requests_total{
  method="GET",
  status="200",
  path="/api/orders"
}

这个设计使用有意义的标签名,标签值是有限的。

❌ 不好的标签设计:

http_requests_total{
  user_id="12345",
  order_id="67890",
  ip="192.168.1.1"
}

这个设计使用了高基数的标签,会导致大量的时间序列。

这就是标签设计原则。遵循这些原则,可以避免很多问题。

指标命名规范

指标命名有什么规则呢?

第一个规则:使用小写字母。 指标名应该使用小写字母。例如

http_requests_total
,而不是
HTTPRequestsTotal

第二个规则:使用下划线分隔单词。 使用下划线分隔单词,而不是驼峰命名或连字符。例如

cpu_usage_percent
,而不是
cpuUsagePercent
cpu-usage-percent

第三个规则:使用有意义的名称。 指标名应该有意义。例如

http_requests_total
,而不是
metric1
counter1

第四个规则:遵循语义约定。 遵循 OpenTelemetry 或 Prometheus 的语义约定。这样可以保证一致性。

命名模式:

<metric_name>_<unit>_<type>

例如:

  • http_requests_total
    :总数
  • cpu_usage_percent
    :百分比
  • memory_usage_bytes
    :字节
  • request_duration_seconds
    :秒

后缀约定:

  • _total
    :Counter 类型
  • _count
    :Histogram/Summary 总数
  • _sum
    :Histogram/Summary 总和
  • _bucket
    :Histogram bucket
  • _gauge
    :Gauge 类型(通常省略)

这就是指标命名规范。遵循这些规范,可以保证指标命名的一致性。

存储优化方法

存储优化有什么方法呢?

第一个方法:设置数据保留时间。 设置数据保留时间,例如 30 天。超过保留时间的数据会被自动删除。

command:
  - '--storage.tsdb.retention.time=30d'
  - '--storage.tsdb.retention.size=50GB'

这个配置设置了数据保留时间为 30 天,最大存储大小为 50GB。

第二个方法:压缩数据。 压缩数据可以减少存储空间。

command:
  - '--storage.tsdb.min-block-duration=2h'
  - '--storage.tsdb.max-block-duration=2h'

这个配置设置了块的最小和最大持续时间为 2 小时。

第三个方法:采样数据。 对于高频指标,使用采样来减少数据量。例如只采样 10% 的数据。

第四个方法:使用远程存储。 使用远程存储(如 Thanos、Cortex),长期存储和查询。这样可以保留更长时间的数据。

存储配置示例:

command:
  - '--storage.tsdb.retention.time=30d'
  - '--storage.tsdb.retention.size=50GB'
  - '--storage.tsdb.min-block-duration=2h'
  - '--storage.tsdb.max-block-duration=2h'
  - '--storage.tsdb.path=/prometheus'

这个配置展示了如何配置存储。设置了保留时间、最大大小、块持续时间、数据路径。

这就是存储优化方法。可以有效地减少存储成本。

监控最佳实践

监控有什么最佳实践呢?

第一个实践:选择合适的抓取间隔。 根据指标变化频率选择合适的抓取间隔。例如系统指标 15s,业务指标 30s。

第二个实践:使用告警规则。 创建告警规则,及时发现问题。例如 CPU 使用率超过 80% 时告警。

第三个实践:监控关键指标。 监控关键指标,不要监控所有指标。例如 QPS、错误率、延迟、资源使用率。

第四个实践:定期检查配置。 定期检查 Prometheus 配置和目标状态,确保监控系统正常运行。

监控指标建议:

  • 系统指标: CPU、内存、磁盘、网络使用率。这些指标反映系统的健康状态。
  • 应用指标: QPS、错误率、延迟。这些指标反映应用的性能。
  • 业务指标: 订单数、用户数、收入。这些指标反映业务的状态。

这就是监控最佳实践。遵循这些实践,可以更好地监控系统。

本节小结

在本节中,我们学习了 Prometheus 最佳实践:

第一个是标签设计。 使用有意义的标签名,避免高基数标签。这样可以避免大量的时间序列。

第二个是指标命名。 使用小写字母和下划线,遵循语义约定。这样可以保证指标命名的一致性。

第三个是存储优化。 设置保留时间,压缩数据,使用远程存储。可以有效地减少存储成本。

第四个是监控实践。 选择合适的抓取间隔,使用告警规则,监控关键指标。可以更好地监控系统。

最佳实践总结: 标签设计、指标命名、存储优化、监控实践。遵循这些实践,可以更好地使用 Prometheus。

这就是 Prometheus 最佳实践。掌握这些实践,可以帮助我们更好地使用 Prometheus。

恭喜你! 你已经完成了第 3 章的学习。我们学习了 Prometheus 的安装、配置、查询、部署、实战和最佳实践。

在下一章,我们将学习 Grafana 安装与基础使用。学习如何安装和使用 Grafana,创建 Dashboard。