You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Prometheus获取Spark Executor Pod OOMKilled指标并告警

捕获Spark Executor Pod OOMKilled事件的Prometheus指标方案

以下是可行的指标查询方案及问题排查建议:

一、精准捕获OOM终止事件的指标

1. 修正kube_pod_container_status_terminated_reason的使用

该指标本身可捕获容器终止原因,但需确保标签匹配精准(如命名空间、Spark组件标识),避免因标签缺失导致无结果。
示例查询:

kube_pod_container_status_terminated_reason{reason="OOMKilled", namespace="your-namespace", app.kubernetes.io/component="executor"}

注意:该指标保留的是已终止容器的状态,若Pod已重建,可结合kube_pod_container_status_terminated_finished_at判断事件发生的时间范围。

2. 监控等待重启的OOM状态

如果Pod因OOM终止后处于重启等待阶段,可通过以下指标捕获:

kube_pod_container_status_waiting_reason{reason="OOMKilled", app.kubernetes.io/component="executor"}

二、提前预判OOM的指标

除了事后捕获事件,还可通过内存使用率监控提前预警,避免OOM发生:

(spark_executor_memory_used_bytes / spark_executor_memory_max_bytes) > 0.9

可设置条件为"持续5分钟以上"触发告警,提前干预。

三、间接关联OOM的指标

结合Pod重启次数突增,配合日志验证,可实现间接告警:

increase(kube_pod_container_restarts_total{app.kubernetes.io/component="executor"}[10m]) > 0

四、排查原有指标失效的原因

  • 检查kube-state-metrics版本:旧版本(v1.x)可能未正确暴露kube_pod_container_status_terminated_reason,建议升级至v2.0+版本。
  • 验证Prometheus标签抓取:确认Spark Executor Pod的标识标签(如app.kubernetes.io/component=executor)被Prometheus正确抓取,避免查询时标签不匹配。
  • container_memory_failures_total不适用:该指标针对硬件内存错误,与用户态内存耗尽导致的OOMKilled无关。

额外补充

既然Humio能正常记录OOMKilled日志,可直接在Humio中配置日志告警,与Prometheus指标告警形成互补,提升告警覆盖率。

内容的提问来源于stack exchange,提问作者user9920500

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:10:14