PromQL常见的使用场景

简介: 【10月更文挑战第14天】PromQL 的核心价值体现在时序数据的筛选与计算上。面对海量时序数据,PromQL 通过查询选择器实现高效过滤,满足特定监控图表渲染或告警规则处理的需求。

PromQL 典型的应用场景就是时序数据的查询和二次计算,这也是 PromQL 的两个核心价值,其中查询操作靠的就是查询选择器。

随便一个公司,时序数据至少都有成千上万条,而每个监控图表的渲染或者每条告警规则的处理,都只是针对有限的几条数据,所以 PromQL 第一个需求就是过滤。

{__name__=~"node_load.*", zone="sh"}[1m]

image.gif

算术运算符比较简单,就是我们常用的加减乘除、取模之类的符号。

# 计算内存可用率,就是内存可用量除以内存总量,又希望按照百分比呈现,所以最后乘以100
mem_available{app="clickhouse"} / mem_total{app="clickhouse"} * 100
# 计算北京区网口出向的速率,原始数据的单位是byte,网络流量单位一般用bit,所以乘以8
irate(net_sent_bytes_total{zone="beijing"}[1m]) * 8

image.gif

比较运算符就是大于、小于、等于、不等于之类的,理解起来也比较简单,但是意义重大,告警规则的逻辑就是靠比较运算符来支撑的。

mem_available{app="clickhouse"} / mem_total{app="clickhouse"} * 100 < 20
irate(net_sent_bytes_total{zone="beijing"}[1m]) * 8 / 1024 / 1024 > 700

image.gif

逻辑运算符有 3 个,and、or 和 unless,用于 instant-vector 之间的运算。and 是求交集,or 是求并集,unless 是求差集。我们来看一个 and 的使用场景。

disk_used_percent{app="clickhouse"} > 70 and disk_total{app="clickhouse"}/1024/1024/1024 < 200

image.gif

向量之间的操作是想要在右侧的向量中,为左侧向量的每个条目找到一个匹配的元素,匹配行为分为:one-to-one、many-to-one、one-to-many。

mysql_slave_status_slave_sql_running == 0
and ON (instance)
mysql_slave_status_master_server_id > 0

image.gif

聚合运算针对单个指标的多个 series,还会有一些聚合需求。比如说,我想查看 100 台机器的平均内存可用率,或者想要排个序,取数值最小的 10 台。这种需求可以使用 PromQL 内置的聚合函数来实现。

# 求取 clickhouse 的机器的平均内存可用率
avg(mem_available_percent{app="clickhouse"})
# 把 clickhouse 的机器的内存可用率排个序,取最小的两条记录
bottomk(2, mem_available_percent{app="clickhouse"})

image.gif

PromQL 的两个核心价值,一个是筛选,一个是计算。筛选是靠查询选择器,查询分为即时查询和范围查询。计算部分内容较多,有算术、比较、逻辑、聚合运算符,还有向量匹配逻辑,特别是 group_left 和 group_right。

相关文章
|
Prometheus 监控 Cloud Native
Prometheus PromQL语法
Prometheus PromQL语法
1027 0
|
机器学习/深度学习 监控 Web App开发
SLS机器学习最佳实战:根因分析(一)
通过算法,快速定位到某个宏观异常在微观粒度的具体表现形式,能够更好的帮助运营同学和运维同学分析大量异常,降低问题定位的时间。
13106 0
|
9月前
|
存储 运维 监控
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此使用 Apache Doris 替换 Elasticsearch,实现资源投入降低 50%、查询速度提升 2~4 倍,同时显著提高了运维效率。
444 3
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
|
Prometheus 监控 Cloud Native
使用mysqld_exporter监控所有MySQL实例
使用mysqld_exporter监控所有MySQL实例
1190 2
|
JSON Java API
原生Feign使用详解(HTTP客户端)(一)
原生Feign使用详解(HTTP客户端)(一)
557 1
|
存储 Prometheus Cloud Native
SLS Prometheus存储问题之为什么SLS时序引擎最终选择了使用C++实现PromQL的部分算子
SLS Prometheus存储问题之为什么SLS时序引擎最终选择了使用C++实现PromQL的部分算子
|
Linux Shell
Linux中的realpath命令:深入解析与实用指南
**Linux的`realpath`命令详解** `realpath`用于获取文件或目录的规范化绝对路径,解析相对路径、符号链接及冗余元素。它接受路径输入,返回最短、唯一的绝对路径。支持 `-e`(确保路径存在)、`-m`(允许缺失组件)、`-s`(删除多余斜杠)和`-q`(静默模式)等参数。在脚本中使用能确保路径一致性,但需注意权限和路径检查。了解`pwd`、`find`和`readlink`等命令的用法也有助于选择合适的路径处理工具。
|
SpringCloudAlibaba 负载均衡 Java
【二】SpringCloud Alibaba之Nacos整合篇(配置负载均衡)
【二】SpringCloud Alibaba之Nacos整合篇(配置负载均衡)
1811 0
|
运维 网络协议 网络架构
【华为数通HCIP | 网络工程师】821刷题日记-BFD和VRRP 及重点(1)
【华为数通HCIP | 网络工程师】821刷题日记-BFD和VRRP 及重点(1)
990 0
|
运维 Kubernetes Cloud Native
OAM 深入解读:OAM 为云原生应用带来哪些价值?
OAM 是阿里巴巴联合微软在社区推出的一款用于构建和交付云原生应用的标准规范,旨在通过全新的应用定义、运维、分发与交付模型,推动应用管理技术向“轻运维”的方向迈进,全力开启下一代云原生 DevOps 的技术革命。
OAM 深入解读:OAM 为云原生应用带来哪些价值?