如何在Grafana中将Prometheus的instance_id标签映射为友好名称?
可行的Instance ID到友好名称映射方案
方法1:用Transform的Join功能对接JSON数据源
- 先准备JSON格式的映射文件,比如:
[ {"instance_id": "10569", "name": "Paul"}, {"instance_id": "8891", "name": "Keith"} ]
- 在Grafana中添加一个JSON数据源,指向你搭建的JSON端点,或者直接上传本地JSON文件(静态映射场景更便捷)
- 进入面板编辑页,打开Transform标签,点击Add transformation选择Join by field:
- 第一个数据源选你的Prometheus查询结果,匹配字段选
instance_id - 第二个数据源选刚添加的JSON数据源,匹配字段同样选
instance_id
- 第一个数据源选你的Prometheus查询结果,匹配字段选
- 完成后,面板会新增
name字段,隐藏原有的instance_id字段,只展示这个友好名称即可
方法2:直接用Transform的JavaScript脚本转换
- 如果映射关系不复杂,直接用Transform里的Add field from calculation,类型选择JavaScript
- 编写简单的映射脚本:
const mapping = { "10569": "Paul", "8891": "Keith" }; return mapping[values['instance_id']] || values['instance_id'];
- 给新生成的字段命名(比如
用户名),之后用这个字段替代原来的instance_id显示 - 优点是无需额外数据源,适合映射不频繁变动的场景;若需更新映射,通过CI/CD修改面板的JSON配置就能同步脚本内容
方法3:CI/CD推送映射到Grafana自定义变量
- 在Grafana中创建一个自定义变量,类型选Query(对接JSON/File数据源)或者直接用Constant,值存储为JSON格式的映射内容
- 用CI/CD工具(比如GitHub Actions、GitLab CI)调用Grafana API,每日推送最新映射列表更新该变量
- 在面板的Prometheus查询或Transform步骤中,直接引用这个变量完成查找
- 示例curl命令(替换为你的Grafana信息):
curl -X PUT -H "Authorization: Bearer YOUR_GRAFANA_TOKEN" \ -H "Content-Type: application/json" \ http://your-grafana-url/api/dashboards/uid/YOUR_DASHBOARD_UID \ -d @updated-dashboard.json
方法4:对接自定义HTTP查询接口
- 搭建一个简单的后端服务,提供根据
instance_id查询名称的接口,比如GET /lookup?instance_id=10569返回{"name": "Paul"} - 在Grafana中将这个服务配置为HTTP数据源
- 面板Transform中选择External data转换,调用该接口传入
instance_id参数,把返回的名称合并到结果中
内容的提问来源于stack exchange,提问作者Keith Palmer Jr.
相关产品推荐
相关产品推荐

