Prometheus Query Language (PromQL)
Prometheus Query Language (PromQL) 是一种强大的查询语言,用于从Prometheus时间序列数据库中提取数据,PromQL具有丰富的表达式,允许用户执行各种操作,包括数据选择、过滤、聚合和逻辑运算等,以下是一些常用的PromQL特性:
在PromQL中,可以使用度量名称、标签选择器以及时间范围来选择数据。
http_requests_total
: 选择名为http_requests_total
的度量。
{job="apiserver"}
: 使用标签选择器,选择job
标签值为apiserver
的所有度量。
[5m]
: 选择过去5分钟的数据。
可以使用过滤器表达式对数据进行过滤。
http_requests_total{status_code=~"2.."}
: 选择状态码为2xx的http_requests_total
度量。
{instance=~"10..*.80"}
: 使用正则表达式匹配instance
标签值以10
开头且以80
结尾的所有度量。
PromQL支持多种聚合函数,如求和、平均值、最大值、最小值等。
sum(http_requests_total)
: 计算http_requests_total
度量的总和。
avg(http_requests_total)
: 计算http_requests_total
度量的平均值。
PromQL支持逻辑运算符,如and
、or
以及unless
等。
A and B
: 如果A和B都为真,则结果为真。
A or B
: 如果A或B为真,则结果为真
A unless B
: 如果A为真且B为假,则结果为真;否则结果为假。
PromQL提供了一系列内置函数,用于对数据进行处理和转换。
increase(http_requests_total[5m])
: 计算过去5分钟内http_requests_total
度量的增长量。
rate(http_requests_total[5m])
: 计算过去5分钟内http_requests_total
度量的平均速率。
PromQL支持对时间序列数据进行操作,如偏移、缩放以及时间比较等。
http_requests_total offset 5m
: 将http_requests_total
度量的时间序列向后偏移5分钟。
http_requests_total / 10
: 将http_requests_total
度量的值缩放10倍。
http_requests_total > 10
: 选择http_requests_total
度量值大于10的时间点。
PromQL支持子查询,可以在一个查询中使用另一个查询的结果。
sum(http_requests_total) by (instance)
: 按instance
标签对http_requests_total
度量进行分组求和。
PromQL允许将多个表达式组合在一起,形成更复杂的查询。
sum(http_requests_total) by (instance) / sum(http_requests_total) * 100
: 计算各个实例的http_requests_total
度量占总量的百分比。
通过以上特性,PromQL能够灵活地处理和分析时间序列数据,满足各种监控和告警需求。
Q1: 如何在PromQL中查询最近5分钟的请求总数?
A1: 使用以下查询语句可以获取最近5分钟的请求总数:
sum(http_requests_total[5m])
这里,sum()
函数用于计算度量的总和,[5m]
表示过去5分钟的时间范围,http_requests_total
是需要查询的度量。
Q2: 如何使用PromQL查询某个实例在过去1小时内每秒的平均请求数?
A2: 可以使用以下查询语句获取过去1小时内每秒的平均请求数:
rate(http_requests_total[1h])
这里,rate()
函数用于计算度量的平均速率,[1h]
表示过去1小时的时间范围,http_requests_total
是需要查询的度量。
感谢观看,如果您觉得有用,请留下评论、关注和点赞。