Prometheus 的查询语言 PromQL 详解

开发 前端
需要注意的是,本文我们介绍的是 PromQL 的查询范畴,关于 PromQL 计算范畴的内容,我们都没有介绍,比如,算术运算符、比较运算符、逻辑运算符,也是非常重要的内容,尤其在我们配置告警时会用到这些运算符。​

01、介绍

我们使用 Prometheus Go client library 在 Go 代码中埋点,将指标数据上报到 Prometheus server,接下来我们使用 PromQL 查询指标数据。

PromQL 可以在 Prometheus 提供的 http://localhost:9090/graph 中执行,本文我们介绍怎么使用 PromQL 查询指标数据。

02、PromQL

PromQL 除了直接使用指标名称查询时序数据之外,还可以联合使用 Label 和函数等。

比如我们使用最多的 Counter 指标类型,它会统计自启动 Prometheus 以来的计数总和,但是我们并不关心总数。我们只想知道 Counter 随着时间的推移,计数增加的速度。

比如我们可以直接使用自定义指标名称 http_request_count_total 查询所有指标名称为 http_request_count_total 的指标数据(HTTP 请求数)。

实际上,我们并不是要查询 HTTP 请求数的总和,而是想查询单位时间内,请求数的增长速度。此时,我们可以使用函数 rate 完成。

使用 rate(http_request_count_total[5m]) 可以查询 HTTP 每秒请求数,其中 [5m] 是指过去 5 分钟每秒请求数的平均值。

比如我们的 HTTP 请求数指标中包含 PATH 标签,如果我们想要统计所有 HTTP 请求数指标的每秒请求数的总和,可以使用 sum 聚合运算符 和 without 子句,sum without(path)(rate(http_request_count_total[5m]))。

比如我们想要查询指定 PATH 的 HTTP 每秒请求数,我们可以使用 rate(http_request_count_total{path="/ping"}[5m]) 查询,我们通过 {path="/ping"} 过滤指标数据。

实际上 http_request_count_total{path="/ping"} 中 {} 称为选择器,其中 path="/ping" 中的 = 称为匹配器,我们可以在 {} 中使用多个匹配器,使用 , 分隔。

匹配器有 4 种,path="/ping" 中的 = 是等式匹配器,此外,还有 != 不等、=~ 正则等、!~ 正则不等。

03、总结

本文我们主要介绍 PromQL 的一般使用方式,主要包括以下几个维度:

  1. 指标名称
  2. 标签
  3. 聚合运算符
  4. 子句
  5. 函数
  6. 选择器
  7. 匹配器

除了指标名称和标签,我们在之前的文章介绍过之外,其它都属于新知识,聚合运算符共计 11 个,我们只使用了 sum,子句除了 without 之外,还有 by,函数也只是使用 rate 举例,建议读者朋友们阅读官方文档,了解所有聚合运算符和函数的使用方式。

需要注意的是,本文我们介绍的是 PromQL 的查询范畴,关于 PromQL 计算范畴的内容,我们都没有介绍,比如,算术运算符、比较运算符、逻辑运算符,也是非常重要的内容,尤其在我们配置告警时会用到这些运算符。

责任编辑:武晓燕 来源: Golang语言开发栈
相关推荐

2021-10-13 06:02:25

PromQL Rate Promethues

2022-03-24 08:04:50

Kubernetes资源限制

2024-01-03 10:00:11

Prometheus指标Go

2022-05-18 08:32:05

服务监控Prometheus开源

2024-02-23 16:10:29

KubernetesPrometheus开源

2011-07-26 14:57:39

2021-08-27 07:06:10

应用

2021-03-15 10:10:29

数据库数据查询

2012-06-02 00:50:29

JPA查询语言JPQL

2012-06-02 00:45:36

JPA查询语言JPQL

2023-11-06 01:39:02

Go语言开发

2012-06-05 02:20:24

JPAJava查询语言

2009-09-08 17:27:18

LINQ to Dat

2009-09-29 16:29:40

Hibernate查询

2009-04-09 13:14:09

Oracle分页查询CBO

2010-05-07 11:00:25

Oracle多表查询

2009-04-29 10:00:25

SQL逻辑查询优化

2022-11-08 00:00:00

监控系统Prometheus

2024-04-08 11:52:08

PromQL技术监控

2021-08-06 13:48:53

C语言野指针内存
点赞
收藏

51CTO技术栈公众号