【问题标题】:How does Prometheus know when a pod crashed?Prometheus 如何知道 Pod 何时崩溃?
【发布时间】:2018-12-26 20:36:16
【问题描述】:

据我了解,我们可以通过 Prometheus 设置警报规则,以便在 pod 崩溃时检测并发出警报。

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

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

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

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

【问题讨论】:

    标签: kubernetes prometheus kubernetes-pod prometheus-alertmanager


    【解决方案1】:

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

    如果prometheus没有从这个endpoint收到好的响应,就可以判断容器down了。

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

    【讨论】:

    • 等等。如果 Pod 没有带有 HTTP 端点的容器,Prometheus 无法确定 Pod 状态?由于 Kubernetes 已经公开了 pod 状态,因此看起来相当倒退。我理解需要 http 端点来收集指标,但是对于 pod 状态,这有点奇怪。
    • 哦,抱歉,对于 pod 状态,您可以使用 kube-state-metrics,prometheus 也可以抓取。 github.com/kubernetes/kube-state-metrics/blob/master/README.md。我认为 kube-state-metrics 是 heapster 的替代品。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      要通过 kube-state-metrics check 检查哪些 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-10
        • 2012-01-11
        • 2016-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多