0
点赞
收藏
分享

微信扫一扫

PromQL:高效查询时间序列数据的利器

PromQL(Prometheus Query Language)是Prometheus监控系统的查询语言,专门用于处理时间序列数据。它允许用户从Prometheus中提取、操作和显示数据,通常用于生成实时监控图表或告警规则。


1. 基本数据类型

PromQL的查询结果有四种数据类型:

  • 瞬时向量(Instant Vector):某一时刻的一组时间序列数据。
  • 范围向量(Range Vector):一段时间内的一组时间序列数据。
  • 标量(Scalar):单一的浮点数值。
  • 字符串(String):用于呈现文本数据。

2. 基本查询

PromQL查询的基础是时间序列选择器,其形式如下:

http_requests_total

这条查询返回了所有名为http_requests_total的时间序列。可以通过加标签来缩小范围:

http_requests_total{method="GET", status="200"}

这会返回仅包含标签method="GET"status="200"的时间序列。

3. 操作符

PromQL支持多种操作符,主要分为两类:

  • 算术操作符:如+, -, *, /, %,用于对时间序列执行算术运算。
  • 比较操作符:如==, !=, >, <,用于比较时间序列中的数值。

举个例子,计算每秒的HTTP请求数:

rate(http_requests_total[5m])

rate函数计算过去5分钟的HTTP请求速率。

4. 函数

PromQL中有很多函数可以对时间序列进行复杂操作,如:

  • rate(): 计算某个时间范围内的每秒增长率。
  • avg(), sum(), min(), max(): 用于聚合时间序列数据。
  • increase(): 计算时间序列在某一段时间内的增加量。

例如,计算每分钟的平均CPU使用率:

avg(rate(cpu_usage_total[1m]))

5. 告警规则

PromQL也常用于定义告警规则,例如:

avg_over_time(cpu_usage_total[5m]) > 0.8

这条规则会在过去5分钟的CPU使用率超过80%时触发告警。

6. 聚合操作

PromQL允许用户通过聚合操作对数据进行汇总,比如:

  • sum: 对时间序列求和。
  • avg: 计算时间序列的平均值。

例如,汇总所有实例的内存使用情况:

sum(memory_usage_bytes)

示例:

假设你想要查看每个实例的CPU使用率,并找出使用率超过80%的实例:

cpu_usage_total{job="app"} > 0.8

这个查询会返回所有CPU使用率超过80%的实例的时间序列数据。


举报

相关推荐

0 条评论