PromQL基础语法(上)-数据类型、时序选择器、二元操作符【prometheus查询语句】

1. 数据类型

1.1 Gauge(仪表盘)

详情见:《动手写prometheus的exporter-01-Gauge(仪表盘)》

1.2 Counter(计数器)

详情见:《动手写prometheus的exporter-02-Counter(计数器)》

1.3 HIstogram(直方图)

详情见:动手写prometheus的exporter-03-HIstogram(直方图)》

1.4 Summary(摘要)

详情见:《动手写prometheus的exporter-04-Summary(摘要)》

2. 时序选择器

2.1 瞬时向量选择器

  • 简单示例

以下是一个端口存活的

probe_success
image.png
  • 条件过滤

对于上边的结果,我们做一些过滤:

probe_success{group="http", job="http_hq_nginx", project="HQ-AllInOne-PC"}
image.png

2.2 区间向量选择器

  • 时间单位
符号 说明
s
m
h 小时
d
w 星期
y
  • 使用
system_mem_used_percent[60s]
  • 有图有真相


    image.png

2.3 偏移修饰器

- 瞬时向量的偏移修饰器

system_mem_used_percent offset 5m
image.png

- 区间向量的偏移修饰器

system_mem_used_percent[3m] offset 5m
image.png

3. 二元操作符

3.1 算术操作符

- 符号说明

符号 说明
+
-
*
/
% 取余
^

- 示例

system_mem_used{ident="10.10.239.31"}+ system_mem_free{ident="10.10.239.31"}- system_mem_total{ident="10.10.239.31"}

说明:

  • prometheus的 system_mem_usedfree 命令的 used +buff/cache
  • 以上: 使用的+空闲的=总数

3.2 匹配操作符

- 符号说明

符号 说明
== 等于
!= 不等于
> 大于
>= 大于等于
< 小于
<= 小于等于
=~ 匹配正则
!~ 匹配正则非

- 示例(比较判断)

如图可见 大于 80%的都被筛选出来


image.png

- 示例(正则匹配)

image.png

3.3 逻辑操作符

- 符号说明

符号 说明
and 和(交集)
or 或(并集)
unless 补集

- 示例(and | or)

system_mem_used_percent  > 80 or  system_mem_used_percent < 10

有图有真相

可见大于80% 和 小于 10%的都被筛选出来了。

image.png

- 示例 (unless)

(system_mem_used_percent  >75)  unless (system_mem_used_percent  < 70   or system_mem_used_percent  > 85 ) 
  • 先计算 < 70% or >85%
  • 再计算unless 是第一步的补集,结果 70% <= x <= 85%
  • 最后和 >75% 取交集,结果 75% < x < 85%

有图有真相:

image.png

- 优先级 (and > or)

and优先级高于or

  • 示例
system_mem_used_percent  > 5 or system_mem_used_percent < 10 and system_mem_used_percent > 80  

先计算and(结果是空),再计算 or(空和大于5%取or) ,因此结果是 >5

  • 有图有真相

如图可见,大于5%的都被取出来了

image.png
  • 先算or怎么办

用括号把先算的括起来,括号可以套括号

(system_mem_used_percent  > 5 or system_mem_used_percent < 10 )and system_mem_used_percent > 80  

括号里边计算or (结果0~100%),再计算括号外边 and,结果 >80%

  • 有图有真相,验证结果

如下图,结果只有大于80%的几条结果

image.png

- 优先级(unless > or)

  • 示例
system_mem_used_percent  > 90   or   system_mem_used_percent  > 60   unless system_mem_used_percent  > 70 

计算说明:

  • 先计算unless:x >70的补集是x <= 70 ,结果跟 x > 60 取交集 ,得 60< x <=70
  • 再计算or:x > 9060< x <=70 的交集,结果是:x > 9060< x <=70
  • 有图有真相,验证结果
image.png
  • 如果要先计算or
(system_mem_used_percent  > 90   or   system_mem_used_percent  > 60)   unless system_mem_used_percent  > 70 

计算说明:

  • 先计算括号里or:括号里结果为 >60%
  • 再计算括号外unless:>70%的补集是 <= 70%,和 >60%取并集 60< x <= 70%
  • 有图有真相,结果验证


    image.png

3.4 优先级

顺序 符号
1 ^
2 *, /, %
3 +, -
4 ==, !=, <=, <, >=, >
5 and, unless
6 or

接下来,《PromQL基础语法(下)》将讲述“聚合运算符”和“内置函数”


你可能感兴趣的:(PromQL基础语法(上)-数据类型、时序选择器、二元操作符【prometheus查询语句】)