如何为仅因OOM导致的Kubernetes容器重启创建Datadog监控
你当前使用的kubernetes.containers.restarts指标默认不携带容器重启原因的维度标签,无法直接基于现有查询过滤OOM触发的重启事件,需要先调整采集配置,再修改监控查询逻辑,具体方案如下:
前置配置调整
首先确保你的监控采集组件(以你当前使用的Datadog Agent为例)已经开启了容器终止状态的采集:
- 最新版Datadog Agent的Kubernetes集成默认已开启该能力,旧版本可在Kubernetes集成配置中开启
collect_container_termination_reasons配置项,采集后会生成带reason标签的kubernetes.container.terminated指标,OOM触发的容器终止事件对应的reason标签值为OOMKilled。
监控查询修改
参考你原有的监控逻辑,仅统计production命名空间下StatefulSet关联容器的OOM重启事件,查询语句调整为:
max(last_10m):monotonic_diff(default_zero(sum:kubernetes.container.terminated{kube_namespace:production,reason:OOMKilled} by {kube_stateful_set})) > 0
可选补充方案
如果你部署了kube-state-metrics组件,也可以通过采集到的kubernetes_state.pod.container.status.terminated_reason指标实现相同逻辑,同样添加reason:OOMKilled的标签过滤即可。如果追求更高的告警实时性,也可以配置事件类监控,直接匹配K8s集群中reason=OOMKilled的事件触发告警。
内容的提问来源于stack exchange,提问作者Matthew Crenshaw
相关产品推荐
相关产品推荐

