如何获取在 prometheus 中运行的 pod 数量

Posted

技术标签:

【中文标题】如何获取在 prometheus 中运行的 pod 数量【英文标题】:How to get number of pods running in prometheus 【发布时间】:2019-05-04 20:41:33 【问题描述】:

我正在从 prometheus 中抓取 kubernetes 指标,并且需要提取正在运行的 pod 的数量。

我可以看到 container_last_seen 指标,但我应该如何让 Pod 不运行。有人可以帮忙吗?

【问题讨论】:

对不起,我不明白你的意思。 “How to get no of pods running in prometheus”这句话中的“no”是什么意思? 我假设您需要抓取每个命名空间中的 pod 数量,然后将所有这些数字加在一起? 是的,我需要导出正在运行的 pod 数量。 【参考方案1】:

如果您需要获取正在运行的 pod 的数量,您可以使用来自 pod 指标列表 https://github.com/kubernetes/kube-state-metrics/blob/master/docs/pod-metrics.md 的指标(要获得纯粹关于 pod 的信息,使用特定于 pod 的指标是有意义的) . 例如,如果您需要获取每个命名空间的 pod 数量,它将是: count(kube_pod_infonamespace="$namespace_name") by (namespace) 要获取集群上运行的所有 pod 的数量,只需执行以下操作: count(kube_pod_info)

【讨论】:

【参考方案2】:

假设你想根据你的问题标签在 Grafana 中显示它,例如来自这个 Kubernetes App Metrics 仪表板:

count(count(container_memory_usage_bytescontainer_name="$container", namespace="$namespace") by (pod_name))

您可以只导入仪表板并使用查询。

根据您的配置/部署,您可以调整变量container_namenamespace,将by (pod_name)count 分组就可以了。可以使用除 pod_name 之外的其他标签,只要它在您要计数的 pod 之间共享即可。

【讨论】:

谢谢,我看到了这个,但对 github.com/prometheus/prometheus/blob/master/documentation/… 有点困惑。我的 kubernetes 和 prometheus 在不同的服务器上。

以上是关于如何获取在 prometheus 中运行的 pod 数量的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus 查询以获取 kubernetes pod 中的 CPU 和内存使用情况

如何基于 Prometheus alert 运行 pod

Prometheus 如何知道 Pod 何时崩溃?

Prometheus 查询 Kubernetes pod 正常运行时间

当 Pod 处于 Pending 超过 2 分钟时,Prometheus 会发出警报

根据 pod 标签动态更新 prometheus scrape 配置