一聚教程网:一个值得你收藏的教程网站

热门教程

Grafana 如何使用模板变量动态切换查看主机

时间:2026-08-23 08:12:49 编辑:袖梨 来源:一聚教程网

用Grafana模板变量动态切换主机,核心是定义Query类型变量host并用instance=~"$host"在PromQL中正则引用;需确保label_values查询与指标instance标签格式一致,勾选Multiselect和On Time Range Change,并通过Query Inspector验证替换结果。

用 Grafana 模板变量动态切换主机,核心是定义一个能自动获取主机列表的 Query 类型变量,并在所有面板的 PromQL 中用正则语法引用它。操作不复杂,但关键细节容易出错。

定义主机变量(Query 类型)

进入 Dashboard 设置 → Variables → Add variable:

  1. Type 选 Query
  2. Name 填 host(小写+下划线,避免特殊字符)
  3. Data source 选你的 Prometheus 实例
  4. Query 填:label_values(node_cpu_seconds_total, instance)
  5. Regex(可选)填:/([^:]+)(?::d+)?/ —— 自动剥离端口,如 10.0.0.1:910010.0.0.1
  6. 勾选 MultiselectInclude All option,All 显示名建议设为 All Hosts
  7. Refresh 设为 On Time Range Change,确保时间范围变动时刷新主机列表

在面板中安全引用变量

所有面板的 PromQL 必须使用正则匹配语法,不能用等号:

  1. ✅ 正确写法:node_load1{instance=~"$host"}
  2. ✅ 多选或选 All 时也生效:Grafana 自动展开为 instance=~"host1|host2|host3"instance=~".*"
  3. ❌ 错误写法:instance="$host" —— 选 All 时变成 instance="all",Prometheus 报错
  4. 若需排除某些主机,可在 PromQL 中叠加条件,例如:node_load1{instance=~"$host", job!="backup"}

验证与调试要点

变量配置后常出现“有下拉框但图表无数据”,多数因三处不一致:

  1. 先在 Prometheus 表达式浏览器执行 count by (instance) (node_cpu_seconds_total),确认该 label 真实存在且值非空
  2. 检查变量 Query 返回的值,是否和指标中 instance 标签的格式完全一致(大小写、下划线、有无端口)
  3. 打开面板的 Query Inspector,看实际发出的 PromQL 是什么——确认 $host 是否被正确替换,有无多余空格或引号

进阶:按分组或角色再过滤

如果主机还带环境或角色标签(如 env="prod"role="db"),可再建对应变量:

  1. 新增变量 env,Query:label_values(node_cpu_seconds_total, env)
  2. 面板 PromQL 改为:node_load1{instance=~"$host", env=~"$env"}
  3. 多个变量会自动组合过滤,无需额外逻辑

热门栏目