Prometheus 查询语言(PromQL):深入解析

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: 【8月更文第29天】Prometheus 是一款开源的监控系统和时间序列数据库,广泛应用于各种系统的监控和告警。PromQL(Prometheus Query Language)是 Prometheus 用来查询和聚合时间序列数据的一种强大语言。本文将详细介绍 PromQL 的功能和语法,包括基本查询、向量操作、聚合函数等,并提供具体的代码示例。

引言

Prometheus 是一款开源的监控系统和时间序列数据库,广泛应用于各种系统的监控和告警。PromQL(Prometheus Query Language)是 Prometheus 用来查询和聚合时间序列数据的一种强大语言。本文将详细介绍 PromQL 的功能和语法,包括基本查询、向量操作、聚合函数等,并提供具体的代码示例。

PromQL 基础

PromQL 的设计旨在简化时间序列数据的查询和处理过程。PromQL 的核心概念包括:

  • 向量:PromQL 处理的数据基本单位。
  • 时间序列:具有相同标签集的一组向量。
  • 标签:键值对形式的元数据,用于标识不同的时间序列。

基本查询

PromQL 支持通过标签选择器来过滤时间序列数据。

选择时间序列
up{job="node"}

这个查询返回所有带有 job=node 标签的时间序列,其中 up 表示监控目标的状态。

指定时间范围
up{job="node"}[5m]

这个查询返回过去 5 分钟内 up 指标的所有样本。

向量操作

向量操作允许对时间序列进行算术运算。

算术运算
node_memory_MemFree_bytes + node_memory_Buffers_bytes

这个查询计算了节点空闲内存加上缓冲区内存的总和。

比较运算
node_cpu{mode!="idle"} > 0.1

这个查询筛选出 CPU 使用率超过 10% 的时间序列。

聚合函数

PromQL 提供了多种内置的聚合函数,如 sum, avg, min, max, count 等。

聚合函数示例
sum(node_memory_MemTotal_bytes) by (instance)

这个查询计算每个实例的总内存,并按实例分组。

标签操作

标签操作允许对标签进行操作,如添加、删除或替换标签。

添加标签
node_memory_MemFree_bytes{env="production"}

这个查询返回 node_memory_MemFree_bytes 指标,并添加了一个 env=production 的标签。

删除标签
ignoring(job) sum(node_memory_MemFree_bytes)

这个查询计算所有 node_memory_MemFree_bytes 的总和,并忽略 job 标签。

时间偏移

时间偏移功能允许查询过去的时间点的数据。

时间偏移
irate(node_cpu_seconds_total{mode!="idle"}[5m]) offset 1h

这个查询返回过去 1 小时前的每分钟 CPU 使用率的增长率。

向量匹配

向量匹配用于连接两个向量,基于它们共有的标签。

向量匹配
node_memory_MemFree_bytes / on(instance) node_memory_MemTotal_bytes

这个查询计算每个实例的空闲内存占总内存的比例。

率和增量

PromQL 提供了 rateirate 函数来计算速率和瞬时速率。

计算速率
rate(node_network_receive_bytes_total[5m])

这个查询计算过去 5 分钟内每个网络接口接收字节的平均速率。

窗口函数

窗口函数用于在固定的时间窗口内执行聚合。

窗口函数
increase(http_requests_total{status_code!~"5.."}[1h])

这个查询统计过去 1 小时内成功的 HTTP 请求总数。

综合示例

假设我们想要计算过去一小时内每个实例的平均 CPU 使用率,并将其与内存使用率相比较。

# 计算 CPU 使用率
cpu_usage_rate := irate(node_cpu_seconds_total{mode!="idle"}[5m])

# 计算内存使用率
memory_usage_rate := (
  (node_memory_MemTotal_bytes - node_memory_MemFree_bytes)
  / node_memory_MemTotal_bytes
)

# 输出结果
(cpu_usage_rate * 100) vs (memory_usage_rate * 100)

结论

PromQL 是一种非常强大的查询语言,它使得查询和聚合时间序列数据变得简单直观。通过本文的学习,你应该能够掌握 PromQL 的基本用法,并能够编写复杂的查询来解决实际的监控问题。PromQL 的灵活性和表达力使得 Prometheus 成为一个非常有效的监控工具,适用于各种规模的系统。

目录
相关文章
|
5月前
|
存储 Prometheus 监控
Prometheus 深度指南:设计理念 · PromQL · Exporter · Thanos
Prometheus 是一款开源的系统监控与报警工具,专为云原生环境设计。它采用拉取模型采集数据,内置高效的本地时序数据库(TSDB),支持丰富的指标类型和四个黄金指标(延迟、流量、错误、饱和度)。其查询语言 PromQL 功能强大,可灵活聚合和分析时间序列数据。此外,通过 Exporter 机制,Prometheus 能轻松扩展到各种系统和服务。针对大规模场景,Thanos 提供高可用解决方案,整合多 Prometheus 实例,实现全局视图和长期存储。整体架构简洁可靠,适用于动态分布式环境。
644 10
Prometheus 深度指南:设计理念 · PromQL · Exporter · Thanos
|
6月前
|
前端开发 JavaScript Java
优雅草卓伊凡:全栈工程师并非盲目学语言,转型价值全解析
优雅草卓伊凡:全栈工程师并非盲目学语言,转型价值全解析
91 0
优雅草卓伊凡:全栈工程师并非盲目学语言,转型价值全解析
|
12月前
|
存储 Cloud Native 关系型数据库
Ganos实时热力聚合查询能力解析与最佳实践
Ganos是由阿里云数据库产品事业部与飞天实验室共同研发的新一代云原生位置智能引擎,集成于PolarDB-PG、Lindorm、AnalyticDB-PG和RDS-PG等核心产品中。Ganos拥有十大核心引擎,涵盖几何、栅格、轨迹等多种数据处理能力,实现了多模多态数据的一体化存储、查询与分析。本文重点介绍了Ganos的热力瓦片(HMT)技术,通过实时热力聚合查询与动态输出热力瓦片,无需预处理即可实现大规模数据秒级聚合与渲染,适用于交通、城市管理、共享出行等多个领域。HMT相比传统网格聚合技术具有高效、易用的优势,并已在多个真实场景中验证其卓越性能。
214 0
|
7月前
|
存储 监控 算法
探秘员工泄密行为防线:基于Go语言的布隆过滤器算法解析
在信息爆炸时代,员工泄密行为对企业构成重大威胁。本文聚焦布隆过滤器(Bloom Filter)这一高效数据结构,结合Go语言实现算法,帮助企业识别和预防泄密风险。通过构建正常操作“指纹库”,实时监测员工操作,快速筛查可疑行为。示例代码展示了如何利用布隆过滤器检测异常操作,并提出优化建议,如调整参数、结合日志分析系统等,全方位筑牢企业信息安全防线,守护核心竞争力。
|
7月前
|
存储 算法 安全
基于 Go 语言的公司内网管理软件哈希表算法深度解析与研究
在数字化办公中,公司内网管理软件通过哈希表算法保障信息安全与高效管理。哈希表基于键值对存储和查找,如用户登录验证、设备信息管理和文件权限控制等场景,Go语言实现的哈希表能快速验证用户信息,提升管理效率,确保网络稳定运行。
103 0
|
8月前
|
存储 运维 负载均衡
Hologres 查询队列全面解析
Hologres V3.0引入查询队列功能,实现请求有序处理、负载均衡和资源管理,特别适用于高并发场景。该功能通过智能分类和调度,确保复杂查询不会垄断资源,保障系统稳定性和响应效率。在电商等实时业务中,查询队列优化了数据写入和查询处理,支持高效批量任务,并具备自动流控、隔离与熔断机制,确保核心业务不受干扰,提升整体性能。
209 11
|
9月前
|
存储 数据库 对象存储
新版本发布:查询更快,兼容更强,TDengine 3.3.4.3 功能解析
经过 TDengine 研发团队的精心打磨,TDengine 3.3.4.3 版本正式发布。作为时序数据库领域的领先产品,TDengine 一直致力于为用户提供高效、稳定、易用的解决方案。本次版本更新延续了一贯的高标准,为用户带来了多项实用的新特性,并对系统性能进行了深度优化。
184 3
|
10月前
|
存储 Go PHP
Go语言中的加解密利器:go-crypto库全解析
在软件开发中,数据安全和隐私保护至关重要。`go-crypto` 是一个专为 Golang 设计的加密解密工具库,支持 AES 和 RSA 等加密算法,帮助开发者轻松实现数据的加密和解密,保障数据传输和存储的安全性。本文将详细介绍 `go-crypto` 的安装、特性及应用实例。
492 0
|
11月前
|
域名解析 网络协议 安全
DNS查询工具简介
DNS查询工具简介
1192 4
|
12月前
|
域名解析 网络协议 安全
DNS查询工具简介
DNS查询工具简介
673 4

相关产品

  • 可观测监控 Prometheus 版
  • 推荐镜像

    更多
  • DNS