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

在这里插入图片描述

  • 条件过滤

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

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

在这里插入图片描述

2.2 区间向量选择器

  • 时间单位
符号说明
s
m
h小时
d
w星期
y
  • 使用
system_mem_used_percent[60s]
  • 有图有真相
    在这里插入图片描述

2.3 偏移修饰器

- 瞬时向量的偏移修饰器

system_mem_used_percent offset 5m

在这里插入图片描述

- 区间向量的偏移修饰器

system_mem_used_percent[3m] offset 5m

在这里插入图片描述

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%的都被筛选出来
-

- 示例(正则匹配)

在这里插入图片描述

3.3 逻辑操作符

- 符号说明

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

- 示例(and | or)

system_mem_used_percent  > 80 or  system_mem_used_percent < 10

有图有真相

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

在这里插入图片描述

- 示例 (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%

有图有真相:

在这里插入图片描述

- 优先级 (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%的都被取出来了

在这里插入图片描述

  • 先算or怎么办

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

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

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

  • 有图有真相,验证结果

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

在这里插入图片描述

- 优先级(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
  • 有图有真相,验证结果

在这里插入图片描述

  • 如果要先计算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%
  • 有图有真相,结果验证
    在这里插入图片描述

3.4 优先级

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

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


在这里插入图片描述

posted on 2022-11-02 21:08  运维开发玄德公  阅读(53)  评论(0编辑  收藏  举报  来源

导航