03.10、Prometheus最佳实践
Prometheus 最佳实践
本节将学习:标签设计原则、指标命名规范、存储优化方法,以及监控最佳实践。这些实践可以帮助我们更好地使用 Prometheus。
标签设计原则
标签设计有什么原则呢?
第一个原则:使用有意义的标签名。 标签名应该有意义。例如
methodstatuspathl1l2label1第二个原则:标签值应该是有限的。 标签值应该是有限的、预定义的。例如
method="GET"status="200"user_id="12345"order_id="67890"第三个原则:避免高基数的标签。 高基数标签会导致大量的时间序列,增加存储和查询成本。例如用户 ID、订单 ID 这些标签,不要直接作为标签。
第四个原则:遵循命名规范。 使用小写字母和下划线。例如
instanceenvironmentservice标签设计示例:
✅ 好的标签设计:
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_totalHTTPRequestsTotal第二个规则:使用下划线分隔单词。 使用下划线分隔单词,而不是驼峰命名或连字符。例如
cpu_usage_percentcpuUsagePercentcpu-usage-percent第三个规则:使用有意义的名称。 指标名应该有意义。例如
http_requests_totalmetric1counter1第四个规则:遵循语义约定。 遵循 OpenTelemetry 或 Prometheus 的语义约定。这样可以保证一致性。
命名模式:
<metric_name>_<unit>_<type>例如:
- :总数
http_requests_total - :百分比
cpu_usage_percent - :字节
memory_usage_bytes - :秒
request_duration_seconds
后缀约定:
- :Counter 类型
_total - :Histogram/Summary 总数
_count - :Histogram/Summary 总和
_sum - :Histogram bucket
_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。