Prometheus常用函数

Prometheus 提供了丰富的函数和操作符,帮助用户在 PromQL 查询语言中处理和分析时间序列数据。以下是一些常用的 Prometheus 函数:

1. 聚合函数(Aggregation Functions)

聚合函数用于按某些维度聚合数据,通常用于将多个时间序列合并为一个更具概括性的度量。

  • avg()

    :计算平均值

    scss 复制代码
    avg(http_requests_total)
  • sum()

    :计算总和

    scss 复制代码
    sum(http_requests_total)
  • min()

    :计算最小值

    scss 复制代码
    min(http_requests_total)
  • max()

    :计算最大值

    scss 复制代码
    max(http_requests_total)
  • count()

    :计算数量

    scss 复制代码
    count(http_requests_total)
  • count_values()

    :计算不同标签值的数量

    scss 复制代码
    count_values("method", http_requests_total)
  • topk(k, expr)

    :返回值排名前

    复制代码
    k

    的时间序列

    scss 复制代码
    topk(3, http_requests_total)
  • bottomk(k, expr)

    :返回值排名后

    复制代码
    k

    的时间序列

    scss 复制代码
    bottomk(3, http_requests_total)

2. 统计函数(Statistical Functions)

  • rate()

    :计算时间序列在某个时间段内的速率(适用于计数器类型)

    scss 复制代码
    rate(http_requests_total[5m])
  • irate()

    :计算瞬时速率,适用于计数器类型

    scss 复制代码
    irate(http_requests_total[1m])
  • increase()

    :计算计数器类型的增量值

    scss 复制代码
    increase(http_requests_total[1h])
  • delta()

    :计算某时间段内的值的变化量

    scss 复制代码
    delta(http_requests_total[5m])
  • avg_over_time()

    :计算某个时间区间内的平均值

    scss 复制代码
    avg_over_time(http_requests_total[1h])
  • min_over_time()

    :计算某个时间区间内的最小值

    scss 复制代码
    min_over_time(http_requests_total[1h])
  • max_over_time()

    :计算某个时间区间内的最大值

    scss 复制代码
    max_over_time(http_requests_total[1h])

3. 时间函数(Time Functions)

时间函数用于操作时间戳和时间序列。

  • time()

    :返回当前的时间戳(以秒为单位)

    css 复制代码
    time()
  • timestamp()

    :返回时间序列的时间戳

    scss 复制代码
    timestamp(http_requests_total)

4. 数值处理函数(Mathematical Functions)

这些函数用于进行常见的数学运算。

  • abs()

    :返回绝对值

    scss 复制代码
    abs(http_requests_total)
  • ceil()

    :返回大于或等于该值的最小整数

    scss 复制代码
    ceil(http_requests_total)
  • floor()

    :返回小于或等于该值的最大整数

    scss 复制代码
    floor(http_requests_total)
  • round()

    :返回四舍五入的值

    scss 复制代码
    round(http_requests_total)
  • sqrt()

    :计算平方根

    scss 复制代码
    sqrt(http_requests_total)

5. 字符串处理函数(String Functions)

字符串函数主要用于对标签值或字符串型数据进行处理。

  • label_replace()

    :用于替换标签中的部分内容

    bash 复制代码
    label_replace(http_requests_total, "method", "$1", "status", "(.*)")
  • label_join()

    :将多个标签值连接为一个新标签

    vbscript 复制代码
    label_join(http_requests_total, "method", "-", "status", "code")

6. 查询时间函数(Time Interval Functions)

这些函数用于处理时间区间。

  • avg_over_time()

    :计算某个时间范围内的平均值

    scss 复制代码
    avg_over_time(http_requests_total[1h])
  • rate()

    :计算在某段时间内的速率

    scss 复制代码
    rate(http_requests_total[5m])

7. 率函数(Rate Functions)

用于计算单位时间内的数据变化量。

  • rate()

    :适用于计数器类型,计算单位时间内的变化速率

    scss 复制代码
    rate(http_requests_total[5m])
  • irate()

    :即时速率,适用于计数器类型,计算最近两个数据点的速率

    scss 复制代码
    irate(http_requests_total[1m])

8. 逻辑函数(Logical Functions)

这些函数帮助进行逻辑判断和操作。

  • and

    :用于两个表达式的与操作

    ini 复制代码
    http_requests_total{status="200"} and http_requests_total{status="500"}
  • or

    :用于两个表达式的或操作

    ini 复制代码
    http_requests_total{status="200"} or http_requests_total{status="404"}
  • unless

    :排除某些条件

    ini 复制代码
    http_requests_total unless http_requests_total{status="500"}

9. 过滤与条件(Filters & Conditionals)

  • on()

    :用于条件匹配,可以指定某些标签参与匹配

    ini 复制代码
    http_requests_total{status="200"} on(method) http_requests_total{status="500"}
  • ignoring()

    :忽略特定的标签进行条件匹配

    ini 复制代码
    http_requests_total{status="200"} ignoring(method) http_requests_total{status="500"}

10. 百分比计算(Percentile Calculation)

  • histogram_quantile()

    :用于计算直方图的指定分位数(如 95th 百分位)

    scss 复制代码
    histogram_quantile(0.95, http_request_duration_seconds_bucket)

总结:

Prometheus 提供了多种函数来帮助你处理和分析监控数据。你可以通过这些函数来进行聚合、时间序列计算、统计分析以及进行复杂的查询和可视化。

相关推荐
gelald几秒前
Spring Boot - 自动配置原理
java·spring boot·后端
希望永不加班14 分钟前
SpringBoot 集成测试:@SpringBootTest 与 MockMvc
java·spring boot·后端·log4j·集成测试
uzong18 分钟前
软件人员可以关注的 Skill,亲测确实不错,值得试一下
人工智能·后端
掘金虾21 分钟前
Hono 框架入门到实战:用 Node.js 写一个支持工具调用的流式对话 Agent
后端
用户83562907805123 分钟前
Python 自动拆分 Word 文档教程:按分节符与分页符处理
后端·python
树獭叔叔27 分钟前
Claude Code 工具系统深度剖析:从静态注册到动态发现
后端·aigc·openai
树獭叔叔43 分钟前
Claude Code 的上下文管理:多层渐进式压缩架构深度解析
后端·aigc·openai
计算机学姐43 分钟前
基于SpringBoot的高校竞赛管理系统
java·spring boot·后端·spring·信息可视化·tomcat·mybatis
nghxni1 小时前
LightESB PlatformHttp v1.0.0:DS 数据转换实践
后端
卷毛的小庄1 小时前
被 AI 惯坏后踩的坑:Spring 代理对象 + 反射 = NPE
后端