首页 > 其他分享 >Prometheus监控实战系列六:PromQL语法(下篇)

Prometheus监控实战系列六:PromQL语法(下篇)

时间:2023-08-29 15:22:54浏览次数:37  
标签:下篇 函数 prometheus 运算符 Prometheus PromQL http total 表达式

一. 操作符

在PromQL的查询中,还可以通过表达式操作符,进行更加复杂的结果查询,常见的操作有下列几种。

数学运算符

数据运算符使用的加、减、乘、除等方式,对样本值进行计算,并返回计算后的结果。

例如,通过process_virtual_memory_bytes获取到的内存值单位为byte,我们希望转换为GB为单位时,只需要使用下列表达式处理

process_virtual_memory_bytes/(1024*1024*1024)

 

PromQL支持的所有数学运算符如下所示:

  • + (加法)

  • - (减法)

  • * (乘法)

  • / (除法)

  • % (求余)

  • ^ (幂运算)

比较运算符

比较运算符支持用户根据时间序列样本的值,对时间序列进行过滤。

例如,我们只想查询Prometheus请求量大于1千的接口数据,则可以使用下列比较表达式进行过滤。

prometheus_http_requests_total{code="200"} > 1000

 

 

 

比较表达式还可以与bool修饰符进行搭配,添加bool后表达式将不再对数据进行过滤,而是根据比较结果返回1(true)或0(false)。

例如 :

prometheus_http_requests_total{code="200"} > bool 1000

 

 

 

Prometheus支持的比较运算符如下:

 

  • == (相等)

  • != (不相等)

  • > (大于)

  • < (小于)

  • >= (大于等于)

  • <= (小于等于)

逻辑运算符

逻辑运算符支持的操作有 and、or、unless(排除)三种,其中and为并集,用于匹配表达式中相同的结果。

如下示例,该表达式将匹配大于100小于1000区间的时间序列样本

prometheus_http_requests_total < 1000 or prometheus_http_requests_total > 100

其中,表达式1为显示所有小于1千的样本,而表达式2则是显示所有大于100的样本,在并集匹配后,将会显示两者间相同的数据,即小于1千大于100这个区间的样本。

 

 

 

unless与and正好相反,匹配结果将会排除两者中相同的样本,只显示其中对方互不包含部分的合集;而or的匹配范围最广,它除了会匹配表达式1所有的数据外,还会匹配表达式2中与其不相同的样本。

 

注意:Prometheus 的运算符之间存在着优先级,其中由高到低依次为(^)> (*, /, %) > (+, -) > (==, !=, <=, <, >=, >) > (and, unless) > (or) ,在使用过程中需要注意优先级关系,避免出现错误结果。

二. 内置函数

Prometheus内置不少函数,通过灵活的应用这些函数,可以更方便的查询及数据格式化。本文将选取其中较常使用到的几个函数进行讲解。

 

ceil 函数

ceil函数会将返回结果的值向上取整数。

示例:

ceil(avg(prometheus_http_requests_total{code="200"}))

 

floor 函数

floor 函数与ceil相反,将会进行向下取整的操作。

示例:

floor(avg(prometheus_http_requests_total{code="200"}))

 

rate函数

rate函数是使用频率最高,也是最重要的函数之一。rate用于取某个时间区间内每秒的平均增量数,它会以该时间区间内的所有数据点进行统计。rate函数通常作用于Counter类型的指标,用于了解增量情况。

示例:获取http_request_total在2分钟内,平均每秒新增的请求数

rate(prometheus_http_requests_total{handler="/rules"}[1m])

 

irate函数

相比rate函数,irate提供了更高的灵敏度。irate函数是通过时间区间中最后两个样本数据来计算区间向量的增长速率,从而避免范围内的平均值拉低峰值的情况。

示例:该函数用法与rate相同

irate(prometheus_http_requests_total{handler="/rules"}[1m])

 

其它内置函数

除了上面提到的这些函数外,PromQL还提供了大量的其他函数供使用,功能范围涵盖了日常所需的功能,如用于标签替换的label_replace函数、统计Histogram指标分位数的histogram_quantile函数,更多信息可参阅官方文档:https://prometheus.io/docs/prometheus/latest/querying/functions/。

 

标签:下篇,函数,prometheus,运算符,Prometheus,PromQL,http,total,表达式
From: https://www.cnblogs.com/quqibinggan/p/17664899.html

相关文章

  • Prometheus监控实战系列一: 产品介绍
    一.概述 Promehteus是一款近年来非常火热的容器监控系统,它使用go语言开发,设计思路来源于Google的Borgmom(一个监控容器平台的系统)。 产品由前谷歌SRE MattT.Proudd发起开发,并在其加入SoundCloud公司后,与另一位工程师JuliusVolz合伙推出,将其开源发布。 2016年,由Googl......
  • Prometheus监控实战系列二: 安装部署
    Prometheus支持多种操作系统,例如Linux、Windows和MaxOSX等。在产品官网上提供了独立的二进制文件进行下载,可下载对应的tar包并在相应系统的服务器上进行安装部署。 当然,做为与容器有着紧密联系的监控系统,Promethesu也可以很方便的通过docker、kubernetes等容器平台进行部署。......
  • Prometheus监控实战系列三:配置介绍
    Prometheus使用名为prometheus.yml的配置文件进行设置,通过在启动时指定相关的文件,对配置内容进行加载。该配置文件分为四个模块:global(全局配置)、alerting(告警配置)、rule_files(规则配置)、scrape_configs(目标拉取配置),本文将分别对其进行讲解介绍。一.global 用于定义promethe......
  • Prometheus监控实战系列四:数据格式
    在Prometheus监控中,对于采集到服务端的指标,称为metrics数据。metrics指标为时间序列数据,它们按相同的时序,以时间维度来存储连续数据的集合。metrics有自定义的一套数据格式,不管对于日常运维管理或者监控开发来说,了解并对其熟练掌握都是非常必要的,本文将对此进行详细介绍。 一.......
  • Python查询Prometheus API
     #!/bin/python#-*-coding:utf-8-*-importpandasaspdimportrequests,time,redefgetcolumn(status):iffloat(status)<80:return"正常"#eliffloat(status)<2:#return"异常"else:......
  • Prometheus on k8s 部署与实战操作进阶篇
    目录一、概述二、常见的几款监控工具1)kube-prometheus和kube-prometheus-stack区别2)PrometheusOperator和kube-prometheus或kube-prometheus-stack对比三、PrometheusOperator架构四、快速在k8s内搭建Prometheus全家桶1)k8s环境安装2)安装helm3)【第一种安装方法】直接......
  • Prometheus+AlertManager+webhookdingtalk实现钉钉报警
    前提在我上一篇博文中(Prometheus_彭阳的技术博客_51CTO博客)介绍了,prometheus监控原理,监控服务搭建,prometheus内部函数...,如果还未搭建起prometheus服务和node_exporter实现机器初步监控的可以对照文章搭建起来,在这一小节将着重介绍prometheusalertmanager通过webhookdingta......
  • 真香!基于 Prometheus 的持久化存储,全是知识点
    Prometheus将基于告警规则生成的告警存储为时间序列,不会将Alertmanager的告警信息持久化存储,那么针对历史告警的检索、统计等需求就无法实现。因此需要一种持久化机制用于存储历史告警信息,本文主要探究基于alertmanager告警的开源持久化方案。1.告警触发机制基于主机层面内存......
  • Prometheus--学习笔记
    Prometheus  https://prometheus.fuckcloudnative.io/1.指标类型:四种核心指标类型Counter计数器Inc,Add,rate,topkGauge仪表盘daltapredict_linerHistogram直方图histogram_quantilesummary摘要,与histogram类似,不同点在于:关于分位数 原文链接:https://blog.......
  • K8S系统监控:使用Metrics Server和Prometheus
    Kubernetes也提供了类似的linuxtop的命令,就是kubectltop,不过默认情况下这个命令不会生效,必须要安装一个插件MetricsServer才可以。MetricsServer是一个专门用来收集Kubernetes核心资源指标(metrics)的工具,它定时从所有节点的kubelet里采集信息,但是对集群的整体性能影响......