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%的实例的时间序列数据。










