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
问题
您将如何监控磁盘利用率以将这些峰值考虑在内?
你会如何同时使用 min_over_time + predict_linear?
提前感谢您提供任何线索或建议!
只需在第二个方括号中的 6h
后面加上 :5m
即可。这会启用 subquery mode,指示 Prometheus 在给定的时间范围内每 5 分钟执行一次内部查询(例如 min_over_time(...)
,然后执行外部查询(例如 predict_linear(...)
在内部查询返回的结果。
上下文
受监控磁盘上的应用程序 运行 间歇性地将其所需的 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
问题
您将如何监控磁盘利用率以将这些峰值考虑在内?
你会如何同时使用 min_over_time + predict_linear?
提前感谢您提供任何线索或建议!
只需在第二个方括号中的 6h
后面加上 :5m
即可。这会启用 subquery mode,指示 Prometheus 在给定的时间范围内每 5 分钟执行一次内部查询(例如 min_over_time(...)
,然后执行外部查询(例如 predict_linear(...)
在内部查询返回的结果。