3

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

我想了解 Prometheus 本身是如何知道 Pod 何时崩溃或陷入待处理状态的。

  • 当它试图从 pod 的 http 端点端口抓取指标时,它是否知道这一点?

或者

  • Prometheus 是否从 Kubernetes 获取 pod 状态信息?

我问这个的原因是因为我想设置 Prometheus 来监控我已经部署的现有 Pod。如果 pod 不断崩溃或卡在挂起状态,我想收到警报。而且我想知道 Prometheus 是否可以检测到这些警报,而无需对现有 pod 内的代码进行任何修改。

4

3 回答 3

2

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

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

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

于 2018-07-18T23:38:39.240 回答
2

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

于 2019-10-01T11:20:19.067 回答
1

kube-state-metricskube-apiserver从Kubernetes 对象(例如 pod、部署等)的状态中收集信息。它被包装在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

于 2019-10-01T21:38:20.847 回答