java如何使用promql_Prometheus 常用 PromQL 语句
PromQL 是 Prometheus 提供的一个函数式的表达式语言,可以使用户实时地查找和聚合时间序列数据。表达式计算结果可以在图表中展示,也可以在 Prometheus表达式浏览器中以表格形式展示,或者作为数据源,以 HTTP API 的方式提供给外部系统使用。PromQL 虽然以 QL 结尾,但是它不是类似 SQL 的语言,因为在时间序列上执行计算类型时,SQL 语言相对缺乏表达能力。而 PromQL 语言表达能力非常丰富,可以使用标签进行任意聚合,还可以使用标签将不同的标签连接到一起进行算术运算操作。内置了时间和数学等很多函数可以使用
选择序列
选择指定指标名称的序列最新样本:
my_metric_name
选择指定指标名称序列5分钟的样本范围:
my_metric_name[5m]
筛选给定标签的序列:
my_metric_name{label1="value1", label2="value2"}
更复杂的标签匹配器:
my_metric_name{label1!="value1", label2=~"regex1", label3!~"regex2"}
匹配器:
=: 等于
!=: 不等于
=~: 正则匹配
!~: 正则不匹配
Counter 的增长速率
过去5分钟每秒平均增长速率:
rate(http_requests_total[5m])
1分钟时间窗口中最后两个样本计算的每秒增长速率:
irate(http_requests_total[1m]
过去1小时增加的绝对数值:
increase(http_requests_total[1h])
多个序列聚合
对所有序列进行求和:
sum(my_metric_name)
根据方法和路径标签维度进行求和:
sum by(method, path) (my_metric_name)
without 用于从计算结果中移除列举的标签,而保留其它标签,by 则正好相反,结果向量中只保留列出的标签,其余标签则移除:
sum without(method, path) (my_metric_name)
其他常用的聚合运算符:sum(), min(), max(), avg(), stddev(), stdvar(), count(), count_values(),bottomk(), topk(), quantile()。
序列间的数学计算
将两个相同标签的序列相加:
left_metric + right_metric
只将匹配 instance 和 job 标签的序列相加:
left_metric + on(instance, job) right_metric
忽略匹配 instance 和 job 标签的序列相加:
left_metric + ignoring(instance, job) right_metric
多对一匹配模式:
left_metric + on(instance, job) group_left right_metric
在结果中包括一侧(右侧)的 version 标签:
left_metric + on(instance, job) group_left(version) right_metric
集合操作
包括任何左侧或右侧的标签集合:
left_metric or right_metric
包括任何同时存在于左侧或右侧的标签集:
left_metric and right_metric
包含任何左侧的标签集合,但不包括右侧的:
left_metric unless right_metric
只在某些标签上匹配:
left_metric and on(job, instance) right_metric
过滤
只保留大于1024样本值的序列:
left_metric > 1024
只保留左边样本值大于右边样本值的序列:
left_metric > right_metric
不过滤序列,而是比较序列,然后返回0或1:
left_metric > bool right_metric
在某些匹配的标签上操作:
left_metric > on(job, instance) right_metric
其他常用的比较运算符:==、!=、>、=、≤。
直方图分位数
过去5分钟内,每个标签维度请求延迟的90%分位数:
histogram_quantile(0.9, rate(my_request_durations_seconds_bucket[5m]))
只针对 method 和 path 维度的90%分位数:
histogram_quantile(
0.9,
sum by(le, path, method) (
rate(my_request_durations_seconds_bucket[5m])
)
)
Gauges 的变化
过去一小时内的绝对值变化:
delta(my_gauge[1h])
基于过去4小时的数据来预测1小时后的数据:
predict_linear(my_gauge[4h], 3600)
时间
获取 Unix 时间,以秒为单位:
time()
获取最后一次成功运行的批处理作业的年龄:
time() - my_batch_job_last_success_timestamp_seconds
查找一小时内没有成功的批处理作业:
time() - my_batch_job_last_success_timestamp_seconds > 3600
缺失数据处理
当输入向量为空时,创建一个一个输出序列:
absent(my_metric_name)
当输入的范围向量5分钟内都是空的时候,创建一个空的输出序列:
absent_over_time(my_metric_name[5m])
标签操作
用 - 分隔符连接两个标签的值:
label_join(my_metric_name, "-", "label1", "label2")
提取标签的一部分并将其存储在新标签中:
label_replace(my_metric, "dest-label", "$1", "source-label", "(.*):.*")
关于 PromQL 更多的使用方法,可以参考 PromQL 官方文档:
来源:51CTO
作者:BonnieJason
链接:https://blog.51cto.com/lovejxs/2514212
java如何使用promql_Prometheus 常用 PromQL 语句相关推荐
- java xpath 函数,XPath常用定位节点元素语句总结 - 中国龍 - 博客园
将一个XML或HTML文档转换成了DOM树结构后,如何才能定位到特定的节点?XPath实现了这样的功能,它通过DOM树中节点的路径和属性来导航,通过XPath路径表达式可以选择DOM树中的nodes( ...
- Java语言中的常用包、访问控制
Java常用的语言包 Java的核心类都放在Java包以及其子包下,Java扩展的许多类都放在Javax包以及其子包下.这些实用类也就是前面所说的API(应用程序接口),Oracle按这些类的功能分别 ...
- mysqlin查询的java写法_[转载]常用的shell脚本
1.脚本之间传递参数 "1.sh"的脚本,接受参数.如下,如果有一个参数则赋值个sourceFile这个变量,否则用默认值. Shell代码 #!/bin/bash LANG=en ...
- 结构化查询语句简称mysql_整理MySql常用查询语句
MySql的性能优化 性能优化是通过某些有效的方法提高MySQL数据库的性能.性能优化的目的是为了是MySQL数据运行速度更快.占用的磁盘空间更小.性能优化包括很多方面,例如优化查询速度.优化更新速度 ...
- 全国大学生软件测试大赛Web应用大赛常用测试语句
全国大学生软件测试大赛Web应用大赛常用测试语句 1:窗口最大化 driver.manage().window().maximize(); 2:句柄 //获取界面title //driver.getT ...
- Java 程序员开发常用的工具(全)
Java 程序员开发常用的工具 作为一名Java程序开发人员,可以的选择集成开发环境IDE(Integrated Development Environment)非常多,得益于Java是一门开源语言. ...
- oracle常用SQL语句(汇总版)
原文地址:https://www.cnblogs.com/xrhou12326/p/4094737.html Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语 ...
- 16从零开始学Java之Java里的输入与输出语句有哪些?
作者:孙玉昌,昵称[一一哥],另外[壹壹哥]也是我哦 CSDN博客专家.万粉博主.阿里云专家博主.掘金优质作者 配套项目资料 https://github.com/SunLtd/LearnJava h ...
- 南大通用GBase8s 常用SQL语句(八十)
南大通用GBase8s 常用SQL语句(八十) FRAGMENT BY 子句 使用 FRAGMENT BY 子句创建分片表并指定它的存储分布方案.PARTITION BY 关键字是 FRAGMENT ...
最新文章
- 2022-2028年中国香薰行业市场研究及前瞻分析报告
- YOLO V4 Tiny改进版来啦!速度294FPS精度不减YOLO V4 Tiny
- boost::allocator_max_size的实例
- 使用nginx实现一个主机部署多域名指向不同docker项目
- 14 操作系统第四章 文件管理 文件逻辑结构 文件目录结构
- hdu1598(并查集)
- PyTorch 深度学习:32分钟快速入门——DenseNet
- python直接取系统的时间_用Python在Linux中获得系统正常运行时间的最快方法
- 现代通信原理7.1:模拟角度调制的基本概念
- ShaderForge安装教程
- omni的 osx86 ati 驱动
- shapley值法初学入门详细介绍
- Bridging signals
- 利用Oracle RDA( Remote Diagnostic Agent)快速收集Oracle产品分析数据
- 数学建模复习——代码记录
- 关于socket中的send函数
- Python - 各类赋值语句
- 企业的考勤管理系统应该具备哪些功能!
- 计算机二级Python学习笔记(三):天天向上的力量
- STG游戏中瞄具的基本原理
热门文章
- 【MySQL】sql语句中exists和in有何区别?
- [Elasticsearch] es 6.8 编译报错 Unsupported class file major version 57
- 【Redis】redis JedisDataException: ERR Client sent AUTH, but no password is set
- Spark Structured SQL:row_number Non-time-based windows are not supported on streaming DataFrames
- 【Siddhi 5】Siddhi 5 源码编译
- flink 1.8编译:flink-fs-hadoop-shaded找不到
- jps出现– process information unavailable解决方法
- 768页,最牛笔记曝光!
- 判断字符串中是否含有并一个字符或字符串
- Oracle中on和where的区别