涨薪技术|Prometheus内置的数据查询语言PromQL

Prometheus通过指标名称(metrics  name)以及对应的一组标签(labelset)唯一定义一条时间序列。指标名称反映了监控样本的基本标识,而label则在这个基本特征上为采集到的数据提供了多种特征维度。用户可以基于这些特征维度过滤,聚合,统计从而产生新的计算后的一条时间序列。

PromQL是Prometheus内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。并且被广泛应用在Prometheus的日常应用当中,包括对数据查询、可视化、告警处理当中。可以这么说,PromQL是Prometheus所有应用场景的基础,理解和掌握PromQL是Prometheus入门的第一课。

一、查询时间序列

当Prometheus通过Exporter采集到相应的监控指标样本数据后,我们就可以通过PromQL对监控样本数据进行查询。

当我们直接使用监控指标名称查询时,可以查询该指标下的所有时间序列。如:

http_requests_total

等同于:

http_requests_total{}

该表达式会返回指标名称为http_requests_total的所有时间序列:

图片

PromQL还支持用户根据时间序列的标签匹配模式来对时间序列进行过滤,目前主要支持两种匹配模式:完全匹配和正则匹配。

PromQL支持使用= 和!= 两种完全匹配模式:

  • 通过使用label=value 可以选择那些标签满足表达式定义的时间序列;

  • 反之使用label!=value 则可以根据标签匹配排除时间序列;

### Prometheus 数据查询语法使用教程 Prometheus数据查询主要依赖于其内置的查询语言 PromQL (Prometheus Query Language)[^1]。以下是关于如何在 Prometheus 中进行数据查询的相关说明: #### 1. 查询基础 PromQL 是一种强大的查询语言,专为处理时间序列数据而设计。它可以执行多种操作,包括但不限于过滤、聚合以及复杂的数据转换[^3]。 - **瞬时向量**:表示某一时刻的时间序列集合。例如,`http_requests_total` 将返回所有匹配该名称的时间序列。 - **区间向量**:表示一段时间范围内的样本集。通过指定 `[duration]` 来定义时间段,如 `http_requests_total[5m]` 表示过去五分钟内所有的请求记录[^2]。 #### 2. 基本查询结构 基本查询由以下几个部分组成: - **指标名**:这是查询的核心组件,用于定位特定的时间序列。例如,`node_cpu_seconds_total` 可以用来查询 CPU 使用情况。 - **标签过滤器**:允许进一步缩小目标范围。格式为 `{<label_name>="<value>"}` 或者 `{__name__=~"<regex_pattern>"}`。例如,`{job="node-exporter", instance="localhost:9100"}`。 #### 3. 聚合与计算 为了更好地分析数据,PromQL 提供了一系列内置函数来支持各种类型的聚合操作。常见的有求和 (`sum`)、平均值 (`avg`) 和计数 (`count`) 等。这些函数通常配合分组参数一起使用,比如按实例或作业分类汇总统计结果。 ```promql sum by(instance)(rate(http_requests_total[5m])) ``` 上述例子展示了如何基于每台主机计算 HTTP 请求速率并对其进行加总。 #### 4. 时间偏移功能 如果需要对比当前状态同历史某段时间的状态差异,则可利用 offset 关键字实现这一点。下面这个命令会显示相对于现在两小时前的错误率变化趋势: ```promql irate(node_network_receive_errs_total{device="eth0"} offset 2h) ``` 此特性对于诊断问题或者评估改进效果非常有用。 --- ### 示例代码片段 以下是一些实用的 PromQL 查询模板: ```promql // 获取最近一分钟内存利用率百分比 (1 - sum(node_memory_MemFree_bytes) / sum(node_memory_MemTotal_bytes)) * 100 // 统计过去十分钟内发生的异常事件总数 increase(job_failure_count[10m]) // 计算磁盘读写速度(单位MB/s) (sum(rate(node_disk_io_time_weighted_seconds_total[1m])) without(device) * 1e-6 ``` 以上脚本分别实现了不同维度上的性能监测需求[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

川石课堂软件测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值