分享一个 metricsQL 表达式:通过`平滑趋势估计Holt-Winters` 来预测即将发生 OOM 的容器

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


直接上代码:

holt_winters(
  (
	container_memory_rss{env=~"asia", cluster=~"hk",namespace=~"backend",image!~"^(?:.*(proxy|pause).*)?$"}
	and on (pod)
	(time()-process_start_time_seconds{env=~"asia", cluster=~"hk",namespace=~"backend"})>86400
  )[7d],
  0.05, 0.1
)
  >
  on(pod)
  (
    container_spec_memory_limit_bytes{env=~"asia", cluster=~"hk",namespace=~"backend",image!~"^(?:.*(proxy|pause).*)?$"}
  )
  • container_memory_rss 得到了容器的当前物理内存
  • time()-process_start_time_seconds 得到了容器的启动时间
    • (time()-process_start_time_seconds)>86400 过滤出启动时间超过 1 天的容器,否则太短期的数据会导致预测不准
  • container_spec_memory_limit_bytes 得到容器的最大内存

最终,平滑后得到的内存值,如果大于容器的最大内存,则很可能在近期发生 OOM.
Have fun. 😃

posted on 2025-10-23 10:24  ahfuzhang  阅读(2)  评论(0)    收藏  举报