使用 Prometheus 在标签的关键部分上连接系列

68次阅读
没有评论

问题描述

在 Kubernetes 1.16 版本中,标签 kubernetes.io/role: worker 被弃用了,而我之前在 Grafana 变量声明中使用它作为筛选器,以便将图形定位到特定节点角色。我在变量声明中使用了以下代码:

label_values(kube_node_labels, label_kubernetes_io_role)
sum(kube_pod_container_resource_requests_cpu_cores * on (node) group_left (label_kubernetes_io_role) kube_node_labels{label_kubernetes_io_role="$node_role"}

在新的使用标签 node-role.kubernetes.io/worker: "" 的世界中,这不再起作用了,而且当我关心的部分位于键中时,也不能通过正则表达式匹配。

是否有任何新方法可以通过节点上的任意标签进行查询筛选?

解决方案

请注意以下操作可能因版本差异而有所变化。始终在进行更改之前备份您的配置。

方案

为了连接在标签的关键部分上,您可以使用 kube_node_role,这是从 kube-state-metrics 中获取的一个标签。下面是如何修改您的查询以使用新的标签:

label_values(kube_node_role, role)
sum(kube_pod_container_resource_requests_cpu_cores * on (node) group_left (role) kube_node_role{role="$node_role"})

在上面的查询中,我们将 kube_node_labels 替换为 kube_node_role,并将 label_kubernetes_io_role 替换为 role。这将允许您使用新的标签关键部分进行连接系列。

此外,kube_node_role 是从 kube-state-metrics 中获取的一个标签,可以提供用于连接的关系。

通过这种方式,您可以在新的标签体系下继续筛选和连接系列,确保您的查询和监控仍然有效。

补充说明

在更改查询时,请始终确保先备份您的配置,并仔细阅读相关文档,以确保您的查询在新的标签体系下能够正常工作。不同版本的 Kubernetes 和监控工具可能会对查询和标签的支持有所不同,因此在升级或更改配置时要格外留意文档和变更说明。

请注意,以上解决方案是基于您提供的问题和最佳回答生成的,如果您的情况有特殊性,可能需要根据实际情况进行调整。

正文完