带有 pod 标签的 Prometheus kubelet 指标

Jiř*_*ták 5 metrics kubernetes prometheus kubelet kube-prometheus-stack

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

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

Prometheus-stack 使用sd_kubernetes_config端点规则来收集 kubelet 指标,其中__meta不能使用 pod 标签的标签。还有另一种方法可以在度量标签中获取该标签吗?

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

感谢您的任何建议。

Mik*_*iak 3

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

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

(
kube_pod_info{namespace="test"}
)
   + on(namespace) group_left(label_source)
(
   0 * kube_pod_labels
)
Run Code Online (Sandbox Code Playgroud)

事实上,指标可能又长又烦人。然而,在 prometheus 中创建您所期望的内容是一种有效的方法,即带有 pod 标签的 kubelet 指标。

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

  • 是的,这是我发现的唯一解决方案。没有选项如何在 kubelet 指标标签中添加 pod 标签。 (2认同)