PromQL 从入门到精通
2.77 MB
16 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
中文(简体) | .pdf | 3 |
摘要 | ||
文档详细介绍了PromQL的基础知识及实际应用场景,包括查询选择器的使用、Offset关键字的时序调整、算术运算符和比较运算符的应用、rate和irate函数的区别、histogram_quantile函数的使用方法、以及告警规则的配置。同时,文档还讲解了逻辑运算符和集合运算符的使用,聚合函数的应用如sum、avg、min、max等,以及group_left和group_right的高级使用技巧。此外,文档还涉及PromQL在Kubernetes环境中的实践,如与kube-state-metrics结合使用,并对处理分布式系统延时指标的函数进行了详细说明。 | ||
AI总结 | ||
## PromQL 从入门到精通 —— 文档总结
以下是对《PromQL 从入门到精通》的中文文档内容进行的总结,涵盖了PromQL的核心知识点和实践场景:
### 1. PromQL 简介与核心概念
PromQL(Prometheus Query Language)是用于查询时序数据的语言,广泛应用于监控和可观测性领域。本文档通过生产实践中的场景,详细介绍了PromQL的基本知识和高级功能。
### 2. 查询选择器
PromQL的查询选择器用于过滤时序数据,支持以下操作符:
- **=**:完全匹配,如 `app="clickhouse"`
- **!=**:完全不匹配
- **=~**:正则匹配,如 `app=~"n9e-.*"`
- **!~**:正则不匹配
指标名称可以通过标签 `__name__` 进行查询,例如:
```promql
{__name__="mem_available_percent", app="clickhouse"}
```
### 3. Offset 关键字
用于获取历史数据,常见于同比分析。以下示例中,`offset 1d` 表示获取1天前的数据:
```promql
sum(http_requests_total{method="GET"} offset 1d)
```
### 4. 算术运算符
支持加减乘除等基本算术运算,能够直接在服务端完成复杂计算。例如,利用算术运算符可以动态生成新的指标:
```promql
mem_available{app="clickhouse"} / mem_total{app="clickhouse"} * 100
```
### 5. 比较运算符
用于设置告警阈值,典型用法是将即时向量与标量进行比较。例如:
```promql
mem_available_percent{app="clickhouse"} < 60
```
### 6. 逻辑/集合运算符
包括 `and`、`or` 和 `unless`,用于即时向量之间的逻辑运算。例如:
```promql
disk_used_percent{app="clickhouse"} > 70 and disk_total{app="clickhouse"}/1024/1024/1024 < 500
```
### 7. 聚合运算符
用于对多个时间序列进行聚合操作,常见函数包括 `sum`、`min`、`max`、`avg` 等。示例:
```promql
avg(mem_available_percent{app="clickhouse"})
bottomk(2, mem_available_percent{app="clickhouse"})
```
### 8. 高级函数
#### (1) count_gt_over_time
用于统计时间范围内超过阈值的次数,适合告警规则。例如:
```promql
count_gt_over_time(interface_status[5m], 10) >= 3
```
#### (2) rate 和 irate
- `rate`:计算时间范围内的每秒变化率,平滑处理数据。
- `irate`:基于时间范围内的最后两个数据点计算,变化更剧烈,适合短期敏感监控。
#### (3) histogram_quantile
用于计算分位数,常用于分析分布式系统的延迟。示例:
```promql
histogram_quantile(0.95, rate(http_request_duration_bucket{job="apiserver"}[5m]))
```
### 9. group_left 和 group_right
用于处理一对多或多对一的匹配场景:
- `group_left`:保留高基数向量的标签。
- `group_right`:保留低基数向量的标签。
示例:
```promql
method_code:http_errors:rate5m / ignoring(code) group_left method:http_requests:rate5m
```
### 10. 实际应用场景
#### (1) 内存可用率告警
通过 PromQL 设置阈值,即时监控内存健康状态:
```promql
mem_available_percent{app="clickhouse"} < 60
```
#### (2) HTTP 错误率统计
计算不同 HTTP 方法的错误率:
```promql
method_code:http_errors:rate5m{code="500"} / ignoring(code) method:http_requests:rate5m
```
#### (3) 多维度数据处理
结合 Kubernetes 标签,实现高级监控逻辑。例如,根据 `kube_pod_labels` 统计 5xx 请求量:
```promql
sum(rate(http_request_count{code=~"^(?:5..)$"}[5m])) by (pod) * on (pod) group_left(label_version) kube_pod_labels
```
### 11. 小结
- PromQL 是时序数据查询的核心语言,其功能强大且灵活。
- 文档中仅介绍了部分常用函数,更多功能请参考官方文档。
- 作者:秦晓辉(快猫星云,https://flashcat.cloud/),致力于监控与可观测性领域。 |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
9 页请下载阅读 -
文档评分