Grafana中如何基于容器变量为api_usage_total设置endpoint_name标签值?
解决方案
核心思路
利用Grafana的**面板重复(Repeat)**功能关联Container变量,结合变量字符串替换或映射变量,实现容器到gRPC服务名的对应,从而生成正确的endpoint_name正则匹配规则。
方法一:直接使用变量字符串替换(无需新增变量)
开启面板重复功能
新增api_usage_total面板后,进入面板设置的**重复(Repeat)**选项卡:- 选择重复目标为
Container变量 - 勾选对应重复方向(根据布局需求选横向/纵向)
多选容器时,会自动生成对应数量的独立面板,每个面板对应单个容器。
- 选择重复目标为
编写带变量替换的PromQL查询
在面板的查询编辑器中输入以下表达式:api_usage_total{endpoint_name=~"my.grpc.service.servers.v1.${Container/A-container/A/}${Container/B-server/B/}${Container/C-service-server/C/}\\.+"}替换规则说明:
${Container/A-container/A/}:将当前面板对应的单个容器名A-container替换为服务名A${Container/B-server/B/}:将B-server替换为B${Container/C-service-server/C/}:将C-service-server替换为C- 最终拼接
\.+匹配该服务下所有CRUD端点
方法二:创建容器-服务名映射变量(更直观)
新增映射变量
进入仪表盘变量设置,新增名为ServiceName的变量:- 类型选择自定义
- 输入以下键值对格式的选项:
A-container : A B-server : B C-service-server : C - 高级设置:勾选“多选”,设置“值格式”为“键值对”,并添加依赖变量
Container(确保ServiceName随Container选择自动匹配)
配置面板重复与查询
同样开启面板的重复功能(目标为Container),然后在查询编辑器中使用简化后的表达式:api_usage_total{endpoint_name=~"my.grpc.service.servers.v1.${ServiceName}\\.+"}
验证效果
- 选择单个容器(如
A-container)时,面板会查询endpoint_name匹配my.grpc.service.servers.v1.A\.+的指标 - 选择多个容器(如
A-container和C-service-server)时,会自动生成两个面板,分别对应各自服务的端点指标
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

