我想在 Grafana 中为我的 Kubernetes 集群创建警报。我已经在我的 k8s 集群中配置了 Prometheus、Node exporter、Kube-Metrics、Alert Manager。我想在不可调度或失败的 Pod 上设置警报。
- 无法调度或失败的 pod 的原因
- 一段时间后生成警报
- 创建另一个警报以在 pod 失败时通知我们。你能指导我如何实现这一目标吗?
我想在 Grafana 中为我的 Kubernetes 集群创建警报。我已经在我的 k8s 集群中配置了 Prometheus、Node exporter、Kube-Metrics、Alert Manager。我想在不可调度或失败的 Pod 上设置警报。
根据Suresh Vishnoi的评论:
这可能会有所帮助awesome-prometheus-alerts.grep.to/rules.html#kubernetes
是的,这可能会很有帮助。在此站点上,您可以找到失败 pod(不健康)的模板:
Pod 处于非就绪状态超过 15 分钟。
- alert: KubernetesPodNotHealthy
expr: min_over_time(sum by (namespace, pod) (kube_pod_status_phase{phase=~"Pending|Unknown|Failed"})[15m:1m]) > 0
for: 0m
labels:
severity: critical
annotations:
summary: Kubernetes Pod not healthy (instance {{ $labels.instance }})
description: "Pod has been in a non-ready state for longer than 15 minutes.\n V
或崩溃循环:
Pod {{ $labels.pod }} 正在崩溃循环
- alert: KubernetesPodCrashLooping
expr: increase(kube_pod_container_status_restarts_total[1m]) > 3
for: 2m
labels:
severity: warning
annotations:
summary: Kubernetes pod crash looping (instance {{ $labels.instance }})
description: "Pod {{ $labels.pod }} is crash looping\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
另请参阅有关使用 Prometheus 监控 kubernetes 集群的良好指南:
Kubernetes API 和 kube-state-metrics (本机使用 prometheus 指标) 通过公开 Kubernetes 内部数据(例如部署中所需/正在运行的副本的数量、不可调度的节点等)解决了部分问题。
Prometheus 非常适合微服务,因为您只需要 公开一个指标端口,不需要增加太多复杂性或运行额外的服务。通常,服务本身已经提供了一个 HTTP 接口,开发人员只需要添加一个额外的路径,例如
/metrics
.
如果涉及到不可调度的节点,您可以使用 metric kube_node_spec_unschedulable
。此处或此处描述:
kube_node_spec_unschedulable
- 节点是否可以调度新 pod。
另请参阅本指南。基本上,您需要找到要监控的指标并在 Prometheus 中适当地设置它。或者,您可以使用模板,正如我在答案开头所展示的那样。