【问题标题】:Host's pods panel in GrafanaGrafana 中主机的 pod 面板
【发布时间】:2021-03-14 09:27:10
【问题描述】:

我想在 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"})

然后我将面板的可视化更改为表格并将列样式添加到TimeValue(选择隐藏类型)。这允许我以类似列表的方式显示主机正在运行的 pod。

【问题讨论】:

    标签: kubernetes grafana promql


    【解决方案1】:

    这实际上在 Grafana 中很容易做到,并且无需在 Prometheus 中更改标签。您只需要在 instance 变量中添加一个正则表达式(当我们添加一个带有捕获组的正则表达式时,第一个捕获组的值将是该变量的值) .

    例如

    没有 Regex 的变量定义(你得到 host_ip:port)-

    使用正则表达式定义变量(您只会得到 host_ip)-

    然后您可以添加一个值为kube_pod_info{ host_ip="$instance" } 的新变量,以获取所选主机中的所有pod。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 2020-10-24
      • 2019-09-07
      • 1970-01-01
      相关资源
      最近更新 更多