如何解决Grafana 中主机的 pod 面板
我想在 Grafana 中有一个面板,显示主机中当前正在运行的 Pod。
对于主机变量,我有以下查询(作业变量只是 label_values(node_uname_info,job)
。):
label_values(node_uname_info{job="$job"},instance)
这给了我一个套接字数组:host_ip:port
我可以从 kube_pod_info{job="$job",host_ip="$host_ip"}
获取 pod 名称,但是为了获取 IP,我需要删除套接字的端口部分:
label_replace(node_uname_info{job="$job",instance="$node"},"host_ip","$1","instance","(.*):.*")
我还没有找到如何在 pod 查询中使用新的 host_ip
标签来最终获取 kube_pod_info
的所有 pod 标签值。我不想将 label_replace
放在 Prometheus 中以避免数据重复 - 有没有办法在 pod 查询中使用新的 host_ip
标签?
编辑:
我添加了 host_ip
变量和正则表达式,如 shan1024 在他的回答中所示,并将面板的查询更改为:
sum by (pod) (kube_pod_info{job="$job",host_ip="$host_ip"})
然后我将面板的可视化更改为表格并将列样式添加到 Time
和 Value
(选择类型 Hidden)。这允许我以类似列表的方式显示主机正在运行的 Pod。
解决方法
这实际上在 Grafana 中很容易做到,无需在 Prometheus 中更改标签。您只需要在 instance 变量中添加一个正则表达式(当我们添加一个带有捕获组的正则表达式时,第一个捕获组的值将是变量的值) .
例如
没有正则表达式的变量定义(你得到host_ip:port)-
使用正则表达式定义变量(你只得到host_ip)-
然后您可以添加一个值为 kube_pod_info{ host_ip="$instance" }
的新变量以获取所选主机中的所有 Pod。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。