我正在尝试弄清楚如何使用 prometheus-stack 将 pod 标签从 kubelet 指标获取到指标标签中。在我们的环境中,我们需要对 pod 名称进行哈希处理(由于长度限制),以便我们的应用程序名称、env 和单元名称保存在 pod 标签中。
我们使用 prometheus-stack(helm 安装)从 kubelet 收集指标(
/metrics
、/metrics/cadvisor
),由于指标标签中缺少 pod 标签,因此很难知道哪个指标属于哪个应用程序。
Prometheus-stack 使用
sd_kubernetes_config
和端点规则来收集 kubelet 指标,其中 __meta
标签无法用于 pod 标签。还有另一种方法可以在指标标签中获取该标签吗?
我还尝试使用
kubeStateMetrics
收集 pod_labels 指标,我可以在其中获取包含 pod 标签的指标,但我无法弄清楚如何以 cadvisor 中的指标显示其值和来自 kubeStateMetrics
的指标的方式显示这两个指标将用于显示其标签(在普罗米修斯图中)。
感谢您的任何建议。
据我所知,您确实可以使用基于 pod 标签的过滤指标。看原答案:
您可以使用
+
运算符来连接指标。在这里,group_left()
将包含额外的标签:来自正确度量label_source
的kube_pod_labels
。您要加入的指标被强制为零(即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 指标。
它工作得很好,但是使用记录规则来加入指标标签并将其转换为全新的指标是一个好主意吗?