PromQL
,允许用户实时选择和汇聚时间序列数据。表达式的结果可以在浏览器中显示为图形,也可以显示为表格数据,或者由外部系统通过 HTTP API 调用。a
, b
, f
, n
, r
, t
, v
或 \
。特殊字符可以使用八进制(\nnn
)或者十六进制(\xnn
,\unnnn
和 \Unnnnnnnn
)。[-](digits)[.(digits)]
的形式。http_requests_total
的所有时间序列:{}
)里附加一组标签来进一步过滤时间序列。http_requests_total
,job
标签值为 prometheus
,group
标签值为 canary
的时间序列:=
: 选择与提供的字符串完全相同的标签。!=
: 选择与提供的字符串不相同的标签。=~
: 选择正则表达式与提供的字符串(或子字符串)相匹配的标签。!~
: 选择正则表达式与提供的字符串(或子字符串)不匹配的标签。http_requests_total
,环境为 staging
、testing
或 development
,HTTP 方法为 GET
的时间序列:<metric name>{label=value}
的形式以外,我们还可以使用内置的 __name__
标签来指定监控指标名称。例如:表达式 http_requests_total
等效于 {__name__="http_requests_total"}
。也可以使用除 =
之外的过滤器(=
,=~
,~
)。以下表达式选择指标名称以 job:
开头的所有指标:[]
进行定义,以指定应为每个返回的区间向量样本值中提取多长的时间范围。s
- 秒m
- 分钟h
- 小时d
- 天w
- 周y
- 年http_requests_total
,job
标签值为 prometheus
的所有时间序列:offset
。http_requests_total
值:offset
关键字需要紧跟在选择器({}
)后面。以下表达式是正确的:http_requests_total
一周前的 5 分钟之内的 HTTP 请求量的增长率:sum
, avg
等,大多数聚合的时间序列数据所对应的时间戳没有对齐。由于它们的独立性,我们需要在这些时间戳中选择一个时间戳,并已这个时间戳为基准,获取小于且最接近这个时间戳的时间序列数据。api_http_requests_total
这样简单的度量指标名称选择器,可以扩展到具有不同标签的数千个时间序列中,这对于 Prometheus 的查询语言是非常重要的。还要记住,对于聚合操作来说,即使输出的时间序列集非常少,它也会在服务器上产生负载。这类似于在关系型数据库中查询一个字段的总和,总是非常缓慢。