主持人在 Grafana 中的 pods 面板
Host's pods panel in Grafana
我想在 Grafana 中有一个面板,显示主机中 pods 当前 运行 的内容。
对于主机变量,我有以下查询(作业变量只是 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", "", "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"})
然后我将面板的可视化更改为 table,并将列样式添加到 Time
和 Value
(选择隐藏类型)。这允许我以类似列表的方式显示主机的 运行 pods。
这实际上在 Grafana 中很容易做到,不需要在 Prometheus 中更改标签。您只需要在 instance 变量中添加一个正则表达式(当我们添加一个带有捕获组的正则表达式时,第一个捕获组的值将是变量)。
例如
没有正则表达式的变量定义(你得到host_ip:port)-
用正则表达式定义变量(你只得到host_ip)-
然后您可以添加一个值为 kube_pod_info{ host_ip="$instance" }
的新变量以获取所选主机中的所有 pods。
我想在 Grafana 中有一个面板,显示主机中 pods 当前 运行 的内容。
对于主机变量,我有以下查询(作业变量只是 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", "", "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"})
然后我将面板的可视化更改为 table,并将列样式添加到 Time
和 Value
(选择隐藏类型)。这允许我以类似列表的方式显示主机的 运行 pods。
这实际上在 Grafana 中很容易做到,不需要在 Prometheus 中更改标签。您只需要在 instance 变量中添加一个正则表达式(当我们添加一个带有捕获组的正则表达式时,第一个捕获组的值将是变量)。
例如
没有正则表达式的变量定义(你得到host_ip:port)-
用正则表达式定义变量(你只得到host_ip)-
然后您可以添加一个值为 kube_pod_info{ host_ip="$instance" }
的新变量以获取所选主机中的所有 pods。