运维别卷系列 - 云原生监控平台 之 04.prometheus 查询语句 promql 实践

文章目录

    • @[toc]
    • PromQL 简介
      • 什么是时间序列
    • PromQL 数据类型
      • 即时向量 Instant vector
      • 范围向量 Range vector
        • Time Durations
        • Offset modifier
        • @ modifier
      • 浮点值 Scalar
      • 字符串 String
    • PromQL FUNCTIONS
      • floor()
      • irate()
      • rate()
      • round()
      • sort()
      • sort_desc()
    • PromQL 运算符
      • 算术运算符
      • 比较运算符
      • 聚合运算符

  • QUERYING PROMETHEUS
  • QUERY EXAMPLES

PromQL 简介

  • Prometheus provides a functional query language called PromQL (Prometheus Query Language) that lets the user select and aggregate time series data in real time. The result of an expression can either be shown as a graph, viewed as tabular data in Prometheus’s expression browser, or consumed by external systems via the HTTP API.
  • Prometheus 提供了一种称为 PromQL(Prometheus 查询语言)的功能查询语言,允许用户实时选择和聚合时间序列数据。表达式的结果可以显示为图形,在 Prometheus 的表达式浏览器中查看为表格数据,也可以通过 HTTP API 由外部系统使用。

什么是时间序列

  • 同一指标和同一组标记维度的时间戳值流。Prometheus 将所有数据存储为时间序列。
  • 时间序列 = 指标名称{label_name="label_value"}
  • PromQL 执行出来的每一行,都属于时间序列,即使指标名称是相同的,但是 label 肯定是不同的

在这里插入图片描述

PromQL 数据类型

在 Prometheus 的表达式语言中,表达式或子表达式的计算结果可以达到以下四种类型之一

即时向量 Instant vector

Instant vector selectors

即时向量:一组时间序列,每个时间序列包含一个样本,所有样本共享相同的时间戳

  • 三种查询组合:

只使用标签名称,如:node_memory_MemAvailable_bytes

在这里插入图片描述

只使用 label,如:{instance="192.168.11.167:9100"}

在这里插入图片描述

标签名称加 label,如:node_memory_MemAvailable_bytes{instance="192.168.11.167:9100"}

如果有多个 label 可以写成 node_memory_MemAvailable_bytes{instance="192.168.11.167:9100",app="node-exporter"},用逗号分隔多个 label

在这里插入图片描述

  • Instant vector 支持匹配运算,也只是使用正则表达式来匹配
  • 正则表达式匹配是完全锚定的。
    • 匹配项 env=~"foo" 被视为 env=~"^foo$"

=:选择与提供的字符串完全相等的标签。

这个上面已经展示过了,这里就不展示了

!=:选择不等于提供的字符串的标签。

node_disk_read_time_seconds_total{device!="dm-0"}

在这里插入图片描述

=~:选择与所提供字符串正则表达式匹配的标签。

node_disk_read_time_seconds_total{device=~"sd.*"}

在这里插入图片描述

!~:选择与提供的字符串正则表达式不匹配的标签。

node_disk_read_time_seconds_total{device!~"sr.*|dm.*"}

在这里插入图片描述

  • 指标名称不得是关键字 boolonignoringgroup_leftgroup_right 之一。以下表达是非法的:on{}
    • 此限制的解决方法是使用 __name__ 标签:{__name__="on"}

范围向量 Range vector

Range Vector Selectors

范围向量:一组时间序列,包含每个时间序列随时间变化的数据点范围

  • 在 即时向量(Instant vector) 的基础上,后面加上 [持续时间] 以指定应为每个生成的范围向量元素获取多长时间的时间值。范围是一个闭合区间,即时间戳与范围任一边界重合的样本仍包含在选择中。
Time Durations

Time Durations

  • 持续时间(Time Durations)指定为一个数字。必须使用整数时间。
  • 持续时间可以通过串联进行组合。单位必须按从长到短的顺序排列。给定单位在一段时间内只能出现一次。例如 1h30m,不能使用 1.5h。
  • 即时向量(Instant vector)后面跟以下单位之一:
  • ms:毫秒
  • s:秒
  • m:分钟
  • h:小时
  • d:天(假设一天总是有 24 小时)
  • w:星期(假设一周总是有 7 天)
  • y:年(假设一年总是有 365 天)
    • 对于一年中的几天,闰日被忽略,相反,一分钟,闰秒被忽略

过去五分钟内的一组样本,@后面的是时间戳,是毫秒级别的

node_disk_read_time_seconds_total{device!~"sr.*|dm.*"} [5m]

在这里插入图片描述

Offset modifier

Offset modifier

offset 修饰符允许更改查询中单个即时和范围向量的时间偏移量。

当前时间起,五分钟前的时间序列

node_disk_read_time_seconds_total{device!~"sr.*|dm.*"} offset 5m

在这里插入图片描述

@ modifier

@ modifier

@ 修饰符允许更改查询中单个即时和范围向量的计算时间。提供给 @ 修饰符的时间是一个 unix 时间戳,并用浮点数文字描述。

查看 2024-05-04 21:35:16 这个时候的值,时间戳的单位是秒

node_disk_read_time_seconds_total{device!~"sr.*|dm.*"} @ 1714829716

在这里插入图片描述

浮点值 Scalar

标量:一个简单的数值浮点值

在这里插入图片描述

字符串 String

字符串:一个简单的字符串值;当前未使用

在这里插入图片描述

PromQL FUNCTIONS

FUNCTIONS

Prometheus 有很多内置的函数,感兴趣的,可以看看官方文档,这里就挑几个用的比较多的函数

floor()

样本值向下舍入到最接近的整数。

上面 @ modifier 这块的 PromQL 取的值是一堆小数点,加上 floor() 函数之后,就变成整数了(从 1.5050000000000001 变成了 1

floor(node_disk_read_time_seconds_total{device!~"sr.*|dm.*"} @ 1714829716)

在这里插入图片描述

irate()

计算范围向量中时间序列的每秒瞬时增长率。这是基于最后两个数据点。单调性的中断(例如由于目标重新启动而导致的计数器复位)会自动调整。

以下示例表达式返回范围向量中每个时间序列最多 20 分钟的 HTTP 请求的每秒速率:irate(prometheus_http_requests_total[20m])

在这里插入图片描述

rate()

计算范围向量中时间序列的每秒平均增长率。单调性的中断(例如由于目标重新启动而导致的计数器复位)会自动调整。此外,计算外推到时间范围的末端,允许漏掉刮擦或刮擦周期与范围的时间段不完美对齐。

以下示例表达式返回过去 20 分钟内每个时间序列在范围向量中测量的每秒 HTTP 请求速率:rate(prometheus_http_requests_total [20m])

在这里插入图片描述

round()

样本值四舍五入到最接近的整数。通过四舍五入来解决关系。可选的 to_nearest 参数允许指定样本值应舍入到的最接近倍数。这个倍数也可能是一个分数。

上面 @ modifier 这块的 PromQL 取的值是一堆小数点,加上 round() 函数之后,就变成整数了(从 1.5050000000000001 变成了 2

round(node_disk_read_time_seconds_total{device!~"sr.*|dm.*"} @ 1714829716)

在这里插入图片描述

sort()

返回按样本值升序排序的向量元素。只能用在即时向量,用在范围向量会报错:parse error: expected type instant vector in call to function "sort_desc", got range vector

在这里插入图片描述

sort_desc()

sort 相同,但按降序排序。

在这里插入图片描述

PromQL 运算符

算术运算符

运算符运算作用
+加法
-减法
*乘法
/除法
%取模
^

计算内存使用率

((node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes ) * 100

在这里插入图片描述

比较运算符

运算符运算作用
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于

内存使用率大于 10% 的

((node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes ) * 100 > 10

在这里插入图片描述

聚合运算符

运算符运算作用
sum()对样本值求和
min()求取样本值中的最小者
max()求取样本值中的最大者
avg()对样本值求平均值
group()结果向量中的所有值均为 1
stddev()对样本值求标准差,以帮助用户了解数据的波动大小(或称之为波动程度)
stdvar()对样本值求方差,它是求取标准差过程中的中间状态
count()对分组内的时间序列进行数量统计
count_values()对分组内的时间序列的样本值进行数量统计,即等于某值的样本个数
bottomk()按样本值计算的最小 k 个元素
topk()按样本值计算的最大 k 个元素
quantile()计算维度的 φ 分位数 (0 ≤ φ ≤ 1)
  • 这些运算符可用于聚合所有标签维度,也可以通过包含 withoutby 子句来保留不同的维度。这些子句可以在表达式之前或之后使用。
    • without 从结果向量中删除列出的标签,而所有其他标签保留在输出中。
    • by 反其道而行之,删除 by 子句中未列出的标签,即使它们的标签值在向量的所有元素之间都相同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/627017.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言中的循环队列与栈、队列之间的转换实现

引言 在数据结构的学习中&#xff0c;栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;是两个非常重要的概念。它们分别遵循着后进先出&#xff08;LIFO&#xff09;和先进先出&#xff08;FIFO&#xff09;的原则。在某些情况下&#xff0c;我们可能需要…

用友NC printBill 任意文件读取/删除漏洞复现(XVE-2024-10609)

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC printBill 接口处存在任意文件读…

PDF编辑阅读器PDF Expert for Mac v3.10.1中文激活版

PDF Expert for Mac是一款易于使用的 PDF 编辑器和注释器&#xff0c;专为 Mac 设备设计。它允许用户轻松查看、编辑、签名、注释和共享 PDF。该软件使用户能够向他们的 PDF 添加文本、图像、链接和形状&#xff0c;突出显示和标记文本&#xff0c;填写表格以及签署数字文档。它…

02-结构型设计模式(共7种)

1. Adapter(适配器模式) 适配器模式是一种结构型设计模式&#xff0c;它允许将一个类的接口转换成客户端所期望的另一个接口。这种模式通常用于解决接口不兼容的情况&#xff0c;使得原本由于接口不匹配而无法工作的类可以一起工作。 在 C 中&#xff0c;适配器模式可以通过类适…

数学建模——线性回归模型

目录 1.线性回归模型的具体步骤和要点&#xff1a; 1.收集数据&#xff1a; 2.探索性数据分析&#xff1a; 3.选择模型&#xff1a; 4.拟合模型&#xff1a; 5.评估模型&#xff1a; 1.R平方&#xff08;R-squared&#xff09;&#xff1a; 2.调整R平方&#xff08;Ad…

Windows11系统配置WSL2网络使它支持LAN访问

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、WSL2安装二、使用步骤1.NAT2.镜像 三、写在最后总结 前言 WSL2的出现感觉真的是一个惊喜&#xff0c;又想玩Linux&#xff0c;又怕日用搞不了的最佳替代方…

TreeMap详解:Java 有序 Map 原理与实现

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

[初学者必看]JavaScript 简单实际案例练习,锻炼代码逻辑思维

文章目录 创意小项目合集&#xff1a;从简易图片轮播到购物车1. 图片轮播器2. 动态列表3. 模态框&#xff08;Modal&#xff09;4. 简单的表单验证5. 简易待办事项列表&#xff08;Todo List&#xff09;6. 简易图片画廊7. 简易时钟8. 简易搜索框高亮9. 简易颜色选择器10. 简易…

【知识碎片】2024_05_14

本篇记录了两道关于位运算的选择题&#xff0c;和一道有点思维的代码题。 C语言碎片知识 求函数返回值&#xff0c;传入 -1 &#xff0c;则在64位机器上函数返回&#xff08; &#xff09; int func(int x) {int count 0;while (x){count;x x&(x - 1);//与运算} return c…

java项目之实验室管理系统(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的实验室管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 实验室管理系统的主要使用…

OpenAI 推出革命性新模型 GPT-4o:全能AI的新纪元

GPT-4o 模型的推出预示着人工智能领域的又一次飞跃&#xff0c;它将如何改变我们的世界&#xff1f; 在人工智能的快速发展浪潮中&#xff0c;OpenAI 再次站在了技术革新的前沿。2024年5月14日&#xff0c;OpenAI 宣布了其最新旗舰模型 GPT-4o&#xff0c;这不仅是一个简单的版…

2024CCPC全国邀请赛(郑州)暨河南省赛

2024CCPC全国邀请赛&#xff08;郑州站&#xff09;暨河南省赛 一铜一银&#xff0c;虽不是线下第一次参赛但是第一次拿xcpc奖牌&#xff0c;还有个国赛奖真是不戳。感谢学长&#xff0c;感谢队友&#xff01; 虽然遗憾没有冲到省赛金&#xff0c;不过还有icpc商丘&#xff08…

HTTP基础概念和HTTP缓存技术

什么是HTTP HTTP是超文本传输协议&#xff0c;主要分为三个部分&#xff1a;超文本、传输、协议。 超文本是指&#xff1a;文字、图片、视频的混合体。传输是指&#xff1a;点与点之间的信息通信。协议是指&#xff1a;通信时的行为规范或约定 HTTP常见字段 字段名 解释 例…

Android存储文件路径的区别

一、Android存储简介 Android系统分为内部存储和外部存储 从Android6.0开始不断在更新存储权限 外部存储路径的开头&#xff1a;storage/emulated/0 内部存储文件路径的开头&#xff1a;/data/user/0/应用的包名&#xff08;packageName&#xff09; 在设备上对应的目录为/data…

Leetcode2105. 给植物浇水 II

Every day a Leetcode 题目来源&#xff1a;2105. 给植物浇水 II 解法1&#xff1a;双指针 设 Alice 当前下标为 i&#xff0c;初始化为 0&#xff0c;水量为 a&#xff0c;初始化为 capacityA&#xff1b;Bob 当前下标为 j&#xff0c;初始化为 n-1&#xff0c;水量为 b&am…

flutter开发实战-compute将工作交由isolate处理

flutter开发实战-compute将工作交由isolate处理 最近查看flutter文档时候&#xff0c;看到了compute可以将工作交由isolate处理。通过 Flutter 提供的 compute() 方法将解析和转换的工作移交到一个后台 isolate 中。这个 compute() 函数可以在后台 isolate 中运行复杂的函数并…

string功能介绍(普及版)

目录 1。初始化&#xff08;好几种方式&#xff09;&#xff0c;npos和string的使用说明 2。string的拷贝&#xff0c;隐式类型转换&#xff0c;[]&#xff0c;size&#xff0c;iterator&#xff0c;begin&#xff0c;end&#xff0c;reverse&#xff0c;reverse_iterator&am…

回归预测 | Matlab实现DBO-ESN蜣螂算法优化回声状态网络多输入单输出回归预测

回归预测 | Matlab实现DBO-ESN蜣螂算法优化回声状态网络多输入单输出回归预测 目录 回归预测 | Matlab实现DBO-ESN蜣螂算法优化回声状态网络多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现DBO-ESN蜣螂算法优化回声状态网络多输入单输出…

图像融合-下游任务(目标检测、实例分割、深度估计、局部区域细节放大)

下游任务: 采用目标检测、实例分割和深度估计的下游任务来验证图像融合结果质量。 文章目录 下游任务:1.目标检测2.实例分割3.深度估计局部细节放大工具Update1.目标检测 YOLOv8:https://github.com/ultralytics/ultralytics 步骤内容第一步下载项目到本地第二步安装READ…

20232810 2023-2024-2 《网络攻防实践》实验九

一、实践内容 1.1 反汇编 1.1.1 编程原理 编程的原理是一套指导软件开发和维护的概念、原则和实践&#xff0c;包括抽象以简化复杂系统、模块化以分解程序、封装以隐藏内部状态、继承以共享特性、多态以允许不同响应、算法和数据结构以组织计算和存储、控制结构以控制流程、…