【Prometheus】Prometheus的PromQL语句

Prometheus promQL的语法:

#时间序列
node_cpu_guest_seconds_total{cpu="0"}
监控(指标数据)		{标签}

node使用CPU的描述的统计,符合标签CPU=0的时间序列的查询结果

指标+标签生成时间序列

标签:

__address__:双下划线标签,是Prometheus系统的默认标签,不显示在target页面中,只有把光标移动到label的字段上,才能显示默认标签

匹配标签值操作符号:

= 完全相等

!= 不等于,相当于取反

=~ 正则表达式匹配

!~ 正则表达式取反

数学运算符:

+ 加法

- 减法

* 乘法

/ 除法

% 取余

^ 幂运算

常用的通配符:

. 任意单个字符

.* 多个任意字符

.+ 一个或者多个任意字符

时长的单位类型:

s seconds秒

m minute分

h hour时

d day天

w weeks周

y years年

数据类型:

  1. 瞬时向量:一组时序,每个时序只有一个采样值
  2. 区间向量:一组时序,每个时序包含一段时间内的多个采样值
  3. 标量数据:浮点数,小数
  4. 字符串:一个字符串
  5. counter:总数,在整个promQL中没有直接作用。通过rate topk increase irate这些函数生成样本数据的变化情况
topk(3,node_cpu_seconds_total)
#展示当前数据前三位的数据

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

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

irate:高灵敏度的函数,计算指标的瞬时速率,基于样本范围内的最后两个样本进行计算

irate更适合于短期范围内的变化速率分析。rate是长时间的

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

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

delta(container_memory_cache{instance="node01"}[5m])
#5分钟内的差值
predict_linear:可以预测时间序列,V在T秒之后的变化趋势,对样本数据的变化趋势的预测
predict linear(node_filesystem_files{instance="master01"}[2h],4*3600)
node_filesystem_files
#文件数,选择的标签是master01 2h过去两个小时,4*3600未来四个小时
统计过去两个小时的变化,根据这两小时的变化,预测未来4小时的变化

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

node_authorizer_graph_action_duration_seconds_bucket{instance="20.0.0.61:6443",le="0.0002"}
#观测桶的上边界,样本的统计区间,表示所有的样本值小于等于上边界的所有样本数量
#le="+Inf",最大区间,包含的所有样本数量

apiserver_current_inqueue_requests{instance="192.168.233.91:6443"} >= 1
#快速的了解监控样本的分布情况

8、summary:分位数计算,类似于historgram,在客户端于一段时间内(默认时间10分钟)

的每个采样点进行统计,计算并且存储了分位数的值。服务端可以直接抓取相应的值

quantile="0.5"
这里的0.5就是分位,他的范围是0<P<1

rate(node_cpu_seconds_total{ instance="node01"}[5m])
#展示的是指标node_cpu_seconds_total,指标是过去每五分钟的一个采样值,对应的标签为 instance="node01"

聚合操作符:

sum 求和

min 最小值

max 最大值

avg 平均值

stdev 标准差

stdvar 方差

count 元素个数

count_values 等于某个值的元素个数

topk 最大的元素个数

bottomk 最小的元素个数

quantile 分位数

业务中常用的语句:

#计算 master01 节点所有容器总计内存:
sum(container_memory_usage_bytes{instance=~"master01"})/1024/1024/1024

#计算 master01 节点最近 1m 所有容器 cpu 使用率:
sum (rate (container_cpu_usage_seconds_total{instance=~"master01"}[1m])) / sum (machine_cpu_cores{ instance =~"master01"}) * 100

#计算最近 1m 所有容器 cpu 使用率
sum by (id)(rate (container_cpu_usage_seconds_total{id!="/"}[1m]))

#查询 K8S 集群中最近 1m 每个 Pod 的 CPU 使用率
sum by (name)(rate (container_cpu_usage_seconds_total{image!="", name!=""}[1m]))



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

(2)查询 1 分钟的 load average 的时间序列是否超过主机 CPU 数量 2 倍
node_load1 > on (instance) 2 * count (node_cpu_seconds_total{mode="idle"}) by (instance)

(3)计算主机内存使用率
可用内存空间:空闲内存、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

(4)计算所有 node 节点所有容器总计内存:
sum  by (instance) (container_memory_usage_bytes{instance=~"node*"})/1024/1024/1024

(5)计算 node01 节点最近 1m 所有容器 cpu 使用率:
sum (rate(container_cpu_usage_seconds_total{instance="node01"}[1m])) / sum (machine_cpu_cores{instance="node01"}) * 100
#container_cpu_usage_seconds_total 代表容器占用CPU的时间总和

(6)计算最近 5m 每个容器 cpu 使用情况变化率
sum (rate(container_cpu_usage_seconds_total[5m])) by (container_name)

(7)查询 K8S 集群中最近 1m 每个 Pod 的 CPU 使用情况变化率
sum (rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m])) by (pod_name) 
#由于查询到的数据都是容器相关的,所以最好按照 Pod 分组聚合

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

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

相关文章

DeepSORT算法实现车辆和行人跟踪计数和是否道路违规检测(代码+教程)

DeepSORT算法是一种用于目标跟踪的算法&#xff0c;它可以对车辆和行人进行跟踪计数&#xff0c;并且可以检测是否存在道路违规行为。该算法采用深度学习技术来提取特征&#xff0c;并使用卡尔曼滤波器来估计物体的速度和位置。 DeepSORT算法通过首先使用目标检测算法来识别出…

基于Kubernetes的微服务架构,你学废了吗?

至于服务网关&#xff0c;虽然保留了 Zuul&#xff0c;但没有采用 Kubernetes 的 Ingress 来替代。这里有两个主要考虑因素&#xff1a;首先&#xff0c;Ingress Controller 并非 Kubernetes 的内置组件&#xff0c;有多种可选方案&#xff08;例如 KONG、Nginx、Haproxy 等&am…

目标检测算法训练数据准备——Penn-Fudan数据集预处理实例说明(附代码)

目录 0. 前言 1. Penn-Fudan数据集介绍 2. Penn-Fudan数据集预处理过程 3. 结果展示 4. 完整代码 0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&#xff0c;虽然参考了他人的宝贵见解及成果&#xff0c;但是内容可能存在不准确的地方。如…

Springboot项目启动后浏览器不能直接访问接口,而postman可以访问?

在云服务器上部署springboot后端时&#xff0c;项目启动后浏览器不能直接访问接口,而postman可以访问。这是当时困扰了我大半天的小问题&#xff0c;在我打开防火墙和阿里云安全组之后还是没解决。然后在网上搜了很多很多资料&#xff0c;以为是浏览器访问权限或者是https什么证…

微信公众号数量达到上限怎么办

一般可以申请多少个公众号&#xff1f;许多用户在申请公众号时可能会遇到“公众号显示主体已达上限”的问题。这是因为在2018年11月16日对公众号申请数量进行了调整&#xff0c;具体调整如下&#xff1a;1、个人主体申请公众号数量上限从2个调整为1个。2、企业主体申请公众号数…

Mac删除自带的ABC输入法,简单快捷

一、下载PlistEdit Pro软件 二、终端执行 sudo open ~/Library/Preferences/com.apple.HIToolbox.plist 三、其中有一个数字下面的KeyboardLayout Name的value为“ABC”&#xff0c;这就是ABC输入法&#xff0c;点击上面的Delete按钮&#xff0c;删除整项ABC内容&#xff0c…

【计算机毕业设计】128电脑配件销售系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

public class和class的区别

不用public修饰的类 一个Java源文件中可以定义多个不用public修饰的class&#xff0c;且类名不用和java源文件名一致。public修饰的类可以没有。编译之后&#xff0c;一个class就会对应生成一个class字节码文件 对于用public修饰的类 如果一个类用了public修饰&#xff0c;那…

搞懂Nginx的.conf文件路径配置

详解server中各部分作用及如何配置 如下图所示&#xff0c;这是我配置好的一个server代码块&#xff0c;我这里配置了https&#xff0c;所以会比默认的多一部分内容&#xff0c;如果你只需要配置http&#xff0c;则只需关注红色方框的部分即可&#xff0c;下面会按顺序讲解。 ①…

C++进阶--继承

概念 继承&#xff0c;允许一个类&#xff08;称为子类或派生类&#xff09;从另一个类&#xff08;称为父类或基类&#xff09;继承属性和方法。 继承的主要目的是实现代码的重用和构建类之间的层次关系。通过继承&#xff0c;子类可以获得父类的特性&#xff0c;包括数据成员…

海外短剧系统国际短剧源码h5多语言版app挂载tiktok油管ins

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目 前言 一、海外短剧系统是什么&#xff1f; 二、海外短剧系统功能与运营方式介绍 1.系统功能 2.短剧APP运营方式 总结 前言 本文简单介绍海外短剧系统的功能&#xff…

【已解决】Ubuntu64位无法运行32位ELF文件的问题

问题起因 因为在做一道逆向题&#xff0c;发现题目给的文件是32位elf文件&#xff0c;所以想在Linux下执行一下&#xff0c;然后发现会报错。 于是查了一下资料&#xff0c;发现报错的原因是64位的Ubuntu无法直接运行32位的程序&#xff0c;需要下载兼容32位的库。 解决方法…

JUC并发编程10——ThreadLocal

目录 1. ThreadLocal是什么&#xff1f; 2. ThreadLocal怎么用&#xff1f; 3. ThreadLocal源码分析 3.1set方法 3.2get()方法 3.3remove()方法 4.为什么key使用弱引用&#xff1f; 5.ThreadLocalMap 和 HashMap 区别 6.ThreadLocal变量不具有传递性 7.InheritableTh…

Android 跳转应用设置/热点界面或等常用操作

Android 跳转应用设置/热点界面或等常用操作 https://www.jianshu.com/p/ba7164126690 android学习进阶——Setting https://blog.csdn.net/csdn_wanziooo/article/details/81980984 Android 7.1 以太网反射 EthernetManager 配置 DHCP、静态 IP https://codeleading.com/art…

防火墙综合拓扑(NAT、双机热备)

实验需求 拓扑 实验注意点&#xff1a; 先配置双机热备&#xff0c;再来配置安全策略和NAT两台双机热备的防火墙的接口号必须一致如果其中一台防火墙有过配置&#xff0c;最好清空或重启&#xff0c;不然配置会同步失败两台防火墙同步完成后&#xff0c;可以直接在主状态防火墙…

MyBatis 的注解实现方法

MyBatis 的注解实现方法 MyBatis 的注解实现方法引入依赖添加配置创建表创建实体类创建mapper接口InsertDeleteSelectResults和ResultMap通过配置文件解决 UpdateOptions MyBatis 的注解实现方法 引入依赖 在springBoot项目中下载了EditStarters插件的,可以直接在配置文件处右…

JVM学习

1.Java虚拟机内部有哪些线程共享&#xff0c;那些线程隔离 程序计数器&#xff1a; 通过改变这个计数器的值来选取下一条需要执行的字节码命令 Java虚拟机栈&#xff1a; 栈&#xff0c;每个方法被执行时&#xff0c;Java虚拟机都会同步的创建一个栈帧用于存储局部变量表&…

Linux:进度条的创建

目录 使用工具的简单介绍&#xff1a; \r &#xff1a; fflush &#xff1a; 倒计时的创建&#xff1a; 倒计时的工作原理&#xff1a; 进度条的创建&#xff1a; 不同场景下、打印任意长度的进度条&#xff1a; main .c procbor.c 测试效果&#xff1a; 使用工具…

STM32学习笔记(四) —— 位段别名区的使用

STM32F103RCT6有两个位段区 (SRAM 最低1M空间和片内外设存储区最低1M空间)&#xff0c; 这两个区域都有各自的别名区&#xff0c;在别名区中每个字会映射到位段区的一个位&#xff0c;所以在别名区修改一个字相当于修改位段区中对应的一个位 映射公式( 别名区中的字与位段区中的…