Prometheus 基础查询(一)
Prometheus 提供了一个名为 PromQL (Prometheus query language) 的函数式查询语言,它允许用户实时选择和聚合时间序列数据。表达式的结果可以显示为图形,在 Prometheus 的表达式浏览器中作为表格数据查看,或者由外部系统通过 HTTP API 使用。
查询表达式语言数据类型
在 Prometheus 的表达式语言中,表达式或子表达式可以被计算为以下四种类型之一:
Instant vector 瞬时向量是一组时间序列,包含每个时间序列的单个样本,所有数值共享相同的时间戳
Range vector 范围向量是一组时间序列,包含每个时间序列随时间变化的一系列数据点
Scalar 标量是一个简单的数字浮点值
String 简单的字符串值,目前未使用
根据用例的不同(例如,当图形化和显示表达式的输出时),只有一些类型是合法的,作为用户指定表达式的结果。例如,返回即时向量的表达式是唯一可以直接绘制图形的类型。
Literal
字符串类型
字符串可以指定为单引号、双引号或反引号中的文字。
PromQL 遵循与 Go 相同的转义规则。在单引号或双引号中,反斜杠开始转义序列,转义序列后面可能跟着 a, b, f, n, r, t, v 或\。可以使用八进制(\nnn)或十六进制(\xnn, \unnnn 和\ unnnnnnn)来提供特定的字符。
反引号内不处理转义。与 Go 不同的是,Prometheus 不会丢弃反引号内的换行符。
例子:
```
"this is a string"
'these are unescaped: \n \\ \t'
`these are not unescaped: \n ' " \t`
```
浮点类型
标量浮点值可以写成文字整数或浮点数的格式(为了更好的可读性,只包含空格):
```
[-+]?(
[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?
| 0[xX][0-9a-fA-F]+
| [nN][aA][nN]
| [iI][nN][fF]
)
```
比如:
```
23
-2.43
3.4e-9
0x8f
-Inf
NaN
```
子查询
子查询允许您针对给定的范围和分辨率运行即时查询。子查询的结果是一个范围向量。
语法: <instant_query> '[' <range> ':' [<resolution>] ']' [ @ <float_literal> ] [ offset <duration> ]
<resolution>这个选项是可选的。默认值是全局计算间隔。
操作符
Prometheus 支持许多二进制和聚合操作符。这些在 PromQL 操作符页面中有详细描述。
函数
Prometheus 支持几个对数据进行操作的函数。PromQL 函数页面详细描述了这些函数。
评论
PromQL 支持以 # 开头的行注释。例子:
```
# This is a comment
```
版权声明: 本文为 InfoQ 作者【耳东@Erdong】的原创文章。
原文链接:【http://xie.infoq.cn/article/ee0d522e4d25ac1aabf3c8ab6】。未经作者许可,禁止转载。
评论