一、介绍

本文主要记录下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/.*"}。

总结:Prometheus匹配模式相关推荐

  1. R语言str_extract函数从字符串中抽取匹配模式的字符串

    R语言str_extract函数从字符串中抽取匹配模式的字符串 目录 R语言str_extract函数从字符串中抽取匹配模式的字符串 #导入包和库

  2. rabbitmq中的三种交换器(匹配模式)

    direct(直接交换模式) 消息中的路由键(routing key)如果和Binding中的binding key一致,交换器就将消息发到对应的队列中.它是完全匹配,单播的模式. fanout(广播 ...

  3. java中正则全局匹配_JS中正则表达式全局匹配模式/g用法实例

    JS中正则表达式全局匹配模式 /g用法详解 本文章来详细介绍js中正则表达式的全局匹配模式 /g用法, var str = "123#abc"; var re = /abc/ig; ...

  4. 正则表达式是匹配模式,要么匹配字符,要么匹配位置

    正则表达式是匹配模式,要么匹配字符,要么匹配位置 正则表达式之所以强大,是因为它能实现模糊匹配 模糊匹配有两个方向上的匹配: ​ 横向模糊 ​ 纵向模糊 横向模糊 一个正则可匹配的字符串的长度不是固定 ...

  5. Javascript中正则表达式的全局匹配模式

    先看一道JavaScript题目,据说是国内某知名互联网企业的JavaScript笔试题,如果对正则的全局匹配模式不了解的话可能会对下面的输出结果感到疑惑. View Code var str = & ...

  6. Java 正则表达式匹配模式[贪婪型、勉强型、占有型]

    转载自  Java 正则表达式匹配模式[贪婪型.勉强型.占有型] Greediness(贪婪型):最大匹配 X?.X*.X+.X{n,} 是最大匹配.例如你要用 "<.+>&qu ...

  7. vim 底行命令模式的正则表达式(匹配模式)

    文章目录 一.vim 替换表达式的语法格式 二.vim 关于 range 的表达式 三.vim 关于 flags 的元字符 四.vim 关于数量的元字符 五.环视和固化分组 六.vim 替换表达式的示 ...

  8. Glob Patterns匹配模式使用

    前段时间在用workbox时,在做precache时,匹配模式基于的是Glob Pattern模式,于是就看了下相关文档. 下面翻译一下node-glob的使用,原文:https://github.c ...

  9. 《Python Cookbook 3rd》笔记(2.8):多行匹配模式

    多行匹配模式 问题 你正在试着使用正则表达式去匹配一大块的文本,而你需要跨越多行去匹配. 解法 这个问题很典型的出现在当你用点 (.) 去匹配任意字符的时候,忘记了点 (.) 不能匹配换行符的事实.比 ...

最新文章

  1. docker初体验:docker部署nginx负载均衡集群
  2. NO.80 禅道使用分享第九期:测试部门缺陷管理的新需求
  3. 面试官吐槽:面试了一个三本的学渣,开口就要一万六!
  4. python浅拷贝和深拷贝
  5. 突破模糊定性分析,批归一化和权重衰减的球面优化机制
  6. python 廖雪峰数据分析统计服_廖雪峰python教程阅读量统计
  7. Sql Server 行转列学习 根据学生表、课程表、学生成绩表统计每个学生的各科成绩和他的总成绩、平均成绩...
  8. 小程序入门学习12--云函数与数据库01
  9. 5G、IoT 爆发前夕,我们必须了解的操作系统! | 码书
  10. Android开发:菜单栏Menu用法讲解
  11. cad shx 字体读取
  12. java冒泡排序经典代码_java冒泡排序
  13. “科目四”竟是民间杜撰出来的?
  14. R语言怎么批量进行fisher检验?
  15. 广东2018年6月计算机一级试题,2018年9月计算机等级考试一级试题及答案.doc
  16. AI绘画能力的起源:通俗理解VAE、扩散模型DDPM、DETR、ViT/Swin transformer
  17. 数值分析:数据的最小二乘拟合
  18. 渗透测试学习之日常打靶THE PLANETS: EARTH
  19. 实现一个地铁线路站点
  20. 【MODIS合集】MRT批处理MODIS数据

热门文章

  1. Unity 渲染管线
  2. 国美新动作“真选”“严选”赋能 多维度护航品质消费
  3. java 统计在线时长_如何有效统计app用户在线时长?
  4. java实现股票程序化预警和选股
  5. 文本框不能输入中文汉字
  6. 男人向狗学习 女人向猫看齐
  7. 无数据损失的将简单卷变回主分区的方法
  8. 买一个密码只需55美分 网络安全真是浮云?
  9. Linux安装达梦数据库,注意事项,数据库实例化,建库,建新用户
  10. 【shell】判断字符串值是否相等