当前位置: 首页 > article >正文

Prometheus常用查询PromQL表达式

Prometheus 是一款强大的开源监控工具,通过自带的 PromQL 查询语言,可以实现丰富的数据查询和分析。本文将介绍一些常用的 Prometheus 查询表达式,帮助大家在日常的运维监控中更好地使用 Prometheus。

1. 基础查询

1.1 查询指标值

Prometheus 中存储的每一个指标都可以通过其名称直接查询,例如:

up

指标表示目标服务的运行状态。值为 1 表示服务正常,0 表示服务不可用。

1.2 查询指定标签的指标

使用 {} 可以过滤指定的标签。例如,查询所有 job 为 api-server 的 http_requests_total 指标:

http_requests_total{job="api-server"}

可以结合多个标签使用,如:

http_requests_total{job="api-server", status="500"}

2. 聚合查询

Prometheus 提供了多种聚合函数,用于对数据进行求和、求平均值、最大值等操作。

2.1 sum

计算某个指标的总和。例如,计算所有实例的 http_requests_total 请求总数:

sum(http_requests_total)

计算 job 为 api-server 的请求总数:

sum(http_requests_total{job="api-server"})
2.2 avg

计算平均值,例如:

avg(http_requests_total{job="api-server"})

2.3 max 和 min

分别计算最大值和最小值。例如:

max(http_requests_total{job="api-server"})
min(http_requests_total{job="api-server"})

2.4 count

统计样本数量,例如:

count(http_requests_total{job="api-server"})
2.5 按标签分组聚合

计算每个 job 的请求总数:

sum by (job)(http_requests_total)

3. 时间序列查询

3.1 查询指定时间范围的平均值

Prometheus 支持通过 [时间区间] 来查询时间窗口内的指标。例如,查询过去 5 分钟内的平均 CPU 使用率:

avg(rate(node_cpu_seconds_total[5m]))

3.2 rate 和 irate

rate 函数用于计算每秒的平均增长速率,适用于较长时间窗口:

 
rate(http_requests_total[5m])

irate 用于计算瞬时增长速率,适用于监控短期的变化趋势:

irate(http_requests_total[1m])

4. 计算操作符

Prometheus 支持基本的算术操作符(+-*/)和布尔操作符(==!=><)。

4.1 指标计算

计算两个指标的比值,例如计算错误请求占比:

http_requests_total{status="500"} / http_requests_total
4.2 条件过滤

过滤 CPU 使用率超过 80% 的实例:

node_cpu_seconds_total{mode="idle"} < 0.2

5. 常用监控表达式

以下是一些常用的 Prometheus 查询表达式,用于监控系统健康状况。

5.1 CPU 使用率

计算 CPU 使用率:

100 * (1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance))

5.2 内存使用率

查询内存使用率:

100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))

5.3 磁盘使用率

查询根目录的磁盘使用率:

100 * (1 - node_filesystem_free_bytes{mountpoint="/"} / 
node_filesystem_size_bytes{mountpoint="/"})

5.4 QPS 查询

计算某服务的 QPS(Queries Per Second):

rate(http_requests_total{job="api-server"}[5m])

5.5 错误率

计算 HTTP 错误率(例如 5xx 错误):

sum(rate(http_requests_total{status=~"5.."}[5m])) / 
sum(rate(http_requests_total[5m]))

6. 告警表达式示例

Prometheus 常与 Alertmanager 配合使用,通过规则文件定义告警表达式。例如,当 CPU 使用率超过 90% 持续 5 分钟时触发告警:

- alert: HighCPULoad
  expr: avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) < 0.1
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: "High CPU usage detected"
    description: "Instance {{ $labels.instance }} has high CPU load"

7. 结论

Prometheus 提供了强大的查询功能,帮助我们实时监控系统状态并进行数据分析。本文介绍了 PromQL 的常用查询表达式,希望能为大家在日常的监控和运维工作中提供一些帮助。掌握 PromQL 的用法,可以更高效地利用 Prometheus 进行故障排查和性能分析。


http://www.kler.cn/a/392327.html

相关文章:

  • 知识图谱6:neo4j查询语句
  • Pycharm PyQt5 环境搭建创建第一个Hello程序
  • 【前端学习指南】Vue computed 计算属性 watch 监听器
  • 一文详解java的数据类型
  • 【JAVA】Java基础—面向对象编程:封装—保护类的内部数据
  • 应对JSON解析键值对乱序问题的实用解决方案
  • 国家网络安全法律法规
  • mqtt学习笔记(一)
  • 汽车共享管理:SpringBoot技术的应用与挑战
  • 操作系统离散存储练习题
  • C#核心(9)静态类和静态构造函数
  • 机器学习——朴素贝叶斯
  • C++ QT 工具日志异步分批保存
  • 英伟达Isaac Manipulator产品体验
  • 【Vue3】知识汇总,附详细定义和源码详解,后续出微信小程序项目(3)
  • Error response from daemon:
  • OCRSpace申请free api流程
  • Power bi中的lookupvalue函数
  • Oracle In子句
  • 每日OJ题_牛客_春游_贪心+数学_C++_Java
  • Spark:背压机制
  • 南山前海13元一份的猪脚饭
  • mysql 几种启动和关闭mysql方法介绍
  • 青少年编程与数学 02-003 Go语言网络编程 18课题、Go语言Session编程
  • 大语言模型:解锁自然语言处理的无限可能
  • 鸿蒙UI开发——实现环形文字