使用 prometheus 监控 pod 终止时间

Yar*_*dan 5 kubernetes prometheus

我正在寻找一个普罗米修斯指标,它可以让我监控吊舱在terminating消失之前在该状态中花费的时间。

我尝试过尝试,kube_pod_container_status_terminated但它似乎只在 pod 完成终止过程后才注册,但不能帮助我了解终止 pod 需要多长时间。
我也看过kube_pod_status_phase我不久前在这个频道中发现的内容,但它似乎也缺乏这种洞察力。

我目前正在使用 cAdvisor、kube-state-metrics 和 prometheus node-exporter 收集 k8s 工作负载的指标,但如果它们包含所需的数据,我很乐意考虑其他收集器。
非普罗米修斯的解决方案也很棒。
有任何想法吗?谢谢!

Edu*_*llo 2

根据pod-metrics文档:

对于某些情况(例如“正在终止”和“未知”)获取 Pod 状态并不简单,因为它没有存储在 Pod.Status 中的字段后面。

因此,为了模仿命令行使用的逻辑kubectl,您将需要组合多个指标。[...]

  • 对于处于终止状态的 Pod: count(kube_pod_deletion_timestamp) by (namespace, pod) * count(kube_pod_status_reason{reason="NodeLost"} == 0) by (namespace, pod)

以下是 Prometheus 规则的示例,该规则可用于对处于该Terminated状态超过 的Pod 发出警报5m

groups:
- name: Pod state
  rules:
  - alert: PodsBlockInTerminatingState
    expr: count(kube_pod_deletion_timestamp) by (namespace, pod) * count(kube_pod_status_reason{reason="NodeLost"} == 0) by (namespace, pod) > 0
    for: 5m
    labels:
      severity: page
    annotations:
      summary: Pod {{$labels.namespace}}/{{$labels.pod}} block in Terminating state.
Run Code Online (Sandbox Code Playgroud)