05.6、变量 Variables 和动态Dashboard
变量(Variables)和动态 Dashboard
变量是 Grafana 的强大功能,可以让 Dashboard 动态化、可复用。本节将学习:变量类型、创建变量、在查询中使用变量,以及联动效果。
Grafana 变量类型
Grafana 支持哪些变量类型呢?
第一种类型:Query。 从数据源查询变量值,支持 PromQL、LogQL 等,动态获取值列表。这是最常用的类型。
第二种类型:Custom。 手动定义变量值,固定选项列表,简单配置。适合固定的选项。
第三种类型:Text box。 文本输入框,用户输入值,自由文本。用户可以输入任何值。
第四种类型:Constant。 常量值,固定不变,用于配置。例如 API 版本、环境名称。
第五种类型:Interval。 时间间隔,用于刷新间隔,自动选项。例如 5s、1m、1h。
第六种类型:Data source。 数据源选择,动态切换数据源,多数据源支持。可以在同一个 Dashboard 中切换数据源。
变量类型对比: Query 是动态的,从数据源查询。Custom 是固定的,手动定义。Text box 是用户输入的。Constant 是常量。Interval 是时间间隔。Data source 是数据源。
这就是变量类型。选择合适的类型,可以让 Dashboard 更灵活。
创建变量
创建变量的步骤是什么?
第一步:进入变量设置。 Dashboard Settings > Variables,点击 Add variable。
第二步:配置变量。 Name:变量名称(例如:$service),Type:变量类型(Query),Label:显示标签(例如:服务)。
第三步:配置 Query 变量。 Data source:选择数据源(Prometheus),Query:输入查询(label_values(up, service)),Regex:可选的正则过滤,Multi-value:是否支持多选,Include All option:是否包含"All"选项。
第四步:保存变量。 点击 Add 保存,变量会出现在 Dashboard 顶部。
创建示例: Dashboard Settings → Variables → Add variable → 配置变量(Name/Type/Label)→ 配置 Query(数据源/查询)→ 保存变量 → 变量出现在顶部。
变量名称规则: 变量名称必须以 $ 开头。例如 $service、$instance、$environment。
Query 示例:
- :获取所有 service 标签的值。
label_values(up, service) - :获取所有 instance 标签的值。
label_values(http_requests_total, instance) - :直接查询指标值。
query_result(up)
创建完成后,变量会出现在 Dashboard 顶部,用户可以下拉选择。
在查询中使用变量
在查询中使用变量有什么方式呢?
第一种方式:在 PromQL 中使用。 查询 A:
up{service="$service"}rate(http_requests_total{instance="$instance"}[5m])第二种方式:变量语法。
$variable_name${variable_name}$variable_name:query第三种方式:多值变量。
$service = service1,service2,service3{service=~"$service"}第四种方式:All 选项。
$service = All{service=~".*"}{service=~"$service"}查询示例:
- 单值变量: 。这会查询指定服务的状态。
up{service="${service}"} - 多值变量: 。这会查询多个服务的请求数。
http_requests_total{service=~"$service"} - 变量组合: 。这样可以同时使用多个变量。
rate(http_requests_total{service="${service}", instance="${instance}"}[5m])
变量使用流程: 用户选择变量值 → 变量值更新 → 查询中使用变量 → 查询执行 → 数据更新 → 图表刷新。用户改变变量值,所有使用该变量的查询都会更新。
这就是在查询中使用变量。使用变量可以让 Dashboard 动态化。
变量联动效果
变量联动是什么? 变量联动可以让变量之间相互影响。
变量联动适用于哪些场景呢?
- 选择服务后,自动过滤实例。 选择服务后,实例列表自动更新,只显示该服务的实例。
- 选择环境后,自动过滤服务。 选择环境后,服务列表自动更新,只显示该环境的服务。
- 层级筛选。 环境 → 服务 → 实例,层级筛选。
如何实现变量联动呢?
第一种方法:在 Query 中使用变量。 变量 A:$environment,变量 B 的 Query:
label_values(up{environment="$environment"}, service)第二种方法:配置依赖关系。 变量 B 的 Query 中使用变量 A,变量 B 会自动依赖变量 A,变量 A 改变时,变量 B 自动更新。
第三种方法:链式联动。 环境 → 服务 → 实例,选择环境后,服务列表更新,选择服务后,实例列表更新。这样就可以实现链式联动。
联动流程: 选择环境 → 环境变量更新 → 服务变量查询更新 → 服务列表刷新 → 选择服务 → 服务变量更新 → 实例变量查询更新 → 实例列表刷新。这是一个链式的联动过程。
这就是变量联动效果。使用变量联动,可以让 Dashboard 更智能、更易用。
本节小结
在本节中,我们学习了变量(Variables)和动态 Dashboard:
第一个是变量类型。 Query、Custom、Text box、Constant、Interval、Data source。不同的类型有不同的用途。
第二个是创建变量。 Dashboard Settings > Variables > Add variable。配置变量名称、类型、查询。
第三个是使用变量。 在查询中使用 ${variable_name}。可以让 Dashboard 动态化。
第四个是联动效果。 变量之间相互影响,链式联动。可以让 Dashboard 更智能、更易用。
Variables 总结: Variables 包括变量类型、创建变量、使用变量、联动效果。这些功能组合在一起,可以让 Dashboard 动态化、可复用。
这就是变量(Variables)和动态 Dashboard。使用变量可以让 Dashboard 更灵活、更实用。
在下一节,我们将学习阈值和告警状态。学习如何配置阈值和告警。