由于PromQL内容较多,将内容分为三篇文章讲述:
一、直观感受PromQL及其数据类型
二、PromQL之选择器和运算符
三、PromQL之函数
想必都知道要使用Msql,必须会用SQL,同样要使用Prometheus 就要掌握PromQL(Prometheus Query Language),它可以实时选择和汇聚时间序列数据,从而很方便的在Prometheus中查询和检索数据,结果可以展示为图表或者表格。
直观感受PromQL
在详细介绍PromQL之前,我们先通过几个简单的查询来直观感受PromQL。
- 查询应用已使用的堆内存大小,单位MB
jvm_memory_used_bytes / (1024*1024)
说明:图框中三条数据相加和即为已占用堆内存大小,默认的单位为B,图中已转为为MB
- 进阶版,查询应用已使用的堆内存大小,单位MB
sum(jvm_memory_used_bytes{area=“heap”} / (1024*1024))
说明:筛选出 area=“heap” 的堆内存数据,这个时候由6条数据变为3条数据,再通过求和函数对3条数据相加得到最终的值
- 保留两位小数,查询应用已使用的堆内存大小,单位MB
round(sum(jvm_memory_used_bytes{area=“heap”} / (1024*1024)), 0.01)
说明:这次相对1、2又多套了一个函数round,作用是保留两位小数,四舍五入
通过上面3个案例,从简单到复杂,我们看到PromeQL的写法跟SQL完全不相同,相对于SQL反而更容易理解。
时间序列
Prometheus 本身也是一种时间序列数据库,时间序列数据库主要按照一定得时间间隔产生一个个的数据点,以时间轴为横坐标,序列为纵坐标,如图所示:
每个数据点都代表一条时间序列数据,比如 某一时间的 jvm_memory_used_bytes{application=“provider”, area=“heap”, id=“PS Eden Space”, instance=“192.168.0.115:8000”, job=“provider”} 会在图中产生一个数据点,但同一个时间点可能会产生多条数据,只要指标名称或者标签集不同,就是不同的数据。另外如果时间点不同,指标名称或标签集相同,也会产生一个数据点。
时间序列的组成:
- 指标(Metrics): 包括指标名称 和 一组标签集,如 jvm_memory_used_bytes{application=“provider”, area=“heap”, id=“PS Eden Space”, instance=“192.168.0.115:8000”, job=“provider”}
- 时间戳(TimeStamp):默认精确到毫秒
- 样本值(Value): 默认使用Float64 浮点类型
PromQL 的数据类型
Prometheus 一共有4种数据类型:
- 瞬时向量(Instant vector):每个时间序列包含单个样本,是给定时间戳的即时值
如:
jvm_memory_used_bytes
虽然查询出多条数据,但都是不同的数据
- 区间向量(Range vector):每个时间序列包含一段时间范围内的样本数据
如:表示获取1分钟内jvm_memory_used_bytes指标的采样数据
jvm_memory_used_bytes[1m]
- 标量(Scalar):浮点型数据值,但可以写成整数或浮点值
如:
23
-2.43
3.4e-9
0x8f
-Inf
NaN
- 字符串(String):字符串可以用单引号(‘’)、双引号(“”)、反引号(``)来指定
如:
"this is a string"
'these are unescaped: \n \\ \t'
`these are not unescaped: \n ' " \t`
作者其他文章:
Grafana 系列文章,版本:OOS v9.3.1
- Grafana 的介绍和安装
- Grafana监控大屏配置参数介绍(一)
- Grafana监控大屏配置参数介绍(二)
- Grafana监控大屏可视化图表
- Grafana 查询数据和转换数据
- Grafana 告警模块介绍
- Grafana 告警接入飞书通知
Spring Boot Admin 系列
- Spring Boot Admin 参考指南
- SpringBoot Admin服务离线、不显示健康信息的问题
- Spring Boot Admin2 @EnableAdminServer的加载
- Spring Boot Admin2 AdminServerAutoConfiguration详解
- Spring Boot Admin2 实例状态监控详解
- Spring Boot Admin2 自定义JVM监控通知
- Spring Boot Admin2 自定义异常监控
- Spring Boot Admin 监控指标接入Grafana可视化