运维别卷系列 - 云原生监控平台 之 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 子句中未列出的标签,即使它们的标签值在向量的所有元素之间都相同。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

python 批量webp格式转换成jpg

首先&#xff0c;你需要安装Pillow库。如果还未安装&#xff0c;可以通过pip安装&#xff1a; pip install Pillow 创建一个Python脚本来读取webp文件&#xff0c;并将其转换为jpg格式。 只需修改source_folder和dest_folder变量为你的实际文件夹路径即可使用这个脚本。 fro…

阻抗控制理解之逆动态控制律

具有六个自由度的二阶机械系统&#xff0c;其特征是给定的质量、阻尼和刚度&#xff0c;称为机械阻抗。 用于运动控制的加速度解决方法&#xff0c;它旨在通过逆动力学控制律在加速度水平上解耦和线性化非线性机器人动力学。在与环境存在交互作用的情况下&#xff0c;控制律 考…

美港通正规股票杠杆交易突破3900点,欧线集运再创历史新高

查查配5月13日,欧线集运主连高开高走,盘中一度涨超13%,截至早盘收盘涨11.93%,突破3900点。4月以来,欧线集运主连累计涨超110%。 美港通证券以其专业的服务和较低的管理费用在市场中受到不少关注。该平台提供了实盘交易、止盈止损、仓位控制等功能,旨在为投资者提供更为全面的投…

短剧私域-快速引流变现

短剧的爆火&#xff0c;衍生出了很多周边项目。 比如免费看剧App&#xff0c;短剧搜索机器人&#xff0c;短剧付费圈子等等。 这些项目的本质&#xff0c;就是借助短剧的热度&#xff0c;把流量引到自己的鱼塘进行变现。 短剧机器人大家都知道&#xff0c;目前最火的一种玩法…

水电站机组油压自动化控制系统概述及优势介绍

一、系统背景 我国河流、湖泊分布广泛&#xff0c;落差巨大&#xff0c;蕴藏着丰富的资源优势&#xff0c;我国作为世界第二大能源消耗国&#xff0c;对于电力的需求是巨大的&#xff0c;水力发电具有高效、清洁、能量供给稳定充足的特点&#xff0c;因此&#xff0c;水电工程…

项目中使用Elasticsearch的API相关介绍

项目中使用Elasticsearch的API相关介绍 0、域映射类型 text&#xff1a;会分词&#xff0c;不支持聚合对当前搜索关键词&#xff0c;先自身分词&#xff0c;分成多个词&#xff0c;然后去一个一个的词去利用倒排索引去查询es索引库一般应用在搜索关键字匹配的字段的类型。 商…

ITIL4之IT服务战略

战略和IT战略 战略 的概念最早源于军事领域&#xff0c;意在通过对战争全局的精心规划和指挥&#xff0c;利用有限资源高效达成政治和军事目标。这一思想逐渐扩展到商业、管理乃至信息技术领域&#xff0c;成为指导长远发展和资源配置的核心框架。 IT战略 是将军事战略的智慧…

网络安全的红利还能吃几年?

网络安全最好的红利期是2016年至2021年&#xff0c;后面hvv这种形势主义一搞&#xff0c;基本都开始演戏了&#xff0c;越来越多的问题暴露&#xff0c;接下来还有一阵洗牌期。 中国网络安全市场分类架构 七大基础安全领域: 网络与基础架构安全&#xff0c;端点安全&#x…

(001)apidoc 的安装

安装 1.确定 node 和 npm 的匹配版本 node -vv10.14.1# 切换node 版本 nvm list nvm use 20.12.22.安装 apidoc。 npm install -g apidoc3.生成文档&#xff1a; apidoc -i ../ -o document/ -f ".java$"-i &#xff1a;指定扫描路径。-o&#xff1a;输出目录。…

短视频赛道有哪些:成都鼎茂宏升文化传媒公司

短视频赛道有哪些&#xff1a;探索多元化的内容领域 随着科技的飞速发展和人们生活节奏的加快&#xff0c;短视频已成为现代人生活中不可或缺的一部分。它以其简短、直观、易于分享的特点&#xff0c;迅速占领了各个年龄层和社会群体的心智。然而&#xff0c;短视频的赛道并非…

TensorFlow的学习

0.基础概念 术语表&#xff1a; https://developers.google.cn/machine-learning/glossary?hlzh-cn#logits 1.快速入门 https://tensorflow.google.cn/tutorials/quickstart/beginner?hlzh-cn 2.基于Keras进行图像分类 https://tensorflow.google.cn/tutorials/keras/cl…

Spring注解驱动开发

1、Spring注解驱动开发图解

【Flask 系统教程 6】进阶操作

Flask操作cookie 在 Flask 中操作 Cookie 是相对简单的。Cookie 是一种存储在用户计算机上的小型数据片段&#xff0c;由服务器发送到用户浏览器&#xff0c;然后在每次请求时由浏览器发送回服务器。在 Flask 中&#xff0c;你可以使用 request 对象来读取 cookie&#xff0c;…

tensorflow实现二分类

# 导入所需库和模块 from tensorflow.keras.layers import Dense, Input, Activation # 导入神经网络层和激活函数模块 from tensorflow.keras.models import Sequential # 导入Keras的Sequential模型 import pandas as pd # 导入Pandas库用于数据处理 import numpy as np …

如何部署TDE透明加密实现数据库免改造加密存储

安当TDE&#xff08;透明数据加密&#xff09;实现数据库加密的步骤主要包括以下几个部分&#xff1a; 准备安装环境&#xff1a;确保操作系统和数据库环境已经安装并配置好&#xff0c;同时确保具有足够的权限来安装和配置TDE透明加密组件。下载安装包&#xff1a;从官方网站…

2024年5月18日(星期六)骑行香杆箐

2024年5月18日 (星期六&#xff09;骑行香杆箐&#xff0c;早8:30到9:00&#xff0c;郊野公园西门集合&#xff0c;9:30准时出发【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点:郊野公园西门集合 &#xff0c;家住东&#xff0c;西&#xff0c;南…

通过视频生成实现基于物理的3D对象交互——PhysDreamer

随着虚拟现实(VR)和增强现实(AR)技术的飞速发展&#xff0c;用户对于虚拟体验的真实性提出了更高的要求。在这样的背景下&#xff0c;PhysDreamer应运而生&#xff0c;它是一项创新的技术&#xff0c;能够为静态3D对象赋予逼真的物理交互动态&#xff0c;极大地丰富了虚拟环境的…

使用DBeaver的第2天-使用sql导入数据

使用sql导入数据这块我会仔细的说一下 首先位置一定要放在库上&#xff08;实例&#xff09;&#xff0c;放在表上可不好使用哦 然后点击工具-再点击执行脚本 这样就执行成功了 但是如果你执行失败了&#xff0c;多半可能是因为本地没有部署mysql&#xff0c;记住只有本地有…

5G技术相关部分图解

1、面向5G商用网络的全系列解决方案 面向5G商用网络的全系列解决方案涵盖了从核心网到接入网的各个方面&#xff0c;确保网络的高性能、高可靠性和高安全性 2、2\3\4\5G带宽图解 G带宽的提升将推动许多新型应用的发展&#xff0c;并提供更快速、更可靠的移动通信体验。然而…

【运维自动化-配置平台】如何自动应用主机属性

主要用于配置主机属性的自动应用。当主机发生模块转移或模块新加入主机时&#xff0c;会根据目标模块配置的策略自动触发修改主机属性&#xff0c;比如主机负责人、主机状态。主机属性自动应用顾名思义是应用到主机上&#xff0c;而主机是必须在模块下的&#xff0c;所以有两种…