PromQL 是 Prometheus 内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。
基本用法
查询时间序列
当 Prometheus 通过 Exporter 采集到相应的监控指标样本数据后,我们就可以通过PromQL 对监控样本数据进行查询。
当我们直接使用监控指标名称查询时,可以查询该指标下的所有时间序列。如:
prometheus_http_requests_total
等同于:
prometheus_http_requests_total{
}
该表达式会返回指标名称为 prometheus_http_requests_total 的所有时间序列:

PromQL 还支持用户根据时间序列的标签匹配模式来对时间序列进行过滤,目前主要支持两种匹配模式:完全匹配和正则匹配。
➢ PromQL 支持使用 = 和 != 两种完全匹配模式:
通过使用 label=value 可以选择那些标签满足表达式定义的时间序列;
反之使用 label!=value 则可以根据标签匹配排除时间序列;
例如,如果我们只需要查询所有 prometheus_http_requests_total 时间序列中满足标签 instance 为 hadoop102:9090 的时间 序列,则可以使用如下表达式:
prometheus_http_requests_total{
instance="hadoop102:9090"}
反之使用 instance!=“localhost:9090” 则可以排除这些时间序列:
prometheus_http_requests_total{
instance!="hadoop102:9090"}
PromQL还可以支持使用正则表达式作为匹配条件,多个表达式之间使用 | 进行分离:
使用 label=~regx 表示选择那些标签符合正则表达式定义的时间序列;
反之使用 label!~regx 进行排除;
例如,如果想查询多个环节下的时间序列序列可以使用如下表达式:
prometheus_http_requests_total{
environment=~"staging|testing|development",method!="GET"}
排除用法
prometheus_http_requests_total{
environment!~"staging|testing|development",method!="GET"

本文深入介绍了Prometheus的查询语言PromQL,包括基本用法、时间序列查询、时间位移操作、聚合操作、标量和字符串使用,以及各种运算符的详细说明。通过实例展示了如何查询、过滤和聚合时间序列数据,帮助读者更好地理解和运用PromQL进行监控数据的分析。
最低0.47元/天 解锁文章
157





