口腔建立网站,如何增加网站的访问量,wordpress dedecms帝国,泵阀网站建设文章目录 PromQL简介数据类型1、瞬时数据 (Instant vector)2、区间数据 (Range vector)➢ Time Durations➢ Offest modifier➢ modifier 3、标量数据 (Scalar)4、字符串 (String) 条件匹配1、完全匹配2、正则匹配 运算符1、比较运算符2、算数运算符3、逻辑运算符4、聚合运算符… 文章目录 PromQL简介数据类型1、瞬时数据 (Instant vector)2、区间数据 (Range vector)➢ Time Durations➢ Offest modifier➢ modifier 3、标量数据 (Scalar)4、字符串 (String) 条件匹配1、完全匹配2、正则匹配 运算符1、比较运算符2、算数运算符3、逻辑运算符4、聚合运算符➢ 求和 (sum)➢ 计数 (count)➢ 最大值 (max)➢ 最小值 (min)➢ 求平均值 (avg)➢ 取前x个值 (topk)➢ 取后x个值 (bottomk) 5、匹配运算➢ 关联标签 (on)➢ 忽略标签 (ignoring)➢ 以某个标签进行计算 (by)➢ 舍弃某个标签后进行计算 (without) PromQL简介
PromQL是prometheus自己开发的数据查询DSL语言语言表现力非常丰富支持条件查询、操作符、并且内建了大量内置函数供我们针对监控数据的各种维度进行查询。
数据类型
PromQL 表达式计算出来的值有以下几种类型
瞬时向量 (Instant vector)一组时序每个时序只有一个采样值区间向量 (Range vector)一组时序每个时序包含一段时间内的多个采样值标量数据 (Scalar)一个浮点数字符串 (String)一个字符串
1、瞬时数据 (Instant vector)
定义瞬时数据表示的是当前时刻的数据 示例查询CPU的使用时间 (node_cpu_seconds_total)
2、区间数据 (Range vector)
定义区间数据表示的是在某一个时间范围内的数据可以分为以下几种
➢ Time Durations
表示持续时间计量单位包含毫秒(ms)、秒(s)、分钟(m)、小时(h)、天(d)、周(w)、年(y)等。 示例查询CPU1分钟内的使用时间 (node_cpu_seconds_total[1m]) 可以看到1分钟内每个指标有4个值采样周期是15s。
➢ Offest modifier
Offset modifier 表示偏移量修饰符允许更改查询中单个瞬间和范围向量的时间偏移量。 示例查询CPU使用时间在5分钟以前的数据 (node_cpu_seconds_total offset 5m)
➢ modifier
修饰符 后面加上一个Unix时间戳可以查询改时间点的数据。 注意这种用法需要在prometheus启动时添加参数 --enable-featurepromql-at-modifier 并且以前老版本的prometheus可能不支持这种用法。 示例查询2022.01.25 00:00:00这个时刻CPU的使用时间 (node_cpu_seconds_total1643040000)
3、标量数据 (Scalar)
定义标量数据没有时间属性每个时间点数值一致。 示例查询CPU使用时间所有标签的个数 (count(node_cpu_seconds_total) )
4、字符串 (String)
定义字符串在PromQL中用于表示文本数据。 示例可以用单引号‘’、双引号“”或反引号来指定。在PromQL中字符串通常用于标签匹配或作为函数参数。
条件匹配
promQL支持各种条件匹配条件匹配符有 、! 、~ 、!~
选择与提供的字符完全相同的数据!选择不等于提供的字符串的数据~选择与提供的字符串进行正则表达式匹配的数据!~选择与提供的字符串不匹配的数据
1、完全匹配
示例1查询CPU第一个核的使用时间 (node_cpu_seconds_total{cpu“0”})
示例2查询CPU除第一个外其他核的使用时间 (node_cpu_seconds_total{cpu!“0”} )
示例3查询CPU第一个、第二个核的使用时间 (node_cpu_seconds_total{cpu~“0|1”})
示例4查询CPU除第一个、第二个外其他核的使用时间 (node_cpu_seconds_total{cpu!~“0|1”})
2、正则匹配
示例查询CPU第一个核且mode是i开头的使用时间 (node_cpu-seconds_total{cpu“0”,mode~“i.*”})
运算符
PromQL支持各种运算符并对结果数据进行运算和过滤。
1、比较运算符
比较运算符有 、! 、 、 、 、 比较运算符与数学中和其他语言的含义是一样的 示例查询CPU使用时间等于0的标签 (node_cpu_seconds_total 0) 示例查询CPU使用时间不等于0的标签 (node_cpu_seconds_total ! 0) 其他比较运算符的用法与上面类似就不举例了。
2、算数运算符
算术运算符有加 、减- 、乘* 、除/ 、取余% 、幂次方^等 示例计算主机CPU使用时间和主机上面虚拟机使用时间的和 (node_cpu_seconds_total node_cpu_guest_seconds_total) 其他算数运算符的用法与上面类似就不举例了。
3、逻辑运算符
逻辑运算符有和(and)、或(or)、非(unless) 示例查询CPU的时间大于0且小于10的标签 (node_cpu_seconds_total 0 and node_cpu_seconds_total 10) 其他逻辑运算符的用法与上面类似就不举例了。
4、聚合运算符
➢ 求和 (sum)
示例计算CPU所有核的总使用时间 (sum(node_cpu_seconds_total))
➢ 计数 (count)
示例计算CPU的核数 (count(node_cpu_seconds_total{mode“system”}))
➢ 最大值 (max)
示例查询CPU第一个核中使用时间最大值 (max(node_cpu_seconds_total{cpu“0”}))
➢ 最小值 (min)
示例查询CPU第一个核中使用时间最小值 (min(node_cpu_seconds_total{cpu“0”}) )
➢ 求平均值 (avg)
示例查询CPU所有核的平均使用时间 (avg(node_cpu_seconds_total))
➢ 取前x个值 (topk)
示例查询CPU所有核中排名前两个的核 (topk(2,node_cpu_seconds_total))
➢ 取后x个值 (bottomk)
示例查询CPU所有核中排名后两个的核 (bottomk(2,node_cpu_seconds_total))
5、匹配运算
➢ 关联标签 (on)
定义将两个指标进行算数运算时如果两个指标的标签不完全相同可以匹配相同的标签进行计算。 示例计算CPU每个核系统态和用户态的总使用时间 (node_cpu_seconds_total{mode“system”} on(instance,cpu) node_cpu_seconds_total{mode“user”})
➢ 忽略标签 (ignoring)
定义将两个指标进行算数运算时如果两个指标的标签不完全相同可以忽略不一样的标签进行计算忽略运行状态。 示例计算CPU每个核系统态和用户态的总使用时间 (node_cpu_seconds_total{mode“system”} ignoring(mode) node_cpu_seconds_total{mode“user”})
➢ 以某个标签进行计算 (by)
示例计算每个CPU核的各个状态的总使用时间 (sum(node_cpu_seconds_total) by (cpu)))
➢ 舍弃某个标签后进行计算 (without)
示例计算每个CPU核的各个状态的总使用时间 (sum(node_cpu_seconds_total) without (cpu))