需求背景:
创建TKE节点池默认都是以IP命名,也不想再自定义命名,所以在grafana展示过滤时不好识别每个节点用途
解决方案:
Prometheus支持label_join表达式,支持将metrics的2个label合并为1个新的label,grafana在展示时可以通过新label展示,过滤的值可以通过node标签展示。Prometheus kubernetes sd中node role会带上节点label,所以思路如下:
- 给节点打上labelkubectl label node <node_ip> trino=prod
- 在grafana 中变量模版: query: query_result(label_join(kubelet_node_name, "rename", "-", "trino", "node"))
- 在grafana中正则匹配变量的key和value: /rename="(?<text>^" )|node="(?<value>^" )/g 其中key为rename,dashboard展示使用 value为node,在dashboard那其他panel引用 展示效果: prod-10.0.0.139,符合客户
参考文档:
https://grafana.com/docs/grafana/latest/dashboards/variables/add-template-variables/#filter-and-modify-using-named-text-and-value-capture-groups