如何仅在普罗米修斯白天获得随时间推移的平均值

How to get the average over time only during the day in Prometheus

我目前正在尝试通过以下查询获取上个月 RAM 的平均使用百分比:

100 - ((avg_over_time(node_memory_MemAvailable_bytes{instance="...",job="..."}[4w]) * 100) / node_memory_MemTotal_bytes{instance="...",job="..."})

查询工作正常,但现在我想过滤掉夜间收集的值,以便在白天有一个真实的使用百分比:是否有可能获得这些值的平均值仅在上午 8 点到晚上 8 点之间收集?

提前致谢!

马蒂亚斯

因为你不能有一个空洞的范围(即过去 4 周,但只有早上 8 点到晚上 8 点),你需要创建一个记录规则,只记录白天的可用内存,然后计算一个avg_over_time 在上述规则产生的时间序列上。

规则设置相对容易

node_memory_MemAvailable_bytes
  and 
hour(timestamp(node_memory_MemAvailable_bytes)) >= 8
  and 
hour(timestamp(node_memory_MemAvailable_bytes)) < 20

但它最初不会有任何历史记录,因此您必须等待几天才能从中获得任何有意义的数据。另请注意,此表达式将过滤 UTC 上午 8 点到晚上 8 点之间的样本。您可能需要根据您的时区进行调整。