2

我试图弄清楚如何使用 prometheus-stack 将 pod 标签从 kubelet 指标中获取到指标标签中。在我们的环境中,我们需要对 pod 名称进行哈希处理(由于长度限制),因此我们的应用程序名称、环境和单元名称都保存在 pod 标签中。

我们正在使用 prometheus-stack(helm 安装)从 kubelet ( /metrics, /metrics/cadvisor) 收集指标,由于指标标签中缺少 pod 标签,很难知道哪个指标属于哪个应用程序。

Prometheus-stack 使用sd_kubernetes_configwith endpoint 规则来收集 kubelet 指标,其中__meta不能使用 pod 标签的标签。还有另一种方法如何在度量标签中获取该标签?

我还尝试使用 收集 pod_labels 指标kubeStateMetrics,我可以在其中获取包含 pod 标签的指标,但我无法弄清楚如何以 cadvisor 的指标将显示其值和指标kubeStateMetrics用于显示其标签的方式显示这两个指标(在普罗米修斯图中)。

感谢您的任何建议。

4

1 回答 1

0

据我所知,您真的可以使用基于 pod 标签的过滤指标。看原答案:

您可以使用 + 运算符来加入指标。在这里, group_left() 将包括额外的标签: label_source from the right metric kube_pod_labels。您加入的指标被强制为零( ie 0 * kube_pod_labels ),这样它就不会影响第一个指标的结果。

(
kube_pod_info{namespace="test"}
)
   + on(namespace) group_left(label_source)
(
   0 * kube_pod_labels
)

事实上,度量标准可能会很长而且很糟糕。但是,在 prometheus 中创建您期望的内容是一种有效的方法,即带有 pod 标签的 kubelet 指标。

另请参阅本指南- 它描述了如何使用 PromQL 按标签连接 Prometheus 指标,以及另一个指南- 如何使用 PromQL 连接更有效地大规模查询 Prometheus 指标。

于 2021-12-02T08:39:05.900 回答