Dar*_*hil 6 monitoring kubernetes prometheus
我在我的kubernetes集群中运行prometheus。我在 kubernetes 中有以下系统:
我有4个节点。我想计算空闲内存。我想要这四个节点的总和。然后我想找到超过 1 天的最大值。所以,例如,
在时间=t1 node1:500 MB node2:600 MB node3:200 MB node4:300 MB 总计= 1700 MB
在时间=t2 node1: 400 MB node2: 700 MB node3: 100 MB node4: 200 MB Total = 1300 MB
在时间=t3 node1: 600 MB node2: 800 MB node3: 1200 MB node4: 1300 MB 总计 = 3900 MB
在时间=t4 node1: 100 MB node2: 200 MB node3: 300 MB node4: 400 MB Total = 1000 MB
所以,我的查询的答案应该是 3900 MB。我无法为总和做 max_over_time。
我已经这样做了(根本不起作用):
max_over_time(sum(node_memory_MemFree)[2m])
Run Code Online (Sandbox Code Playgroud)
自2.7 版(2019 年 1 月)起,Prometheus 支持子查询:
max_over_time( sum(node_memory_MemFree_bytes{instance=~"foobar.*"})[1d:1h] )
Run Code Online (Sandbox Code Playgroud)
(过去 2 天的指标,分辨率为 1 小时。)
有关使用记录规则的更多信息,请阅读文档:https : //prometheus.io/docs/prometheus/latest/querying/examples/#subquery
但是,请注意博客建议:
结语
尽管子查询代替记录规则使用起来非常方便,但不必要地使用它们会影响性能。重子查询最终应转换为记录规则以提高效率。
也不建议在记录规则中包含子查询。如果您确实需要在记录规则中使用子查询,不如创建更多记录规则。
brian brazil 文章中解释了记录规则的使用:https : //www.robustperception.io/composing-range-vector-functions-in-promql/
这在一个表达式中是不可能的,您需要对中间表达式使用记录规则。请参阅 https://www.robustperception.io/composition-range-vector-functions-in-promql/
| 归档时间: |
|
| 查看次数: |
16442 次 |
| 最近记录: |