PromQL 常见查询模式
PromQL 是 Prometheus 的查询语言,掌握常见的查询模式是编写有效报警规则和仪表盘的基础。本篇整理了监控实践中最高频使用的 PromQL 模式。
速率计算函数
速率计算是监控中最常用的操作。Prometheus 提供三个核心函数:
选择 rate 还是 irate 的经验法则:如果指标用于报警,使用 rate;如果用于检测瞬时峰值,使用 irate。
标签过滤与匹配
Prometheus 的标签过滤支持多种匹配符:
在报警规则中,标签过滤决定了哪些实例或服务会触发告警。标签过滤的粒度需要根据监控对象确定:太粗会导致漏报,太细会产生大量相似告警。
聚合操作
当需要跨实例或跨集群聚合时,使用聚合操作符:
by 子句控制聚合的维度。avg by (instance) 表示按实例聚合后求平均,avg without (instance) 表示在所有实例上求平均但排除 instance 标签。
常见报警规则模板
服务不可用
错误率过高
P99 延迟过高
性能优化建议
避免大范围正则:正则匹配会增加查询负担,尽量使用精确匹配。
合理设置时间范围:时间范围过大会导致查询变慢,但过小又可能漏掉重要数据。报警规则一般使用 5m,仪表盘根据需要调整。
使用 Recording Rules:对于复杂计算,创建预计算的 Recording Rules,报警和仪表盘直接查询预计算结果。