总结:Prometheus匹配模式

本文介绍了Prometheus的标签匹配模式,包括完全匹配和正则匹配。完全匹配支持=和!=操作符,正则匹配则分为正向和反向匹配,适用于多条件场景。例如,正向匹配可用于查询以特定字符串开头的标签值,而反向匹配则用于排除不符合条件的序列。通过实例展示了如何使用正则表达式筛选状态码非2xx的http请求和以特定路径开头的handler。
摘要由CSDN通过智能技术生成

一、介绍

本文主要记录下prometheus的匹配模式。

在写PromQL时候,经常会需要根据tag匹配,比如我们常用的tagkey=tagval。

其实PromQL的匹配有多种,本文总结下。

二、完全匹配

目前主要支持两种匹配模式:完全匹配和正则匹配。

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

  • 查询状态码为200的:http_server_requests_seconds_count{application="hubble-biz-aiops", uri="/actuator/metrics",status="200"}
  • 查询状态码为非200的:http_server_requests_seconds_count{application="hubble-biz-aiops", uri="/actuator/metrics",status!="200"}

三、正则匹配

1、介绍

PromQL 还可以使用正则表达式作为匹配条件,并且可以使用多个匹配条件。

什么时候会用到正则呢?

一般我们匹配多种条件时候会使用正则,比如一个实际场景:http请求状态码中,匹配2xx,3xx,4xx认为成功,或者是匹配5xx是失败。

这里的xx就会有多种数据,不好一一例举,因此用正则是比较合适的。

正则匹配分为正向匹配和反向匹配:

  • 正向匹配:使用 label=~regx 表示选择那些标签符合正则表达式定义的时间序列。
  • 反向匹配:使用 label!~regx 进行排除。

2、案例

案例一

我想查询指标http_server_requests_seconds_count中,状态码status为非2xx的:

http_server_requests_seconds_count{application="hubble-biz-bq-alarm-query",status!~"2.."}

注意:

  • 2..:表示2xx,其中.代表任意字符,也可以用2.*或者2.+
  • .表示一个字符,这个字符可以是任意字符,*表示0~n个,+表示1~n个
  • 所以.*表示.后面可以跟0~n个.,如满足2.*的:2x,2xx,2xxx,2xxxxx,……
  • .+表示.后面可以跟1~n个.,如满足2.+的:2xx,2xxx,2xxxxx,……

案例二

我想查询指标 prometheus_http_requests_total 中,所有 handler 标签以 /api/v1 开头的记录,那么我的表达式为:prometheus_http_requests_total{handler=~"/api/v1/.*"}。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值