分享一个 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. 😃

浙公网安备 33010602011771号