【云原生学习】PromQL学习以及Node Exporter常用查询语句

2023-11-05

文章目录

PromQL学习以及Node Exporter常用查询语句

一、PromQL学习

1.1 表达式数据类型

Instant vector - 一组时间序列,其中包含每个时间序列的一个样本,它们共享相同的时间戳

Range vector - 一组时间序列,其中包含每个时间序列随时间变化的一系列数据点

Scalar - 一个简单的数值浮点值

String - 一个简单的字符串值;

1.1.1 Instant vector selectors

例如:

http_requests_total

{}表示过滤
http_requests_total{job="prometheus",group="canary"}

支持以下操作

=: 完全相等

!=: 不相等

=~:正则匹配字符串或子串

!~: 正则不匹配字符串或子串

vector selectors必须指定一个名称或至少一个与空字符串不匹配的标签匹配器。下面的表达式是非法的。
{job=~".*"} # Bad!

应该改为
{job=~".+"}              # Good!
{job=~".*",method="get"} # Good!

__name__ 标签

http_requests_total 等价于 {__name__="http_requests_total"}

以下可以查找job开头的所有指标
{__name__=~"job:.*"}

1.1.2 区间vector selectors

时间单位

s - seconds m - minutes h - hours

d - days w - weeks y - years

以下表示最后5分钟内匹配标签的指标
http_requests_total{job="prometheus"}[5m]


offset modifier

偏移修改器允许更改查询中的单个瞬间和范围向量的时间偏移量

以下表示与当前时间相隔5分钟的指标
http_requests_total offset 5m

1.2 符合运算
1.2.1 操作符
+ 
- 
* 
/% 取模
^
1.2.2 比较符
==
!= 
> 
< 
>= 
<= 
1.2.3 逻辑运算符
and 交集
or  并集
unless 补集
1.2.4 集合匹配
常见11,和多对一/一对多

一对一匹配
method_code:http_errors:rate5m{code="500"} / ignoring(code) method:http_requests:rate5m

一对多和多对一
method_code:http_errors:rate5m / ignoring(code) group_left method:http_requests:rate5m

1.2.5 聚合操作
sum 
min
max
avg
stddev 计算总体标准差除以维数
stdvar 计算总体标准方差除以维度
count
count_values 计算具有相同值的元素的数量
bottomk 最小k个元素的样本值
topk 最大k个元素的样本值
quantile (calculate φ-quantile (0 ≤ φ ≤ 1) over dimensions) 分位数(分位数(Quantile),亦称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数(即二分位数)、四分位数、百分位数等)
1.2.6 优先级
^
*, /, %
+, -
==, !=, <=, <, >=, >
and, unless
or


然而 ^ 从右开始, 所以 2 ^ 3 ^ 2 = 2 ^ (3 ^ 2)
1.3 内置函数
abs(v instant-vector) 绝对值

absent(v instant-vector) 判断指标数据是否存在,在预警时非常有用

  absent(nonexistent{job="myjob"})
  # => {job="myjob"}

  absent(nonexistent{job="myjob",instance=~".*"})
  # => {job="myjob"}

  absent(sum(nonexistent{job="myjob"}))
  # => {}

ceil(v instant-vector) 大于等于当前的最小整数

changes(v range-vector) 返回给定时间范围内改变值的数量

clamp_max(v instant-vector, max scalar) max的上限

clamp_min(v instant-vector, min scalar) min的下限

day_of_month(v=vector(time()) instant-vector) 一个月中的日,返回值1-31

day_of_week(v=vector(time()) instant-vector) 一礼拜的星期几,0-60是礼拜天

days_in_month(v=vector(time()) instant-vector) 一月的天数,28-31

delta(v range-vector)
  以下返回现在和2个小时之前cpu的温度差
  delta(cpu_temp_celsius{host="zeus"}[2h])

deriv(v range-vector) 计算距离向量中时间序列的二阶导数
  使用线性表达式 具体查看 https://en.wikipedia.org/wiki/Simple_linear_regression

exp(v instant-vector) 指数
Exp(+Inf) = +Inf
Exp(NaN) = NaN

floor(v instant-vector) 小于当前的最近整数

histogram_quantile()
直方图(P-浮点,B瞬时矢量)从柱状图B的直方图中计算出(01之间)的π-分位数。(参阅直方图和摘要,详细解释了PH-分位数和直方图度量类型的用法。)B中的样本是每个桶中的观测值。每个样本必须有标签LE,其中标签值表示桶的包含上限。(没有这种标签的样本被忽略)。直方图度量类型自动提供与桶桶后缀和适当标签的时间序列。

holt_winters(v range-vector, sf scalar, tf scalar)
  根据V的范围产生时间序列的平滑值,平滑因子SF越低,对旧数据的重要性就越大。趋势因   子TF越高,数据的趋势越大。SF和TF必须在01之间

hour(v=vector(time()) instant-vector) 小时,0-23

idelta(v range-vector) 计算最后两个之间的区别

increase(v range-vector) 计算向量范围内,时间序列的增长值。increase只能用计数器

irate(v range-vector) 计算每秒的速率。基于最后两个数据点。irate和聚合操作一起时, irate优先,然后聚合
label_join(v instant-vector, dst_label string, separator string, src_label_1 string, src_label_2 string, ...) 标签加入

label_replace(v instant-vector, dst_label string, replacement string, src_label string, regex string) 标签替换

ln(v instant-vector) 自然对数
 ln(+Inf) = +Inf
 ln(0) = -Inf
 ln(x < 0) = NaN
 ln(NaN) = NaN

log2(v instant-vector) 二进制对数计算的所有元素

log10(v instant-vector) 十进制对数计算的所有元素

minute(v=vector(time()) instant-vector) 分钟,0-59

month(v=vector(time()) instant-vector) 月,1-12

predict_linear(v range-vector, t scalar)
  预测线性(V范围向量,T标量)基于距离向量V,利用简单线性回归预测从现在开始的时间序列T秒的值。

rate(v range-vector) 计算每秒的增加的平均速率。用于计数器

resets(v range-vector)
 返回计数器reset的数量,两个样本之间值变小,作为一个计数器reset

round(v instant-vector, to_nearest=1 scalar)在所有的样本值在元素v到最近的整数。to_nearest参数允许指定的最近倍数 ,对采样值进行舍入

scalar(v instant-vector) 返回样本单个元素值,没有返回NaN 

sort(v instant-vector) 根据值升序排列

sort_desc() 降序排列

sqrt(v instant-vector) 开方

time() 返回从1970 11号到现在的秒数

timestamp(v instant-vector) 返回样本的时间戳

vector(s scalar) 返回标量s作为载体的标签

year(v=vector(time()) instant-vector) 返回年

<aggregation>_over_time()
   avg_over_time(range-vector)平均值 : 所有的点在该指定间隔。
   min_over_time(range-vector): 在所有点的最小值在指定的间隔。
   max_over_time(range-vector)将最大的值 : 在所有点的指定区间。
   sum_over_time(range-vector)所有值的总和 : 在指定的间隔。
   count_over_time(range-vector)计数 : 将所有的值在指定的间隔。
   quantile_over_time(scalar, range-vector)  分位数φ (0 ≤ φ ≤ 1) 的值在指定的间隔。
   stddev_over_time(range-vector) : 标准偏差值在指定的间隔。
   stdvar_over_time(range-vector): 标准方差的值在指定的间隔。
注意,即使在整个区间内的值不是相等的间隔,在指定的间隔中的所有值在聚合中都具有相同的权重

二、Node Exporter常用查询语句

收集到 node_exporter 的数据后,我们可以使用 PromQL 进行一些业务查询和监控,下面是一些比较常见的查询。

注意:以下查询均以单个节点作为例子,如果大家想查看所有节点,将 instance=“xxx” 去掉即可。

2.1 CPU使用率
100 - (avg by (instance) (irate(node_cpu{instance="xxx", mode="idle"}[5m])) * 100)
2.2 CPU各mode占比率
avg by (instance, mode) (irate(node_cpu{instance="xxx"}[5m])) * 100
2.3 机器平均负载
node_load1{instance="xxx"} // 1分钟负载
node_load5{instance="xxx"} // 5分钟负载
node_load15{instance="xxx"} // 15分钟负载
2.4 内存使用率
100-(node_memory_MemFree_bytes{instance="192.168.119.69:9796"}+node_memory_Cached_bytes{instance="192.168.119.69:9796"}+node_memory_Buffers_bytes{instance="192.168.119.69:9796"})/node_memory_MemTotal_bytes{instance="192.168.119.69:9796"}*100
2.5 磁盘使用率
100 - node_filesystem_free_bytes{mountpoint = "/",instance="xxx",fstype!~"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|udev|none|devpts|sysfs|debugfs|fuse.*"} /
           node_filesystem_size_bytes{mountpoint = "/",instance="xxx",fstype!~"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|udev|none|devpts|sysfs|debugfs|fuse.*"} * 100
      
或者你也可以直接使用 {fstype="xxx"} 来指定想查看的磁盘信息
2.6 网络IO
// 上行带宽
sum by (instance) (irate(node_network_receive_bytes_total{instance="xxx",device!~"bond.*?|lo"}[5m])/128)

// 下行带宽
sum by (instance) (irate(node_network_transmit_bytes_total{instance="xxx",device!~"bond.*?|lo"}[5m])/128)
2.7 网卡出入包
// 入包量
sum by (instance) (rate(node_network_receive_bytes_total{instance="xxx",device!="lo"}[5m]))

// 出包量
sum by (instance) (rate(node_network_transmit_bytes_total{instance="xxx",device!="lo"}[5m]))
  
2.8 IOPS读写
irate(node_disk_writes_completed_total{instance=~"^192.168.119.68:9796",device=~"[a-z]*[a-z]"}[5m])
   
   
    //IOPS读  查询条件
       String IOPSRead = "sum without(device)  (node_disk_reads_completed_total{instance=~\"^" + instance + "\"})";
node_disk_reads_completed_total/node_disk_read_time_seconds_total

读
irate(node_disk_reads_completed_total{instance=~"^192.168.119.68:9796",device=~"[a-z]*[a-z]"}[5m])
2.9 每秒api请求数
sum by(component) (irate(apiserver_request_total[5m]))
2.10 api平均延时
avg by(component)((sum by(component)(apiserver_request_duration_seconds_sum))/(sum by(component)(apiserver_request_duration_seconds_count)))
2.11 调度器调度次数
sum  (scheduler_schedule_attempts_total)
2.12 调度失败的pod
sum (scheduler_schedule_attempts_total{result!="scheduled"})
2.13 集群CPU使用率
1- (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])))
2.14 集群内存使用率
100 * (1 - sum(node_memory_MemAvailable_bytes) / sum(node_memory_MemTotal_bytes))
2.15 集群磁盘使用率
(sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
    - sum(node_filesystem_free_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
   ) / sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"}) * 100 
2.16 集群总cpu
sum (machine_cpu_cores{node=~"^.*$"})
2.17 集群已经使用的cpu
(1 - (avg(irate(node_cpu_seconds_total{mode="idle",node=~"^.*$"}[5m])))) * sum(machine_cpu_cores{node=~"^.*$"})
2.18 集群总内存
sum (machine_memory_bytes{node=~"^.*$"})
2.19 集群已使用内存
sum(node_memory_MemTotal_bytes{device!~"rootfs|HarddiskVolume.+",node =~"^.*$"}) - sum(node_memory_MemAvailable_bytes{device!~"rootfs|HarddiskVolume.+",node =~"^.*$"})
2.20 集群总磁盘
sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
2.21 集群已使用磁盘
sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
    - sum(node_filesystem_free_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
2.22 集群总pod
sum (kube_node_status_capacity_pods)
   
不用--->  sum(kube_pod_status_phase{namespace=~".*", phase=~".*"})
2.23 集群运行pod
sum(kubelet_running_pod_count)
   
sum(kube_pod_status_phase{namespace=~".*", phase="Running"})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【云原生学习】PromQL学习以及Node Exporter常用查询语句 的相关文章

  • Docker Postgres 安装部署指南1.0

    以下为实验版本 Docker version 18 09 2 Postgres 11 4 内容目录 1 确定需要安装的版本 2 获取指定版本镜像 3 指定数据挂载目录 4 启动Postgres服务 5 创建数据库 用户 5 1 进入容器内部
  • Web函数请求多并发上线,Web服务部署更快更省

    Web函数 Web Function 是云函数的一种函数类型 区别于事件函数 Event Function Web函数通过支持原生的HTTP WebSocket协议 兼容任意一种原生Web框架编写的Web服务 无需改造即可将传统项目部署到函
  • 【云原生之Docker实战】在Docker环境部署Answer问答平台

    云原生之Docker实战 在Docker环境部署Answer问答平台 一 Answer介绍 二 检查本地Docker环境 1 检查本地Docker版本 2 检查Docker状态 3 检查docker compose版本 三 下载Answer
  • Ubuntu云原生环境安装,docker+k8s+kubeedge(亲测好用)

    docker安装步骤 Linux 一 移除以前docker相关包 sudo apt get autoremove docker docker ce docker engine docker io containerd runc 二 设置存储
  • 原动力×云原生正发声 降本增效大讲堂

    原动力 云原生正发声 降本增效大讲堂课程活动链接 原动力 云原生正发声 降本增效大讲堂 提升IT资源利用率 实现降本增效 已经成为企业关注重点 2021 年 CNCF FinOps Kubernetes Report 指出 迁移至 Kube
  • KubeVela 正式开源:一个高可扩展的云原生应用平台与核心引擎

    来源 阿里巴巴云原生公众号 美国西部时间 2020 年 11 月 18 日 在云原生技术 最高盛宴 的 KubeCon 北美峰会 2020 上 CNCF 应用交付领域小组 CNCF SIG App Delivery 与 Open Appli
  • 云原生之使用Docker部署Dashdot服务器仪表盘

    云原生之使用Docker部署Dashdot服务器仪表盘 一 Dashdot介绍 二 检查本地系统环境 1 检查本地系统版本 2 检查docker状态 3 检查docker版本 三 下载Dashdot镜像 四 部署Dashdot应用 1 创建
  • 【云原生

    本期文章是K8s第3篇 主要是实战Kubectl创建Deployment部署应用 通过本期文章 我们将学习创建在 Kubernetes 集群上运行应用程序的 Deployment 所需的最常见的 Kubectl 命令 在前期的文章中 已经介
  • 腾讯云 Finops Crane 开发者集训营 - 云原生如何助力企业搞定成本优化

    引言 随着docker的技术普及 越来越多的企业加入了云计算发展进程 云原生产业发展迅猛 云原生建设投入比例明显 面对大规模的集群投入 部署 维护等问题也逐渐产生 越来越多的企业对云原生不断提出更高要求 同时云原生技术简化运维的效能提 升开
  • 云原生之使用docker部署mongodb数据库

    云原生之使用docker部署mongodb数据库 一 检查系统版本 二 检查docker状态 三 检查docker版本 四 下载mongodb镜像 五 创建mongodb容器 1 创建数据目录 2 创建mongodb容器 3 查看mongo
  • Go语言入门【09】结构体

    结构体 相比于Java 在Go语言中没有类的概念 但是多了结构体 结构体与Java中的类很像 是表示一系列同一类型或不同类型的数据构成的数据集合 例如可以将学生抽象成一个结构体 每一个学生有以下属性 Name 姓名 Age 年龄 Gende
  • 容器数据持久化

    一 挂载方式 Docker提供三种方式将数据从宿主机挂载到容器中 volumes Docker管理宿主机文件系统的一部分 var lib docker volumes 保存数据的最佳方式 bind mounts 将宿主机上的任意位置的文件或
  • 施耐德电气携中国信通院和中国联通共同发布白皮书,共探5G+PLC深度融合应用

    2023年9月20日 全球能源管理和自动化领域的数字化转型专家施耐德电气在第23届中国国际工业博览会首日的9月19日 与中国信息通信研究院 以下简称 中国信通院 及中国联合网络通信集团有限公司 以下简称 中国联通 联手重磅发布 5G PLC
  • 第六章--- 实现微服务:匹配系统(下)

    0 写在前面 这一章终于完了 但是收尾工作真的好难呀QAQ 可能是我初学的缘故 有些JAVA方面的特性不是很清楚 只能依葫芦画瓢地模仿着用 特别是JAVA的注解 感觉好多但又不是很懂其中的原理 只知道要在某个时候用某个注解 我真是有够菜的
  • kubernetes入门到进阶(2)

    被隔离的进程 一起来看看容器的本质 大家好 我们继续来一起学习k8s 在上一个章节里 我们初步了解了容器技术 在Linux虚拟机里安装了当前最流行的容器docker 还是用了docker ps docker run 等命令简单操作了容器 广
  • Kubernetes 简介

    1 Kubernetes简介 一个容器管理应用 提高容器化服务的部署和管理效率 2 容器部署 2 1 传统部署形式 应用共用服务器环境 对于底层资源 文件目录 JDK 网络带宽等 存在弹性争夺 冲突等问题 容易导致应用性能不稳定 服务器环境
  • 如何利用 Kubernetes 的新 CronJob API 进行高效的任务调度

    Kubernetes 的 CronJob API 是在云原生环境中自动执行常规任务的关键功能 本指南不仅引导您完成使用此 API 的步骤 还说明了它非常有用的实际用例 先决条件 正在运行的 Kubernetes 集群 版本 1 21 或更高
  • 微服务常见的配置中心简介

    微服务架构中 常见的配置中心包括以下几种 Spring Cloud Config Spring Cloud Config是官方推荐的配置中心解决方案 它支持将配置文件存储在Git SVN等版本控制系统中 通过提供RESTful API 各个
  • Go、Docker、云原生学习笔记全攻略:从零开始,一步步走向精通!(2024版)

    第一章 Go语言学习宝典 一 介绍 01 Go 语言的前生今世 二 开发环境搭建 01 Go 语言开发环境搭建 三 初识GO语言 01 Go 多版本管理工具 02 第一个 Go 程序 hello world 与 main 函数 03 Go
  • Kubernetes (十三) 存储——持久卷-动静态分配

    一 简介 二 NFS持久化存储步骤 静态分配 1 集群外主机用上次nfsdata共享目录中创建用来测试的pv 1 3 目录 用来对三个静态pv 2 创建pv的应用文件 vim pv yaml apiVersion v1 kind Persi

随机推荐

  • VSCode HTML代码中怎么导入其他文件夹中的内容

    在标签下插入 link rel stylesheet href css xxx css 其中 css xxx css 为路径标签 意思是在一个叫做css的文件夹中有的一个叫xxx css的css样式文件
  • sqli-labs第二十六二十六a关

    这关油条加你的可以试试linux搭建sqlilabs这样比较简单 需要注意的 本关可能有的朋友在 windows 下无法使用一些特殊的字符代替空格 此处是因为 apache 的解析的问题 这里请更换到 linux 平台下 本关结合 25 关
  • 智能合约(一)————智能合约入门

    1 智能合约的基本组成 1 1 程序版本 1 2 合约声明 1 3 状态变量 1 4 合约方法 在这里constant相当于他声明这个局部变量不能更改 但是他并没有实际作用 实际就只是警示作用 2 地址adress address bala
  • GDB忽略SIGPWR和SIGCPU这两个信号

    用GDB 调试Java程序 陈皓 http blog csdn net haoel 背景 想要使用GDB调试程序 就需要用GNU的编译器编译程序 如 用GCC编译的C C 的程序 才能用GDB调试 对于Java程序也是一样的 如果想要用GD
  • 【嵌入式】7段数码管电路原理

    电路原理说明 中间的是F 小数点是G 上面的对应具体管 下面的代表各个大管 两两对应 上面4个为一个字节 有两个字节 下面直接为一个字节 要让某个数字亮起必须满足两个逻辑条件 对应的 LED SEL 必须为 0 低电频 代表对应笔画的 LE
  • 无符号整形和有符号整形的比较

    对无符号整形比较的错误认知 整形数据存储形式 进制的转换 原码 反码 补码 转换原理 代码演示 总结 整形数据存储形式 在计算机内存里 整数以补码形式存储 正数的补码即原码 进制的转换 原码 反码 补码 正数的原码 正数的反码 正数的补码
  • 从进程中操作WPF窗体的显示隐藏

    一 问题描述 如何在一个进程中 打开另一个进程中的wpf已经隐藏的窗体 二 解决方案 1 在WPF进程中 获取该窗体的句柄 并保存到某个文件 这个文件可以是内存映射文件 也可以是普通的xml文件 在WPF的MainWindow中 添加 pr
  • Manjaro 根据连接速度排序配置源地址

    一 引言 使用 Manjaro 已经有一段时间了 一开始按照某一篇博客手动配置了国内源 最近公司搬了新的办公室 发现升级系统时出现连接不到更新服务器的问题 sudo pacman Syu 一定是源访问出现了问题 那么怎么办呢 二 解决 通过
  • (Leetcode) 寻找数组的中心索引- Python实现

    题目 给定一个整数类型的数组 nums 请编写一个能够返回数组 中心索引 的方法 我们是这样定义数组中心索引的 数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和 如果数组不存在中心索引 那么我们应该返回 1 如果数组有多个中心索引
  • Vue项目优化——通过 externals 加载外部 CDN 资源

    1 发现项目中存在的问题 为了直观地发现项目中存在的问题 我们可以在打包时生成报告 我们可以通过VueCli可视化的UI面板运行bulid直接查看报告 而在报告中我们发现了有这么一个文件 体积比较大 这样可能会造成我们较长时间的请求 2 那
  • JAV学习Object类

    Obj类 首先我们要认识到 Object类是我们所有类的顶层父类 所有类都是直接或者间接的继承自他 我们可以将它new出来也就是格式 Object obj new Object 我们罗列出来objct类的常用方法然后再一一介绍 方法名 ob
  • Flowable的基本使用 (4常用BPMN图配置)

    Flowable的基本使用 4常用BPMN图配置 上面几篇博客我们已经介绍了BPMN是什么 有什么节点 节点直接的关系与作用 这一篇我们画几个标准一些的BPMN图 一字长蛇阵 流程只要审核了就到下个节点 不审核就一直卡住 节点都配置了权限信
  • 媒介盒子「AI一键生成文章」功能上线,连新闻稿都不用自己写了~

    媒介盒子 AI一键生成文章 功能上线 发软文再也不用担心没有软文稿了 媒介盒子 AI一键生成文章 功能专为有软文发稿需求 但没有软文稿件的用户量身定做 媒介盒子作为国内首屈一指的专业软文发稿平台 在以往合作的客户中 经常有人反馈 我们公司没
  • python--argparse之action用法

    argparse之action用法 action关键字默认状态有两种 store true和store false 若输入命令时 不指定其参数 则store true显示为False store false显示为True 下面举个例子来直观
  • C++加密库 Crypto++

    lcrypto algorithm type name authenticated encryption schemes GCM CCM EAX high speed stream ciphers Panama Sosemanuk Sals
  • python从Excel表格中读取数据

    使用python从Excel表格中读取数据 需要安装xlrd库 pip3 install xlrd 或者 pip install xlrd 之后就可以在 py文件中导入该模块了 import xlrd
  • 用ppt图表分析人口数据

    2022年7月11日是世界人口日 联合国经济和社会事务部 经社部 在这一天发布了 世界人口展望2022 联合国每两年或三年发布一次 世界人口展望 的版本 上一个版本是2019版 世界人口展望2022 预测2022年11月15日 世界人口将达
  • 爆料称字节跳动实习生删库

    本文转载自IT之家 6 月 24 日消息 脉脉用户 程序员 白胜 在社交媒体称 字节跳动一名实习生删除了公司所有 lite 模型 在脉脉上引发关注 这名用户随后在回复中称 实习生直接 delete 父目录 还加了 skip trash li
  • 算法题记录【华为od】查找单入口空闲区域

    题目描述 思路分析 来源 华为OD真题学习 查找单入口空闲区域 100 大为童鞋的博客 CSDN博客 总体思路是遍历数组 查找符合要求的点即可 注意点一 单入口区域只能存在一个入口 用count判断是否只存在一个入口 注意点二 目标点上下左
  • 【云原生学习】PromQL学习以及Node Exporter常用查询语句

    文章目录 PromQL学习以及Node Exporter常用查询语句 一 PromQL学习 1 1 表达式数据类型 1 1 1 Instant vector selectors 1 1 2 区间vector selectors 1 2 符合