Prometheus监控 - 查询表达式篇

Overview

Prometheus提供了一种功能性表达式语言,能够让用户实时的选择和聚合时间序列的数据。表达式返回的结果可以被显示为曲线图,也可以在prometheus浏览器中显示为表格,或者通过HTTP API经由外部系统处理。

表达式语言类型

Prometheus表达式或子表达式可以评估为一下四种类型之一:

  • 即时向量(Instant vector) - 包含每个时间序列单个样品的一组时间序列,共享相同的时间戳
  • 范围向量(Range vector) - 包含一个范围内数据点的一组时间序列
  • 标量(Scalar) - 一个简单的数字浮点值
  • 字符串(String) - 一个简单的字符串值;当前未使用

根据使用情况(例如画图或者显示表达式的输出),只有某些类型是合法的,例如,即时向量表达式是可以画图的唯一类型。

时间序列选择器

即时向量选择

即时向量选择器允许选择一组时间序列,或者某个给定的时间戳的样本数据。下面这个例子选择了具有http_requests_total的时间序列:

http_requests_total

你可以通过附加一组标签,并用{}括起来,来进一步筛选这些时间序列。下面这个例子只选择有http_requests_total名称的、有prometheus工作标签的、有canary组标签的时间序列:

http_requests_total{job="prometheus",group="canary"}

另外,也可以也可以将标签值反向匹配,或者对正则表达式匹配标签值。下面列举匹配操作符:

  • =:选择正好相等的字符串标签
  • !=:选择不相等的字符串标签
  • =~:选择匹配正则表达式的标签(或子标签)
  • !=:选择不匹配正则表达式的标签(或子标签)

例如,选择staging、testing、development环境下的,GET之外的HTTP方法的http_requests_total的时间序列:

http_requests_total{environment=~"staging|testing|development",method!="GET"}

范围向量选择

范围向量表达式正如即时向量表达式一样运行,但是前者返回从当前时刻开始的一定时间范围的时间序列集合回来。语法是,在一个向量表达式之后添加[]来表示时间范围,持续时间用数字表示,后接下面单元之一:

  • s:seconds
  • m:minutes
  • h:hours
  • d:days
  • w:weeks
  • y:years

在下面这个例子中,我们选择最后5分钟的记录,metric名称为http_requests_total、作业标签为prometheus的时间序列的所有值:

http_requests_total{job="prometheus"}[5m]

操作符

Prometheus支持多种二元和聚合的操作符,参考这里。

函数

Prometheus支持多种函数,来对数据进行操作,参考这里。

你可能感兴趣的:(monitoring)