文章

Prometheus-常用函数

Prometheus常用内置函数

https://blog.51cto.com/u_10983441/5340278

sum和sum_over_time

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
sum
1. 是瞬时向量
2. 是 Prometheus 内置的聚合操作,多个时序的数据会合并为单个时序的数据。不同时序的数据会相加在一起

例子:
request_count{a=1}  1,1,1,1,1
request_count{a=2}  1,1,1,1,1

sum(request_count)
{} 2,2,2,2,2

sum(request_count) by (a)
{a=1}  1,1,1,1,1
{a=2}  1,1,1,1,1

====================================================
sum_over_time
1. 多个时序之间不会有合并的操作
2. 是单个时序中的一个区间内的度量值相加,sum_over_time 使用的是区间向量(range-vector)

例子:
request_count{a=1}  1,1,1,1,1
request_count{a=2}  1,1,1,1,1


sum_over_time(request_count[5s]) 
request_count{a=1}  5
request_count{a=2}  5

ceil() –四舍五入向上取整

floor()–四舍五入向下取整

1
2
3
ceil(v)​​ 将 v 中所有元素的样本值向上四舍五入到最接近的整数

floor()   将 v 中所有元素的样本值向下四舍五入到最接近的整数

min_over_time 和 predict_linear

1
2

排序

1
2
3
4
5
6
7
sort()      升序
sort_desc() 降序

用法
sort_desc(sum by(path) (rate(demo_api_request_duration_seconds_count{job="demo"}[5m])))


在计算容器内存时未设置limit

1
2
3
4
5
6
7
8
(
  sum(container_memory_working_set_bytes{container!="" , container!="POD"}) by (container, pod, node, namespace)
  /
  sum(container_spec_memory_limit_bytes{container!="" , container!="POD"}) by (container, pod, node, namespace)
)
> 0.85
and
sum(container_spec_memory_limit_bytes{container!="" , container!="POD"}) by (container, pod, node, namespace) > 0

计算k8s集群中容器的WSS内存使用率>85%

本文由作者按照 CC BY 4.0 进行授权