prometheus 的查询语句PromQl怎么写

Prometheus的数据特点:

Prometheus 将pull来的数据存储在自己的DB中,称为TSDB(Time Series Database),每一个指标随时间点的变化而对应一个个散列值,由此构成一个时间序列,多个指标就构成了多个时间序列,用户可以按照自己的需要进行指标数据的提取和图表展示;
在这里插入图片描述

prometheus 表达式语言中,有四种类型:

即时向量(instant vector) :包含每个时间序列的单个样本的一组时间序列,共享相同的时间戳。
范围向量(Range vector) :包含每个时间序列随时间变化的数据点的一组时间序列。
标量(Scalar) :一个简单的数字浮点值
字符串(String): 一个简单的字符串值(目前未被使用)
在这里插入图片描述

prometheus提供了功能性表达式语言,可让用户对于时间序列的数据进行选择和聚合。通过表达式查询的结果可以绘制为曲线图,也可以在prometheus提供的表达式浏览器中显示为表格,也可以通过外部系统以HTTP API来调用使用。

Expression即PromQl的书写规范:

Prometheus基于指标名称(metrics name)和附属的标签集唯一定义一条时间序列

  • 指标名称代表着监控目标上某类可测量属性的基本特征标识
  • 标签则是这个基本特征上再次细分的多个可测量维度
    PromQl是prometheus Server 内置的数据查询语言

PromQl 怎么用?

打开prometheus的web页面,在Expression 框里面输入指标名称:

在这里插入图片描述

在这里插入图片描述

数据的筛选:

等值查询:

点击excute即可得到查询结果,若想要进一步筛选数据,缩小范围,可以在metric name 指标名称后面加大括号{},在括号里面添加标签属性进行过滤:
例如node_cpu_seconds_total{cpu=“0”} 就是选择node_cpu_seconds_total指标的并且cpu为0的数据:
在这里插入图片描述

不等值查询

在用标签进行过滤的时候也可以用不等值查询:
在这里插入图片描述

偏移修饰符(offset modifier)

偏移修饰符允许更改查询中单个即时向量和范围向量的时间偏移量
例如:
node_cpu_seconds_total{cpu=“0”,mode=~“s.*”}offset 5m
是查看指标在5m前的值:
在这里插入图片描述

正则表达式的应用

使用=~“表达式” 进行正则表达式的匹配
如:node_cpu_seconds_total{cpu=“0”,mode=~“s.*”} 就是选择CPU为0的,并且mode的值以s开头的所有的样本数值:
在这里插入图片描述

范围向量的查询:

以上展示的即时向量的使用展示,即某一时刻的指标值,在Prometheus graph中会默认展示最近1h内的数据:
在这里插入图片描述

Expression中的表达式后面加入一个方括号[] ,括号里面定义时间范围如5m、1h时 原来的即时向量就变成了范围向量,这时的数据量就不是一个了,而是多个:
在这里插入图片描述
范围向量选择器的单位:
s:seconds
m:minutes
h:hours
d:days
w:weeks
y:years
,例如,以下表达式返回相对于当前查询时间5分钟前的http_requests_total值:

那么范围向量是无法绘图的,因为即时向量在绘图时Prometheus已经默认加了一个时间的范围,而范围向量本身就是带了时间范围的“一堆”数据了,无法展示成趋势图,这个时候一般会用rate函数处理,得到5m钟内的node_cpu_seconds_total指标的变化速率:
在这里插入图片描述
这样就可以绘图了:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42808782/article/details/116399473