第5章 PromQL
5.1 时序数据库
时序数据库(TSDB)用于保存时间序列(按时间变化)的海量数据,是一种高性能,低成本,稳定可靠的专业化数据库。它可以提供高效读写,高压缩比低成本存储,降精度,
插值,多维度聚合计算和查询功能,解决由于设备采集点数据量巨大,数据采集频率高而造成的存储成本高,写入和查询分析效率低的问题。
应用场景如下:
1.物联网设备监控分析
2.智慧城市建设
3.系统运维和业务实时监控
5.2 PromQL简介
PromQL 不是类SQL语言,表现力非常丰富,可以使用标签进行任意聚合,还可以使用标签将不同的指标连接在一起进行算术操作。
5.2.1 数据模型与数据类型
prometheus 与其他主流的数据库一样,在数据模型的核心定义上,一条prometheus数据会包含一个指标名称(metric name)和一个或多个标签(label)以及
metric value。metric name 加一组label 作为唯一标识来定义 time series,也就是时间线。在查询时,支持根据 labels 条件查找 time series,支持简单的
条件,也支持复杂条件。
PromQL 数据类型归类为以下四种:
1.即时向量
是指同一时刻的一组时间序列,每个时间序列包含一个样本,所有样本共享相同的时间戳,即每个时序只有一个点。
2.区间向量
是指在任何一个时间范围内的一组时间序列,包含每个时间序列随时间变化的一系列数据点,这时每个时序有多个点。
3.标量
即纯量数据,一个简单的数字浮点值,只有一个数字,没有时序。
4.字符串
一个目前未被使用的简单字符串值。
5.2.2 时间序列选择器
1.Instant vector selectors,即时向量选择器。
up{job="mysqld_node"}
2.Range Vector Selectors,区间向量选择器。
rate(process_cpu_seconds_total [1m])
3.Offset modifier
process_cpu_seconds_total [1m] offset 1d
5.3 PromQL聚合操作
聚合操作的语法:
<aggr-op>([parameter,] <vector expression>) [without|by (<label list>)]
5.4 PromQL运算符
5.4.1 算术运算符
5.4.2 关系运算符
5.4.3 向量匹配
5.4.4 逻辑运算符
5.4.5 运算符优先级
5.5 PromQL函数
5.5.1 数学函数
5.5.2 时间函数
5.5.3 标签操作函数
5.5.4 Counter指标增长率
5.5.5 Gauge指标趋势变化预测
5.6 PromQL查询分析
5.6.1 指标分析
5.6.2 PromQL操作分析