如何将Grafana图例值映射为EC2实例名称
解决Grafana EC2图例从实例ID改为名称的方案
方案1:用Grafana Transform的Lookup功能(最适合你的场景)
既然你已经能通过变量获取实例名称,直接用Transform做关联就能批量替换图例:
- 确保变量是结构化的ID-名称映射
- 若还未配置,新建一个Query类型的变量(比如命名为
ec2_instance_map),数据源选AWS,查询类型选EC2 Instances - 在「Fields」中勾选
InstanceId和Tags.Name(对应实例的Name标签),保存后变量会返回所有实例的ID与名称对应表
- 若还未配置,新建一个Query类型的变量(比如命名为
- 在CPU使用率面板添加Transform
- 打开面板编辑,切换到「Transform」标签,点击「Add transform」,选择「Lookup」
- 「Lookup dataset」选择你创建的
ec2_instance_map变量 - 「Match field」选当前面板CPU指标里的
InstanceId(即当前图例显示的实例ID字段),「Lookup field」选变量里的InstanceId - 勾选「Keep all fields from main query」和「Keep matching fields from lookup」
- 修改图例显示字段
- 切换到「Panel options」→「Legend」,在「Legend values」里选择
Tags.Name(Lookup后的字段),或者直接在「Legend template」中写${Tags.Name}
- 切换到「Panel options」→「Legend」,在「Legend values」里选择
方案2:给CloudWatch指标附加实例名称维度(长期自动化方案)
如果不想依赖Grafana的Transform,可以在AWS端给CPU指标添加实例名称维度:
- 用CloudWatch Agent批量配置:给所有EC2实例安装CloudWatch Agent,修改配置文件,在采集CPU指标时添加
InstanceName维度(值为实例的Name标签) - 或者用Lambda自动化:通过CloudWatch Event定期触发Lambda,获取所有EC2实例的ID和名称,调用CloudWatch API给对应指标添加自定义维度
- 配置完成后,在Grafana查询CPU指标时,可直接选择
InstanceName作为图例字段,无需额外关联
方案3:模板变量替换(适合实例变动少的场景)
如果实例数量固定、变动频率低,可以用键值对变量做替换:
- 新建一个「Text box」类型的变量(比如
instance_name_map),值填i-xxxxxx=WebServer01,i-yyyyyy=DBServer01,...(按格式填入所有实例ID和名称) - 在面板的「Legend template」里写
${instance_name_map:${__data.fields.InstanceId}},Grafana会自动把实例ID替换为对应的名称 - 缺点:实例变动时需要手动更新变量,不适合动态实例环境
内容的提问来源于stack exchange,提问作者frktclr
相关产品推荐
相关产品推荐

