Prometheus的promQL语法

news2024/11/15 6:15:14

时间序列

node_cpu_guest_seconds_total{cpu="0"}
#{}外的是监控项(指标数据)
#{}内的是标签
#node使用cpu的描述统计,符合标签cpu=0的时间序列,查询出的结果
#指标项+标签就是Prometheus的时间序列

_address_
#双下划线标签是Prometheus系统的默认标签,不显示在页面上,只有把光标移动到字段上才会显示

node_cpu_seconds_total{mode="iowait",cpu="0"}
#查看状态时iowait的且cpu是0的数据

匹配标签值的操作符

=
#表示完全相等
!
#表示不等于,取反
=~
#正则表达式匹配
!~
#正则表达式取反

数学运算符:
+
#加法
-
#减法
*
#乘法
/
#除法
%
#取余
^
#幂运算

通配符:
.
#任意单个字符
.*
#任意多个字符
.+
#一个或多个任意字符

时长的单位:
s
#seconds 秒
m
#minutes 分
h
#hour 小时
d
#day 天
w
#weeks 周
y
#years 年

数据类型

1、 瞬时向量:表示一组时序,每个时序只有单独的一个采量值

node_cpu_seconds_total{mode="iowait",cpu="0"}

2、 区间向量:表示一组时序,每个时序包含一段时间内的多个采样值。具有时间范围

rate(container_cpu_load_average_10s{instance="node01"}[5m])
#展示container_cpu_load_average_10s指标过去每5分钟的采样值。对应的标签是instance="node01"

3、 标量数据:表示浮点数

4、 字符串类型:表示一个字符串

5、 counter类型:表示一个总数。promql语句当中没有直接作用,借助一些函数,rate topk increase irate通过这些函数来生成样本数据的变化情况。

topk(3,node_cpu_seconds_total)
#_total:一般表示counter类型的数据
#展示当前数据中排名前3的数据

increase:要结合区间向量一起使用,时间序列在一定范围内的增量

increase(node_cpu_seconds_total[5m])
#5分钟之内增量的趋势

irate:是高灵敏度函数,计算指标的瞬时速率,基于样本范围内的最后两个样本进行计算。取范围内的最后两个值进行比较,比较出一个比率。 irate更适用于短时间内的变化速率分析

irate(node_cpu_seconds_total[5m])
#每5分钟之内取一个趋势图

6、 gauge类型:用于存储可增可减的指标样本数据。一般用于求和,求平均数,取最小值和最大值。也会结合两个特殊的函数一起使用:delta和predict_linear

delta:用于计算范围向量中的每个时间序列的第一个值和最后一个值相减的差。展示不同时间点上样本值的差值。

delta(container_memory_cache{instance="node01"}[5m])
#在每5分钟内变化的差值

predict_linear:可以预测时间序列在v这个点以及在t这个秒之后的变化趋势,对样本数据的变化趋势做出预测。

predict_linear(node_filesystem_files{instance="master01"}[2h],4*3600)
#predict_linear计算统计指标,统计在node节点上创建的文件数。
#{instance="master01"}:选择的指标是master01
#[2h]:过去两个小时
#4*3600:未来4个小时
#统计过去2个小时的样本数据变化,根据过去2个小时的数据变化,预测未来4个小时的数据变化

将过去的数据带到未来的数据趋势当中

例如:过去2个小时吃了12个苹果。那么它将会预测未来4个小时可能会吃24个苹果

7、 historgram类型:对一定时间范围内的数据进行采样,通常是请求持续的时长和响应大小的类型这一类,计入一个可配的桶中(bucket)通过区间样本进行筛选。也可以统计求和。

node_authorizer_graph_actions_duration_seconds_bucket{instance="20.0.0.32:6443",le="0.0002"}
#le="0.0002":观测桶的上边界,样本的统计区间,表示所有的样本值小于等于0.0002

node_authorizer_graph_actions_duration_seconds_bucket{instance="20.0.0.32:6443",le="+Inf"}
#le="+Inf":表示最大区间,包含的所有样本数量

apiserver_current_inqueue_requests{instance="20.0.0.32:6443"} >=1
#快速了解监控样本的分布情况。
#某个时间点产生的样本值

8、 summary类型:分位数计算,类似于historgram。在客户端于一段时间内(默认10分钟)每个采样点及进行统计,计算并存储了分位数的值,服务端可以直接抓取相应的值

quantile="0.5"
#样本的值必须在0-1的范围之内

通过分位数给取值做分位排列

中位数可以理解为中间项的指标。作为一个中间值,取值比他小的在它下面,比它大就在它上面

将按照序列进行排列取一个中位数。每个数值都和中位数轮流进行比较。在0-1的区间进行浮动。这样可以展示样本在一段时间之内的分布情况

聚合操作符

sum
#求和
min
#最小值
max
#最大值
avg
#平均值
stddev
#标准差:算数平均数。标准差是方差的平方根
stdvar
#方差:标准差的一种。方差越小,数据组越稳定。
count
#元素个数
count_calues
#等于某个值的元素个数
topk
#最大的元素个数
bottomk
#最小的元素个数
quantile
#分位数

在使用topk和bottomk时需要带入数值。表示是取前几位还是后几位

求和

sum(container_cpu_usage_seconds_total)
#将值累加

最小值

bottomk(3,container_cpu_usage_seconds_total)
#取最小的3个值

分位数

quantile(0.65,container_cpu_usage_seconds_total)

业务中常用的语句

计算某个节点的所有容器使用内存的时间序列

sum(container_memory_usage_bytes{instance="node01"})/1024/1024/1024
#计算某个节点的所有容器使用内存的时间序列

某个节点上最近1分钟之内所有容器使用cpu的使用率

sum(rate(container_cpu_usage_seconds_total{instance="node01"}[1m]))
#node1节点上所有容器最近1分钟之内所有容器使用cpu的使用率

最近1分钟所有容器的cpu使用率

sum by (id) (rate(container_cpu_system_seconds_total{id!="/"}[1m]))
#最近1分钟所有容器的cpu使用率

查询k8s集群当中最近1分钟每个pod的cpu使用率

sum by (name) (rate(container_cpu_system_seconds_total{image!="",name!=""}[1m]))
#查询k8s集群当中最近1分钟每个pod的cpu使用率

每台主机 CPU 在最近 5 分钟内的平均使用率

(1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)) * 100
#每台主机 CPU 在最近 5 分钟内的平均使用率

查询 1 分钟的 load average 的时间序列是否超过主机 CPU 数量 2 倍

node_load1 > on (instance) 2 * count (node_cpu_seconds_total{mode="idle"}) by (instance)

计算主机内存使用率可用内存空间:空闲内存、buffer、cache 指标之和

node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes

已用内存空间:总内存空间减去可用空间

node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)

使用率:已用空间除以总空间

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

计算所有 node 节点所有容器总计内存:

sum  by (instance) (container_memory_usage_bytes{instance=~"node*"})/1024/1024/1024
#container_cpu_usage_seconds_total 代表容器占用CPU的时间总和

计算最近 5m 每个容器 cpu 使用情况变化率

sum (rate(container_cpu_usage_seconds_total[5m])) by (container_name)
#container_cpu_usage_seconds_total 代表容器占用CPU的时间总和

查询 K8S 集群中最近 1m 每个 Pod 的 CPU 使用情况变化率

sum (rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m])) by (pod_name) 
#由于查询到的数据都是容器相关的,所以最好按照 Pod 分组聚合

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

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

相关文章

【小白学unity记录】使用unity播放声音

1. 示例 unity中播放声音涉及到两个组件。AudioSource和AudioClip。AudioSource可以理解为播放器,AudioClip可以理解为音频片段文件。AudioSource可以通过.clip属性切换音频片段。 using UnityEngine;public class PlayerController : MonoBehaviour {private int…

1.迭代与递归 - JS

迭代与递归是函数进阶的第一个门槛。迭代就是对已知变量反复赋值变换;递归就是函数体内调用自身。 迭代 一个迭代是就是一个循环,根据迭代式对变量反复赋值。 求近似根(切线法); 迭代描述: x 0 x_0 x0…

安装并开始设置 Windows 终端(命令提示符或Windows PowerShell或Azure Cloud Shell)

安装 安装 若要试用最新的预览功能,可能还需要安装 Windows 终端预览。 ‼️备注 如果你无法访问 Microsoft Store,GitHub 发布页上发布有内部版本。 如果从 GitHub 安装,Windows 终端将不会自动更新为新版本。 有关使用包管理器&#xff…

品牌如何持续发展,重点在于把握消费动机

发展周期较短的品牌可能有很多原因,但是长效发展的品牌却有相似的共性。所有能长效发展的品牌,都牢牢把握住了顾客的消费动机,人们会因为很多原因去消费,这在营销界就被称为“消费动机”,有的消费动机是短暂的&#xf…

MySQL中的数据类型(五)

MySQL中的数据类型(五) 一、整数类型 数值类型中的长度 m 是指显示长度,并不表示存储长度,只有字段指定 zerofill 时有用 例如: int(3) ,如果实际值是 2 ,如果列指定了 zerofill ,…

【UE 材质】球形遮罩材质

效果 步骤 1. 新建一个材质,这里命名为“M_Mask” 打开“M_Mask”,混合模式设置为已遮罩,勾选双面显示 在材质图表中添加如下节点 此时我们将一个物体赋予材质“M_Mask”并放置在世界坐标原点,可以看到如下效果 2. 如果我们希望能…

C++ 类与对象(中)

本节目标 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认…

【golang】13、viper 配置库 | 配置文件读写 | 使用方式 | 源码逻辑分析

文章目录 一、使用方式1.1 特性1.2 优势1.3 设置1.3.1 默认值1.3.2 配置文件1.3.3 写配置文件1.3.4 监听配置文件变化1.3.5 从 io.Reader 读配置1.3.6 Setting Overrides1.3.7 使用 Alias1.3.8 环境变量1.3.9 命令行 Flags1.3.8.1 Flag 接口 1.3.9 配置中心1.3.9.1 未加密1.3.9…

RabbitMQ(一):最新版rabbitmq安装

目录 1 简介1.1特性及好处 2 安装2.1 Ubuntu22.04 apt安装最新rabbitmq1、一键部署2、验证3、RabbitMQWeb管理界面及授权操作4、添加远程用户5、一些常用命令 2.2 Docker安装RabbitMQ - Ubuntu22.041、安装docker2、启动rabbitmq 1 简介 RabbitMQ是一个开源的遵循AMQP协议实现…

多模态大模型综述整理

论文:MM-LLMs: Recent Advances in MultiModal Large Language Models 论文地址: https://arxiv.org/pdf/2401.13601.pdf 表1:26种主流多模态大型语言模型(MM-LLMs)概要 输入到输出模态(I→O)…

Sentinel 知识总结

Sentinel 知识总结 Sentinel 是阿里巴巴开源的一个轻量级流量控制框架,主要用于保护系统稳定性和流畅性。它提供了多种流量控制策略,包括QPS限流、并发数限流、线程池限流等,并且支持集群限流。此外,Sentinel还提供了熔断降级、系…

机器学习 | 掌握线性回归的实战技巧

目录 初识线性回归 损失和优化 欠拟合与过拟合 正则化线性模型 模型的保存与加载 初识线性回归 线性回归(Linearregression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。特点是:有一个自变量的情况称为单…

Linux实验记录:使用firewalld

前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: RHEL8系统中集成了多款防火墙管理工具&#xf…

【百度Apollo】循迹自动驾驶:探索基于视觉感知的路径规划与控制技术

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…

牛啊!能透视大模型内部结构的可视化工具!

哈喽,大家好。 今天给大家分享一个非常牛逼的可视化工具,可以清晰了解 GPT 大模型内部的结构。 哦,对了!给大家准备了国内用的 ChatGPT key,见评论区。 这个工具可以支持查看 GPT2 和 GPT3 的网络架构。 但能进行交互…

区间时间检索

参数形式 sql <if test"params.beginOrderDate ! null and params.beginOrderDate ! "><!-- 开始时间检索 -->AND DATEDIFF(day,#{params.beginOrderDate},b.order_date) > 0</if><if test"params.endOrderDate ! null and params.endO…

ov通配符ssl证书申请时间长吗

通配符SSL证书是SSL数字证书的一种&#xff0c;可以同时保护主域名以及同一个域名下的所有子域名。用户在申请通配符SSL证书时需要CA认证机构对提交的信息进行审核&#xff0c;审核时间根据证书的品牌、类型而变化。今天就随SSL盾小编了解OV通配符SSL证书申请时间。 1.通配符S…

蓝桥杯 第 2 场 小白入门赛

目录 1.蓝桥小课堂-平方和 2.房顶漏水啦 3.质数王国 4.取余 5.数学尖子生 6.魔术师 比赛链接 1.蓝桥小课堂-平方和 简单签到直接按照题目处理即可注意开long long void solve(){LL x; cin>>x;LL ans x*(x1)*(2*x1)/6;cout<<ans<<endl; } 2.房顶漏水…

STM32——DMA

STM32——DMA 1.DMA介绍 什么是DMA&#xff1f; DMA(Direct Memory Access&#xff0c;直接存储器访问) 提供在外设与内存、存储器和存储器、外设与外设之间的高速数据传输使用。它允许不同速度的硬件装置来沟通&#xff0c;而不需要依赖于CPU&#xff0c;在这个时间中&…

C语言应用实例——贪吃蛇

&#xff08;图片由AI生成&#xff09; 0.贪吃蛇游戏背景 贪吃蛇游戏&#xff0c;最早可以追溯到1976年的“Blockade”游戏&#xff0c;是电子游戏历史上的一个经典。在这款游戏中&#xff0c;玩家操作一个不断增长的蛇&#xff0c;目标是吃掉出现在屏幕上的食物&#xff0c…