Prometheus学习笔记(7)PromQL玩法入门
1、什么是PromQL???
PromQL是Prometheus内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。并且被广泛应用在Prometheus的日常应用当中,包括对数据查询、可视化、告警处理当中。前面的笔记当中有说道我们通过exporter采集到的数据是以时间序列(time-series)的方式保存在内存数据库中,并定时保存到硬盘。time-series是一个按照时间戳和值的顺序存放,可以说是一种矢量值。
什么是矢量值???就是已知x轴和y轴,得出x和y交叉点的那个值就是矢量值,而这里的time-series就是这样的一个值,每条time-series通过指标名称(metrics name)和一组标签(labels)命名,比如前面的node_memory_MemFree_bytes{instance="node02",job="node02"},"node_memory_MemFree_bytes"为指标名称,{ }内的为标签集合。
metrics通常固定的格式为:
<metric name>{<label name>=<label value>, ...}
指标名称只能由ASCII字符、数字、下划线以及冒号组成并必须符合正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*
其中以__作为前缀的标签,是系统保留的关键字,只能在系统内部使用。标签的值则可以包含任何Unicode编码的字符。在Prometheus的底层实现中指标名称实际上是以__name__=的形式保存在数据库中的,因此以下两种方式均表示的同一条time-series:
node_cpu_seconds_total{mode='idle'} 和
{__name__="node_cpu_seconds_total",mode='idle'}
是一样的!!!!
前面也说明了metrics的类型:
counter:递增计算器 --> 用于递增类的指标,如请求的总速率http_request_total,一般用_total作后缀。
gauge:可增可减仪表盘 --> 用于统计内存,硬盘的使用率,如node_memory_MemFree_bytes。
hitogram/summary:统计和分析样本分布情况 --> 通俗地说统计一段时间内的量化指标,比如cpu的平均使用率,页面响应等等。
2、如何查询???
2.1、监控指标名称查询
通过监控指标名称查询,也就是我们上面metrics的名称,而通过指标名称查询又可以分为完全匹配和正则匹配查询。
完全匹配查询,即 metrics_name{xxx=ooo 或 metrics_name{xxx!=ooo} ,如:
# 如下查询了cpu的空闲和非空闲时的使用时间
node_cpu_seconds_total{mode='idle'} 或 node_cpu_seconds_total{mode!='idle'}


正则匹配查询,即 metrics_name{xxx=~"ooo"} 或 metrics_name{xxx=~"ooo",zzz!=777}
pushgateway_http_requests_total{instance=~"pushgateway",method='get'}
或
pushgateway_http_requests_total{instance=~"pushgateway",method!='get'}
2.2、范围查询
直接通过监控名称进行查询时间序列,直接返回的是一个瞬时矢量值,当我们需要获取一个时段的样本数据时,则需要使用区间矢量表达式,和瞬时矢量值的区别在于区间矢量值可以进行自定义查询的时间范围,比如统计5分钟内的数据,那么久可以通过时间范围选择器"[ ]"进行自定义。如:
pushgateway_http_requests_total{instance=~"pushgateway",method='get'}[1m]
将会返回这1分钟内的所有统计数据,除了用m表示分钟,还可以用s-秒,h-小时,d-天,w-周,y-年

2.3、时间位移查询
使用时间范围查询,也只是以当前时间作为基准去进行统计,如果要统计昨天1天的统计数据时,就需要用到时间位移(offset),如下:
# 统计昨天一天的pushgateway中包含get请求的总请求数
pushgateway_http_requests_total{instance=~"pushgateway",method='get'} offset 1d

2.4、聚合查询
一般来说,如果描述样本特征的标签(label)在并非唯一的情况下,通过PromQL查询数据,会返回多条满足这些特征维度的时间序列。而PromQL提供的聚合操作可以用来对这些时间序列进行处理,形成一条新的时间序列:
# 查询昨天1天内pushgeteway中get的请求总量之和
sum(pushgateway_http_requests_total{instance=~"pushgateway",method='get'} offset 1d)
# 按照mode计算主机CPU的平均使用时间
avg(node_cpu_seconds_total)by(mode)

Prometheus学习笔记(7)PromQL玩法入门的更多相关文章
- jQuery学习笔记(一):入门
jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操 ...
- LwIP学习笔记——STM32 ENC28J60移植与入门
0.前言 去年(2013年)的整理了LwIP相关代码,并在STM32上"裸奔"成功.一直没有时间深入整理,在这里借博文整理总结.LwIP的移植过程细节很多,博文也不可能一一 ...
- canvas学习笔记(下篇) -- canvas入门教程--保存状态/变形/旋转/缩放/矩阵变换/综合案例(星空/时钟/小球)
[下篇] -- 建议学习时间4小时 课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...
- canvas学习笔记(中篇) -- canvas入门教程-- 颜色/透明度/渐变色/线宽/线条样式/虚线/文本/阴影/图片/像素处理
[中篇] -- 建议学习时间4小时 课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...
- canvas学习笔记(上篇)-- canvas入门教程 -- canvas标签/方块/描边/路径/圆形/曲线
[上篇] -- 建议学习时间4小时 课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...
- C#线程学习笔记九:async & await入门二
一.异步方法返回类型 只能返回3种类型(void.Task和Task<T>). 1.1.void返回类型:调用方法执行异步方法,但又不需要做进一步的交互. class Program { ...
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
- Prometheus监控学习笔记之PromQL操作符
0x00 二元运算符 Prometheus 的查询语言支持基本的逻辑运算和算术运算.对于两个瞬时向量, 匹配行为可以被改变. 算术二元运算符 在 Prometheus 系统中支持下面的二元算术运算符: ...
- Prometheus监控学习笔记之PromQL简单示例
0x00 简单的时间序列选择 返回度量指标 http_requests_total 的所有时间序列样本数据: http_requests_total 返回度量指标名称为 http_requests_t ...
随机推荐
- 如何确定假设检验的样本量(sample size)?
在<如何计算假设检验的功效(power)和效应量(effect size)?>一文中,我们讲述了如何根据显著性水平α,效应量和样本容量n,计算功效,以及如何根据显著性水平α,功效和样本容量 ...
- 深入解析ES6中的promise
作者 | Jeskson来源 | 达达前端小酒馆 什么是Promise Promise对象是用于表示一个异步操作的最终状态(完成或失败)以及其返回的值. 什么是同步,异步 同步任务会阻塞程序的执行,如 ...
- 【Gamma】项目展示
团队成员介绍 大娃 :后端开发人员,主要工作为后端开发,文档撰写. 大娃的个人博客 二娃 PM,主要工作为项目进度把控,例会博客撰写. 二娃的个人博客 三娃* PM,主要工作为项目进度把控,用户需求分 ...
- 第4课 decltype类型推导
第4课 decltype类型推导 一.decltype类型推导 (一)语法: 1.语法:decltype(expr),其中的expr为变量(实体)或表达式 2.说明: ①decltype用于获取变量的 ...
- rent a apartment
今日焦点 month-to-month 按月 6-month minimum 至少六个月 sublease 转租 drenched in sunlight 阳光充足的 词汇实践 I am lookin ...
- 模拟 + 暴搜 --- Help Me with the Game
Help Me with the Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3175 Accepted: ...
- Elasticsearch 记录
查看集群运行状态 GET /_cat/health?v 响应 1573460861 16:27:41 my-application yellow 1 1 372 372 0 0 371 0 - 50. ...
- IAR_STM32_CCM内存使用
在IAR中,硬件环境为STM32F464单片机,额外的CCM不能用DMA访问,但可以作为内部额外扩充RAM使用 修改文件中的内容为: define symbol __ICFEDIT_region_RO ...
- [CF24A]Ring road(2019-11-15考试)
题目大意 给你一个\(n\)个点的环,每条边有方向,改变第\(i\)条边的方向代价为\(w_i\),问将其改为强连通图的最小代价.\(n\leqslant100\) 题解 求出把边全部改为顺时针和全部 ...
- JQuery的使用案例(二级联动,隔行换色,轮播图,广告插入)
JQuery的使用案例 (一)利用JQuery完成省市二级联动 第一步:确定事件(change事件),在绑定的函数里面获取用户选择的省份 第二步:创建二维数组来存储省份和城市 第三步:遍历二维数组中的 ...