我了解通过Prometheus,我们可以设置警报规则,该规则可以在Pod崩溃时检测并发出警报。
我想了解Prometheus自己如何知道豆荚崩溃或处于挂起状态。
OR
之所以这样问,是因为我想设置Prometheus来监视已经部署的现有Pod。如果Pod持续崩溃或卡在挂起状态,我想得到警告。而且我想知道Prometheus是否可以在不对现有pod内的代码进行任何修改的情况下检测到这些警报。
答案 0 :(得分:1)
普罗米修斯提取指标和健康状况的常用方法是使用抓取工具(通过http端点是最常见的方法)。由于Pod可以有多个容器,因此最好抓取正在运行的容器的http端点。
如果prometheus没有从此端点收到良好的响应,则可以确定容器已关闭。
Prometheus本身不会发出警报,您通常将其委托给警报管理器。
答案 1 :(得分:1)
使用sum(kube_pod_container_status_waiting_reason) by (reason)
获取所有容器等待原因(如果有的话)
答案 2 :(得分:0)
kube-state-metrics
从kube-apiserver
收集有关kubernetes对象(例如pod,部署等)状态的信息。它包装在prometheus-operator
中。要回答您的问题,您不需要将Pod放在能够抓取其状态指标的状态,而是可以直接从apiserver收集(通过对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