pormetheus之promQL语法

news2024/9/20 14:48:19

1、基本语法

(1)node_cpu_guest_seconds_total监控项数据(指标项)

(2)node_cpu_guest_seconds_total{cpu="0"}时间序列

花括号里的表示标签。node使用cpu的描述统计,符合标签cpu=0的时间序列的查询结果

2、特殊标签:__address__(双下划线)

prometheus的默认标签,不显示在target页面中,只有把光标移动到label字段上才能显示默认标签

3、匹配标签值的操作符

=

完全等于

!=

不等于(取反)

=~

正则表达式匹配

!~

正则表达式取反

4、数学运算

+

加法

-

减法

*

乘法

/

除法

%

取余

^

幂运算

通配符

.

任意单个字符

.*

多个任意字符

.+

一个或者多个任意字符

5、数据类型

1

瞬时向量

一组时序,每个时序只有一个采样值

2

区间向量

一组时序,每个时序包含的是一段时间内的多个采样值

时长单位类型

s

seconds秒

m

minutes分

h

hour小时

d

day天

w

weeks周

y

years年

举例:rate(container_cpu_load_average_10s{instance="node2"}[5m])

过去每5分钟node2的采样值

3

标量数据

浮点数

4

字符串

一个字符串

5

counter

总数,在promQL语句中没有直接作用,根据函数指标:rate、topk、increase、irate生成样本数据的变化情况

注:rate、increase、irate均要结合区间向量一起使用

①topk(3,node_cpu_seconds_total)

increase(node_cpu_seconds_total[5m])每5分钟内数据的增量

③irate高灵敏度的函数,计算指标的瞬时速率,基于样本范围内的最后两个样本进行计算,irate更适用于短时间内的变化速率分析,rate适用于长时间内的变化速率分析

irate(node_cpu_seconds_total[5m])

6

gauge

存储值可增可减的样本数据。一般用于求和、求平均数、取最小值和最大值。结合delta、predict_linear函数一起使用

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

delta(container_memory_cache{instance="node1"}[5m])

②predict_linear线性回归,可以预测时间序列在V点和T秒之后的变化,根据过去一定时间范围内的行为预测样本数据的变化趋势

predict_linear(node_filesystem_files{instance="master"}[2h],4*3600)

统计过去2小时样本数据的变化,再根据过去2小时的数据变化预测未来4小时的数据变化

7

historgram

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

node_authorizer_graph_actions_duration_seconds_bucket{instance="20.0.0.17:6443", le="0.0002"}

 le="0.0002"表示观测桶的上边界,样本的统计区间,表示所有的样本值小于等于上边界值的所有样本数量

node_authorizer_graph_actions_duration_seconds_bucket{instance="20.0.0.17:6443", le="+Inf"}

le="+Inf"最大区间,包含的所有样本数量

apiserver_current_inqueue_requests{instance="20.0.0.17:6443"} >= 1

快速了解监控样本的分布情况

8

summary

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

apiserver_admission_step_admission_duration_seconds_summary

6、聚合操作符

sum

求和

min

最小值

max

最大值

avg

平均值

stddev

标准差

stdvar

方差

count

元素个数

count_value

等于某个值的元素个数

topk

最大的元素个数

bottomk

最小的元素个数

quantile

分位数

注:topk和bottomk要带入数值,表示取前几位还是后几位

①求和

sum(container_cpu_usage_seconds_total)

②方差

stdvar(container_cpu_usage_seconds_total)

③bottomk

bottomk(3,container_cpu_usage_seconds_total)最小的3个元素

④quantile

quantile(0.65,container_cpu_usage_seconds_total)

7、业务中常用语句

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

sum(container_memory_usage_bytes{instance="node1"})/1024/1024/1024

②node1最近1分钟内所有容器CPU的使用率

方式1:sum(rate(container_cpu_usage_seconds_total{instance="node1"}[1m]))

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

sum by (id) (rate(container_cpu_usage_seconds_total{id!="/"}[1m]))

④查询k8s中最近1分钟每个pod的CPU使用率

sum by(name) (rate(container_cpu_usage_seconds_total{image!="",name!=""}[1m]))

常用指标总结:

(1)计算 master01 节点所有容器总计内存:

sum(container_memory_usage_bytes{instance=~"master01"})/1024/1024/1024

(2)计算 master01 节点最近 1m 所有容器 cpu 使用率:

sum (rate (container_cpu_usage_seconds_total{instance=~"master01"}[1m])) / sum (machine_cpu_cores{ instance =~"master01"}) * 100

(3)计算最近 1m 所有容器 cpu 使用率

sum by (id)(rate (container_cpu_usage_seconds_total{id!="/"}[1m]))

(4)查询 K8S 集群中最近 1m 每个 Pod 的 CPU 使用率

sum by (name)(rate (container_cpu_usage_seconds_total{image!="", name!=""}[1m]))

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

(1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)) * 100

②查询 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

⑤计算 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的时间总和

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

sum (rate(container_cpu_usage_seconds_total[5m])) by (container_name)

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

sum (rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m])) by (pod_name)

#由于查询到的数据都是容器相关的,所以最好按照 Pod 分组聚合

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

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

相关文章

测试 35 个 webshell 检测引擎的查杀结果

最近发现了一个有意思的 使用分支对抗技术制作的 PHP Webshell 开源项目&#xff0c;共数十个查杀引擎免杀&#xff0c;项目地址&#xff1a;https://github.com/icewolf-sec/PerlinPuzzle-Webshell-PHP 什么是 Webshell Webshell 是一种恶意脚本&#xff0c;它能让攻击者通过…

Spring Boot 中文件上传

Spring Boot 中文件上传 一、MultipartFile二、单文件上传案例三、多文件上传案例四、Servlet 规范五、Servlet 规范实现文件上传 上传文件大家用的最多的就是 Apache Commons FileUpload&#xff0c;这个库使用非常广泛。Spring Boot3 版本中已经不能使用了。代替它的是 Sprin…

F5怎么样应对来自多云的挑战?一文讲透

伴随着5G、物联网、云计算等技术的快速发展&#xff0c;越来越多的企业也将其业务迁移到云&#xff0c;企业也在寻求多种云解决方案&#xff0c;以优化资源并降低成本&#xff0c;进一步优化IT运营。根据Deloitte发布的《美国云计算未来调查报告》&#xff0c;近80%的企业表示它…

CUDA编程- - GPU线程的理解 thread,block,grid - 学习记录

GPU线程的理解 thread,block,grid 一、从 cpu 多线程角度理解 gpu 多线程1、cpu 多线程并行加速2、gpu多线程并行加速2.1、cpu 线程与 gpu 线程的理解&#xff08;核函数&#xff09;2.1.1 、第一步&#xff1a;编写核函数2.1.2、第二步&#xff1a;调用核函数&#xff08;使用…

Ubuntu系统安装 Redis

环境准备 Ubuntu 系统版本&#xff1a;22.04.3Redis 版本&#xff1a;6.2.12 检查本地 make 环境 make -version若没有安装&#xff0c;则需要安装 sudo apt install make检查本地 gcc 环境 gcc -version若没有安装&#xff0c;则需要安装 sudo apt install gcc。 sudo a…

(四)Prometheus的语句

1、node_cpu_seconds_total&#xff1a;监控项数据、指标项 2、node_cpu_seconds_total{cpu"0"}&#xff1a;时间序列 node_cpu_seconds_total 监控项数据&#xff08;指标项&#xff09; {cpu"0"} 标签 node_cpu_seconds_total{cpu"0"}&…

【排序算法】归并排序

文章目录 一&#xff1a;基本概念1.1 定义1.2 算法思路1.3 图解算法1.4 合并两个有序数组流程1.5 动画展示 二&#xff1a;性能2.1 算法性能2.2 时间复杂度2.3 空间复杂度2.4 稳定性 三&#xff1a;代码实现 一&#xff1a;基本概念 1.1 定义 归并排序&#xff08;Merge sort…

EasyExcel实现Excel文件导入导出

1 EasyExcel简介 EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 github地址: https://github.com/alibaba/easyexcel 官方文档: https://www.yuque.com/easyexcel/doc/easyexcel Excel解析流程图: EasyExcel读取…

ip地址冲突上不了网怎么解决

在当今数字化的世界里&#xff0c;互联网已经成为了我们生活和工作中不可或缺的一部分。然而&#xff0c;有时候我们会遇到一些网络问题&#xff0c;其中最常见的就是IP地址冲突。当您的计算机无法连接到网络&#xff0c;或者网络连接不稳定时&#xff0c;这可能是IP地址冲突的…

华为---STP(二)---STP报文和STP端口状态

目录 1. STP报文简介 1.1 Configuration BPDU 1.2 TCN BPDU 2. STP交换机端口状态 2.1 STP交换机端口状态表 2.2 STP交换机端口状态迁移过程图 2.3 STP交换机端口状态变化举例说明 3 引起的STP网络拓扑改变的示例 3.1 根桥出现故障 3.2 有阻塞端口的交换机根端口所在…

编译opencv4.6问题汇总,第三方软件包见我发的资源

win10系统 python3.8.2&#xff0c;cmake-3.15.5-win64-x64&#xff0c;opencv4.6 编译方式见&#xff1a;OpenCV的编译 - 知乎 本文主要总结问题。赠人玫瑰手留余香。 问题1 Problem with installing OpenCV using Visual Studio and CMake (error code: MSB3073) 解决方法…

实验3:利用Linux的消息队列通信机制实现三个线程间的通信

调用原型 POSIX信号量–无名信号量 POSIX信号量是Pthread线程库提供的一种同步机制&#xff0c;包括无名信号量和有名信号量两种机制。无名信号量&#xff0c;常用于多线程间的同步&#xff0c;也可用于相关进程间的同步&#xff08;需置于相关进程间的共享内存区中&#xff…

React、React Router、JSX 简单入门快速上手

React、React Router、JSX 简单入门快速上手 介绍特点 JSX使用js表达式渲染列表样式控制注意事项 入门脚手架创建react项目安装目录介绍入口文件解析 组件解析介绍函数式组件类组件 事件绑定注意点定义使用事件对象事件处理函数接收额外参数 组件状态状态的定义使用 组件通信父…

金蝶云星空RCE漏洞合集(多接口批量检测)

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

IntelliJ Idea实用插件推荐

目录 一、插件安装 二、常用插件 A、代码规范 Alibaba Java Coding Guidelines SonarLint B、快捷开发 aiXcoder-AI代码生成 AWS Toolkit-AI代码生成 CodeGeeX-AI代码生成 CodeGlance-代码缩略图 camelCase-格式转换 GsonFormatPlus-json代码生成 Sequence Giagram…

从搜索引擎到答案引擎:LLM驱动的变革

在过去的几周里&#xff0c;我一直在思考和起草这篇文章&#xff0c;认为谷歌搜索正处于被颠覆的边缘&#xff0c;它实际上可能会影响 SEO 作为业务牵引渠道的可行性。 考虑到谷歌二十多年来的完全统治地位&#xff0c;以及任何竞争对手都完全无力削弱它&#xff0c;坦率地说&…

微信活动投票小程序源码系统:自主创建活动小程序带完整的安装代码包以及搭建教程

微信小程序的日益普及&#xff0c;越来越多的企业和个人开始关注如何利用小程序进行活动推广和用户互动。在这个背景下&#xff0c;微信活动投票小程序源码系统应运而生。这款源码系统旨在帮助用户快速创建自己的活动投票小程序&#xff0c;降低技术门槛&#xff0c;提高开发效…

代理模式(静态代理、JDK 动态代理、CGLIB 动态代理)

代理模式(静态代理、JDK 动态代理、CGLIB 动态代理) 一、代理模式概述1. 生活中的代理案例2. 为什么要使用代理3. 代理模式在 Java 中的应用4. 概述5. 生活中代理图示二、代理的实现方式1. Java 中代理图示2. 静态代理2.1 案例2.2 实现案例2.3 静态代理存在的问题三、动态代理…

centOS+nodejs+mysql阿里云部署前后端个人网站

centOSnodejsmysql阿里云部署前后端个人网站 参考&#xff1a; 部署NodeExpressMySQL项目到阿里云轻量应用服务器 阿里云轻量应用服务器部署Node.jsReactMongoDB前后端分离项目 参考&#xff1a;在阿里云上部署nodejs服务 https 部署的原理就是你在本地测试的时候在地址栏&am…

FileViewer纯前端预览项目Vue2 demo

FileViewer 项目Vue2 demo 本demo基于vue-clijsvue2.x构建&#xff0c;如果您需要vue3版本的demo&#xff0c;请前往main分支。 适用于Vue2 Webpack&#xff0c;本集成方法要求最低Webpack版本为5&#xff0c;也就是Vue Cli Service 5.0.0以上&#xff0c;当然&#xff0c;if…