PromQL介绍原创
Prometheus Query Language (PromQL) 是一种功能强大的查询语言,用于在 Prometheus 中查询和分析时间序列数据。以下是一些常用的 PromQL 查询示例,帮助你在实际监控和分析中使用。
# 基本查询
简单查询: 查询某个指标的当前值。
node_cpu_seconds_total
1带条件的查询: 查询某个指标在特定条件下的当前值。
node_cpu_seconds_total{mode="idle"}
1
# 聚合操作
求平均值: 计算某个指标在所有实例上的平均值。
avg(node_memory_MemAvailable_bytes)
1求和: 计算某个指标在所有实例上的总和。
sum(node_memory_MemAvailable_bytes)
1最大值: 查询某个指标在所有实例中的最大值。
max(node_memory_MemAvailable_bytes)
1最小值: 查询某个指标在所有实例中的最小值。
min(node_memory_MemAvailable_bytes)
1
# 计算速率
- 计算速率:
计算某个指标在一段时间内的变化速率。
rate(node_cpu_seconds_total{mode="idle"}[5m])
1
# 分组和子查询
按标签分组: 计算某个指标在不同标签维度上的总和。
sum(rate(node_cpu_seconds_total[5m])) by (instance)
1分组并求平均值: 按某个标签分组并计算平均值。
avg(rate(node_cpu_seconds_total[5m])) by (instance)
1
# 比率和百分比
计算CPU使用率: 计算 CPU 使用率(非空闲时间占比)。
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
1内存使用百分比: 计算内存使用百分比。
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
1
# 结合时间范围
查询过去5分钟的平均值: 计算过去5分钟某个指标的平均值。
avg_over_time(node_load1[5m])
1查询特定时间点的值: 查询某个指标在特定时间点的值。
node_load1 @ 1622476800
1
# 常用的Prometheus报警规则
CPU使用率报警: 当某个实例的CPU使用率超过80%时触发报警。
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
1内存使用率报警: 当某个实例的内存使用率超过90%时触发报警。
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 90
1磁盘使用率报警: 当某个实例的根目录磁盘使用率超过90%时触发报警。
(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100 > 90
1
# 高级查询
查询前N个值: 查询某个指标的前5个最大值。
topk(5, node_load1)
1查询变化趋势: 计算某个指标在过去一小时内的变化趋势。
delta(node_network_receive_bytes_total[1h])
1
上次更新: 10/2/2024
- 02
- Flink 集群部署指南 原创09-20
- 03
- MongoDB 集群Config Server 复制集的工作原理09-14