跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Go / Golang算法

Prometheus 核心函数实战:指标处理与聚合技巧

Prometheus 查询语言(PromQL)提供了丰富的内置函数用于处理时间序列数据。梳理了常用函数,涵盖数学运算、时间提取、范围向量分析(如 rate/increase)、直方图分位数计算及标签操作。重点区分了计数器与仪表盘(gauge)函数的使用场景,避免常见误用,帮助开发者高效编写监控查询语句。

BackendPro发布于 2025/1/20更新于 2026/7/2036 浏览
Prometheus 核心函数实战:指标处理与聚合技巧

Prometheus 常用函数详解

在编写监控查询语句时,理解内置函数的行为至关重要。PromQL 提供了丰富的工具来处理时间序列数据,从基础的数学运算到复杂的时间窗口分析。下面我结合实战经验,梳理了这些函数的使用场景和注意事项。

基础数学与标量转换

这类函数主要用于对样本值进行数值处理或类型转换。

  • abs(v):取绝对值。适用于需要消除负数影响的场景。
  • ceil() / floor():向上或向下取整。常用于将浮点指标转换为整数展示。
  • round(v, to_nearest=1):四舍五入。支持指定精度,比如 to_nearest=0.5。
  • exp(), ln(), log2(), log10(), sqrt():指数、对数和开方运算。注意特殊值(如 NaN、Inf)的处理逻辑。
  • scalar(v):将单元素向量转为标量。如果输入不是恰好一个元素,会返回 NaN,适合用于条件判断。
  • vector(s):将标量转为无标签的向量,常用于构造常量参与计算。

时间与日期提取

这些函数基于 UTC 时间,常用于按时间维度分组或过滤。

  • year(), month(), day_of_month(), day_of_week(), hour(), minute():分别返回年、月、日、周几、小时和分钟。默认参数为当前时间,也可传入向量。
  • time():返回表达式求值时的 Unix 时间戳(秒)。注意它不是实时时钟,而是评估时刻的快照。
  • timestamp(v):获取向量的采样时间戳。

范围向量分析(重点)

这是 PromQL 最强大的部分,但也是新手最容易出错的地方。务必区分 Gauge(仪表盘) 和 Counter(计数器) 的使用场景。

变化率与增量

  • rate(v):计算每秒平均增长率。自动处理计数器重置(reset),并外推至时间范围两端。推荐用于告警和慢速计数器。组合聚合操作时,先算 rate 再聚合。
  • increase(v):计算指定时间范围内的总增量。本质是 rate * 秒数,主要用于人类阅读。同样仅适用于计数器。
  • irate(v):基于最后两个数据点计算的瞬时速率。波动大,适合快速变化的计数器绘图,但不建议用于告警,容易误报。

注意:rate 和 irate 只能用于 Counter。如果用 Gauge 计算,结果可能没有意义。

差值与导数

  • delta(v):计算范围内首尾值的差值。支持非整数结果,适用于 Gauge(如温度、内存使用率)。不要用于 Counter。
  • deriv(v):计算每秒钟的导数。同样仅限 Gauge。
  • idelta(v):计算最后两个样本的差值。类似 delta 但只取最近两点,仅限 Gauge。
  • changes(v):统计范围内数值变化的次数。
  • resets(v):统计计数器重置的次数。任何连续采样值的下降都被视为重置。

时间窗口聚合

当需要对一段时间内的数据进行汇总时,使用以下函数(后缀 _over_time)。

  • avg_over_time, min_over_time, max_over_time, sum_over_time:区间平均值、最小值、最大值、总和。
  • count_over_time:区间内样本数量。
  • quantile_over_time, stddev_over_time, stdvar_over_time:分位数、标准差、方差。

所有值在区间内权重相同,即使采样间隔不均匀。

直方图分位数

处理 Histogram 类型的指标(如请求延迟)时,必须配合 histogram_quantile。

histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[10m]))
  • 参数要求:第一个参数是分位数(0~1),第二个参数是带有 le 标签的 bucket 向量。
  • 插值逻辑:假设桶内线性分布。最高桶的上限必须是 +Inf,否则返回 NaN。
  • 聚合技巧:如果需要按 job 聚合,记得在 by 子句中保留 le 标签,例如 sum(rate(...)) by (job, le)。

标签操作

动态修改或合并标签,增强查询灵活性。

  • label_join(v, dst_label, separator, src_label_1, ...):将多个源标签的值用分隔符拼接成目标标签。
  • label_replace(v, dst_label, replacement, src_label, regex):通过正则匹配替换标签值。支持 $1, $2 引用捕获组。

示例:

label_replace(up{service="a:b"}, "foo", "$1", "service", "(.*)")

存在性检查

  • absent(v):如果向量中没有元素,返回包含单个值为 1 的向量。常用于检测某个指标是否丢失。

排序

  • sort(v) / sort_desc(v):按样本值升序或降序排列向量元素。

总结:写 PromQL 时,先明确指标类型(Counter 还是 Gauge),再选择合适的函数。对于计数器,首选 rate;对于仪表盘,关注 delta 或 deriv。遇到直方图时,别忘了 le 标签的处理细节。

目录

  1. Prometheus 常用函数详解
  2. 基础数学与标量转换
  3. 时间与日期提取
  4. 范围向量分析(重点)
  5. 变化率与增量
  6. 差值与导数
  7. 时间窗口聚合
  8. 直方图分位数
  9. 标签操作
  10. 存在性检查
  11. 排序
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • C++20 Concepts 简化模板元编程的原理与实践
  • Windows 本地部署 MinIO 对象存储及 Web 控制台配置指南
  • Cursor Chat Browser:管理 AI 聊天历史的 Web 应用
  • Java 大厂实习面试高频技术题汇总与解析
  • Linux 系统学习:深入剖析 Git 原理与使用进阶
  • 基于 Go 的电子病历智能助手与 HIS 对接实战:接口契约设计
  • AI 产品架构设计:从 0 到 1 搭建信息架构与核心业务流程
  • Web 自动化测试入门指南:从概念到 Selenium 实战
  • eBay 商品数据采集实战:基于 IPIDEA 网页抓取 API 的 Python 接入方案
  • Spring Boot Web 后端开发核心注解详解
  • 前端流式输出实现详解:从原理到实践
  • OpenCV Python 基础入门教程
  • 前端文件下载实战:从原理到最佳实践
  • 大模型技术原理与工程化应用实践指南
  • Spring AI MCP Server 集成与源码解析
  • 自动化机器学习实战:从调参到模型部署指南
  • GitHub Copilot Agent 模式配置与使用技巧
  • 开源 AI 编程工具选型对比:OpenCode 与 GitHub Copilot
  • 基于城市场景的无人机三维路径规划:导航变量多目标粒子群优化算法 NMOPSO
  • 延迟退休时代,AI 能帮上哪些忙

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online