2

我想在 Grafana 中为我的 Kubernetes 集群创建警报。我已经在我的 k8s 集群中配置了 Prometheus、Node exporter、Kube-Metrics、Alert Manager。我想在不可调度或失败的 Pod 上设置警报。

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

1 回答 1

1

根据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 中适当地设置它。或者,您可以使用模板,正如我在答案开头所展示的那样。

于 2021-11-18T10:27:54.773 回答