本文共 1002 字,大约阅读时间需要 3 分钟。
PromQL是一种由Prometheus提供的函数式表达式语言,专为处理和聚合时间序列数据而设计。它允许用户实时查询和操作数据,并将结果以表格或图表形式展示或通过HTTP API提供给外部系统使用。与传统SQL不同,PromQL在处理时间序列数据方面具有更强大的表达能力,支持丰富的聚合和运算功能。
1.1、语言数据类型
PromQL表达式中,一个子表达式可以表示以下四种数据类型之一:
Instant vector(瞬时矢量):一组时间序列数据,每个时间序列包含一个时间戳对应的数据点,且所有时间序列具有相同的时间戳。
Range vector(范围矢量):一组时间序列,包含某一时间范围内的所有数据点。
Scalar(标量):一个数值类型,可以是浮点数或整数。
String(字符串):当前未被支持。
1.2、Literals数据格式
1.2.1 String literals(字符串字面量):
字符串可以通过单引号(‘’)、双引号(“”)或反引号(``)包裹表示。
1.2.2 Float literals(浮点字面量):
浮点数格式为:-[.(digits)],例如:-2.43
1.3、Time series(时间序列)选择器
1.3.1 Instant vector selectors(即时矢量选择器):
即时矢量选择器用于选择一组时间序列及其对应的特定时间戳值,需指定指标名称。
示例:
查询http_requests_total指标的所有时间序列表达式:
http_requests_total
通过在花括号{}中添加逗号分隔的标签匹配器列表,可以进一步筛选时间序列。
示例:
http_requests_total{job="prometheus",group="canary"} 支持以下标签匹配运算符:
=:等于
!=:不等于
=~:选择与字符串匹配的标签(正则表达式匹配)
!~:选择不与字符串匹配的标签
1.3.2 Range vector selectors(范围矢量选择器):
范围矢量选择器的工作原理与即时矢量选择器类似,唯一区别在于选择的时间序列是一个时间范围内的数据点。
示例:
http_requests_total{job="prometheus"}[5m] 上述表达式表示过去5分钟内的http_requests_total指标数据。
转载地址:http://rexfk.baihongyu.com/