PromQL min_over_time + predict_linear / 峰值监控

PromQL min_over_time + predict_linear / peaks monitoring

上下文

受监控磁盘上的应用程序 运行 间歇性地将其所需的 space 数量加倍,导致磁盘利用率峰值仅持续几秒/分钟。

如果存储 space 不足以应对这些峰值,应用程序存储就会损坏。

我找到的监控示例仅考虑了通常使用的存储量,并将峰值视为暂时的故障。

我试过的 (min_over_time + predict_linear : KO :-( )

我尝试将 min_over_time(...[12h])predict_linear 一起使用,但由于类型错误无法正常工作:

我目前有以下 PromQL: predict_linear(node_filesystem_avail_bytes{job="nodeexporter",fstype!=""}[6h]

但我真正想要监控的是 min_over_time(node_filesystem_avail_bytes{job="nodeexporter",fstype!=""}[12h]) 而不是 node_filesystem_avail_bytes{job="nodeexporter",fstype!=""} ,以说明零星的磁盘利用率峰值。 我认为这是有道理的,但不幸的是,以下不是可接受的 PromQL 查询:

predict_linear(min_over_time(node_filesystem_avail_bytes{job="nodeexporter",fstype!=""}[12h])[6h], 4*60*60)

错误:

Error executing query: invalid parameter "query": 1:94: parse error: ranges only allowed for vector selectors

问题

提前感谢您提供任何线索或建议!

只需在第二个方括号中的 6h 后面加上 :5m 即可。这会启用 subquery mode,指示 Prometheus 在给定的时间范围内每 5 分钟执行一次内部查询(例如 min_over_time(...),然后执行外部查询(例如 predict_linear(...) 在内部查询返回的结果。