我有一个查询,用于获取 Prometheus 中已使用的内存,范围是 0.0-1.0%。我可以直接对此发出警报,但不希望在短时间内发出警报,而希望在一段时间内发出高水平警报或一段时间内的平均水平超过限制。
我希望在查询中做到这一点,但如果 AlertManger 可以做到这一点,那是可以接受的,我只是找不到如何做到。
查询
(node_memory_MemTotal - node_memory_MemFree - node_memory_Buffers - node_memory_Cached) / node_memory_MemTotal
问题
我怎样才能取平均值我该查询结果需要几分钟?
答案1
我似乎找到了一种方法来做到这一点,但我不确定它是否是最好的。
(((node_memory_MemTotal offset 5m - node_memory_MemFree offset 5m - node_memory_Buffers offset 5m - node_memory_Cached offset 5m) / node_memory_MemTotal offset 5m) + ((node_memory_MemTotal - node_memory_MemFree - node_memory_Buffers - node_memory_Cached) / node_memory_MemTotal)) / 2
这使用偏移修饰符在 5 分钟前和查询时进行相同的测量,然后将它们相加然后除以得到平均值。