Prometheus常用查询函数梳理
Prometheus 提供了其它大量的查询函数,可以对时序数据进行丰富的处理。对应的官方地址:https://prometheus.io/docs/prometheus/latest/querying/functions/。以下内容是我列举的常用函数及示例:
abs()
绝对值。
absent
如果传参的查询无结果,则输出为1;否则输出为No data。当监控度量指标时,如果获取到的样本数据是空的, 使用 absent 方法对告警是非常有用的。
四舍五入
ceil()
将返回结果向上取整。
2.79 -> 3
floor()
与 ceil() 相反,将返回结果向下取整。
2.79 -> 2
round()
四舍五入。默认取整,第二个参数当为1时,则取整;当为0.001时,则四舍五入保留3位小数。
如果处理的值不满足保留的小数位的话,不会补0。
如果保留的小数过多,比如0.00001,有时会返回:0.06856000000000001。如果保留的小数过多,建议还是程序处理。
label标签处理
label_join()
label_replace()
数值上下限
使用 clamp_min() 和 clamp_max() 相当于给数据设置了上下限。
clamp_min()
输入一个瞬时向量和最小值,样本数据值若小于 min,则改为 min,否则不变。
这个可以用于:Pod CPU使用
clamp_max()
输入一个瞬时向量和最大值,样本数据值若大于 max,则改为 max,否则不变。
排序
sort()
正序排序
sort_desc()
倒序排序
topk(n, xxx)
排序并取前n条数据。
bottomk(n, xxx)
排序并取后n条数据。
增长
increase、rate、irate 都适用于counter数据类型的函数,反应了某时间区间的增长或平均值。
increase()
获取区间向量中的第一个和最后一个样本并返回其增长量。
1 - avg(increase(node_cpu_seconds_total{mode="idle",job="node-exporter",Hostname="master-1"}[3m]))by(InternalIP,Hostname)/180
rate()
平均增长率,取指定时间范围内所有数据点,算出一组速率,然后取平均值作为结果。
1-avg(rate(node_cpu_seconds_total{mode="idle",job="node-exporter",Hostname="master-1"}[3m]))by(InternalIP,Hostname)
irate()
即时增长率,某段时间内最后两个数据点,除以两数据点的时间戳差值。
1-avg(irate(node_cpu_seconds_total{mode="idle",job="node-exporter",Hostname="master-1"}[3m]))by(InternalIP,Hostname)
点关注,不迷路
好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。
白嫖不好,创作不易。各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
如果本篇博客有任何错误,请批评指教,不胜感激 !
原文作者: create17
原文链接: https://841809077.github.io/2022/10/11/Prometheus/prometheus-query-functions.html
版权声明: 转载请注明出处(码字不易,请保留作者署名及链接,谢谢配合!)