Prometheus 如何知道 Pod 何时崩溃?

How does Prometheus know when a pod crashed?

我知道我们可以使用 Prometheus 设置警报规则,如果 pod 崩溃,它可以检测并发出警报。

我想了解 Prometheus 本身如何知道 pod 何时崩溃或卡在挂起状态。

我问这个问题的原因是因为我想设置 Prometheus 来监控我已经部署的现有 pods。如果 pod 不断崩溃或卡在挂起状态,我想收到警报。我想知道 Prometheus 是否可以在不对现有 pods.

中的代码进行任何修改的情况下检测到这些警报

普罗米修斯提取指标和健康状况的常用方法是使用抓取(最常见的是通过 http 端点)。由于 pods 可以有多个容器,因此最好抓取 运行 容器的 http 端点。

如果 prometheus 没有从这个端点收到良好的响应,它可以确定容器已关闭。

Prometheus 本身不做警报,您通常将其委托给警报管理器。

使用sum(kube_pod_container_status_waiting_reason) by (reason)获取所有容器等待原因

kube-state-metricskube-apiserver 收集有关 kubernetes 对象状态(例如 pods、部署等)的信息。它被打包在 prometheus-operator 中。要回答您的问题,您不需要 pod 启动就可以抓取其状态指标,您将直接从 apiserver 收集这些指标(通过 scaping kube-state-metrics 端点)。

通过 kube-state-metrics 检查您可以使用哪些 pod 级别指标:https://github.com/kubernetes/kube-state-metrics/blob/master/docs/pod-metrics.md

根据上面的答案,您可以使用 kube_pod_container_status_waiting_reason 指标,或者如果您只想在阈值上发出警报而不管原因,您可以使用 kube_pod_container_status_waiting