K8s 中针对 Pod 失败的警报

say*_*sar 8 grafana kubernetes prometheus grafana-alerts

我想在 Grafana 中为我的 Kubernetes 集群创建警报。我已经在 k8s 集群中配置了 Prometheus、节点导出器、Kube-Metrics、警报管理器。我想在无法调度或失败的 Pod 上设置警报。

  1. Pod 无法调度或失败的原因
  2. 一段时间后生成警报
  3. 创建另一个警报以在 Pod 发生故障时通知我们。你能指导我如何实现这一目标吗?

Mik*_*iak 10

根据Suresh Vishnoi的评论:

\n
\n

这可能会有所帮助Awesome-prometheus-alerts.grep.to/rules.html#kubernetes

\n
\n

是的,这可能非常有帮助。在此站点上,您可以找到失败的 Pod(不健康)的模板:

\n
\n

Pod 处于非就绪状态的时间超过 15 分钟。

\n
\n
  - alert: KubernetesPodNotHealthy\n    expr: min_over_time(sum by (namespace, pod) (kube_pod_status_phase{phase=~"Pending|Unknown|Failed"})[15m:1m]) > 0\n    for: 0m\n    labels:\n      severity: critical\n    annotations:\n      summary: Kubernetes Pod not healthy (instance {{ $labels.instance }})\n      description: "Pod has been in a non-ready state for longer than 15 minutes.\\n  V\n
Run Code Online (Sandbox Code Playgroud)\n

或用于崩溃循环

\n
\n

Pod {{ $labels.pod }} 正在崩溃循环

\n
\n
  - alert: KubernetesPodCrashLooping\n    expr: increase(kube_pod_container_status_restarts_total[1m]) > 3\n    for: 2m\n    labels:\n      severity: warning\n    annotations:\n      summary: Kubernetes pod crash looping (instance {{ $labels.instance }})\n      description: "Pod {{ $labels.pod }} is crash looping\\n  VALUE = {{ $value }}\\n  LABELS = {{ $labels }}"\n
Run Code Online (Sandbox Code Playgroud)\n

另请参阅有关使用 Prometheus 监控 kubernetes 集群的良好指南

\n
\n

Kubernetes API 和 kube-state-metrics (本身使用 prometheus 指标) 通过暴露 Kubernetes 内部数据(例如部署中所需/正在运行的副本数量、不可调度节点等)解决了部分问题。

\n

Prometheus 非常适合微服务,因为您只需要 公开一个指标端口,并且不需要添加太多复杂性或运行额外的服务。通常,服务本身已经提供了 HTTP 接口,开发人员只需要添加一个额外的路径,例如 /metrics.

\n
\n

如果涉及到不可调度的节点,可以使用metric kube_node_spec_unschedulable此处此处进行了描述:\n kube_node_spec_unschedulable- 节点是否可以调度新的 pod。

\n

另请参阅本指南。\n基本上,您需要找到要监控的指标并在 Prometheus 中进行适当的设置。或者,您可以使用模板,正如我在答案开头所示的那样。

\n