Grafana GQL:如何用node_uname_info的node_name作为K8s节点带宽图例?
在Grafana中用Kubernetes节点名称作为带宽监控图例的实现方法
完全可行,通过PromQL的标签关联语法就能实现,具体步骤如下:
1. 修改PromQL查询,关联节点名称标签
使用group_left将node_uname_info中的node_name标签关联到带宽指标上,最终查询语句如下:
sum by(instance, node_name) ( irate(node_network_receive_bytes_total[$interval:$resolution]) * on(instance) group_left(node_name) node_uname_info )
逻辑说明:
node_uname_info是Node Exporter采集的节点信息指标,自带instance(节点IP)和node_name标签on(instance) group_left(node_name)表示以instance标签为关联键,将node_uname_info的node_name标签附加到带宽指标结果中- 最后按
instance和node_name聚合,确保结果包含节点名称标签
2. 在Grafana中配置图例显示
进入面板的Legend设置项,将图例格式设置为:
{{node_name}}
如果需要同时显示IP作为补充,可设置为:
{{node_name}} ({{instance}})
这样图例就会直接显示Kubernetes节点名称,而非原始的IP地址。
3. 处理instance标签格式不一致的情况
如果你的node_network_receive_bytes_total和node_uname_info的instance标签格式不统一(比如一个带端口IP:9100,一个只带IP),可以用label_replace统一标签格式:
示例:去除带宽指标instance标签的端口
sum by(instance, node_name) ( label_replace(irate(node_network_receive_bytes_total[$interval:$resolution]), "instance", "$1", "instance", "(.*):.*") * on(instance) group_left(node_name) node_uname_info )
示例:给节点信息指标的instance标签添加端口
sum by(instance, node_name) ( irate(node_network_receive_bytes_total[$interval:$resolution]) * on(instance) group_left(node_name) label_replace(node_uname_info, "instance", "$1:9100", "instance", "(.*)") )
内容的提问来源于stack exchange,提问作者Vasek - Tom C.
相关产品推荐
相关产品推荐

