05.6变量 Variables 和动态Dashboard

分类: Grafana 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 示例:

  • label_values(up, service)
    :获取所有 service 标签的值。
  • label_values(http_requests_total, instance)
    :获取所有 instance 标签的值。
  • query_result(up)
    :直接查询指标值。

创建完成后,变量会出现在 Dashboard 顶部,用户可以下拉选择。

在查询中使用变量

在查询中使用变量有什么方式呢?

第一种方式:在 PromQL 中使用。 查询 A:

up{service="$service"}
,查询 B:
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 就会依赖变量 A。

第二种方法:配置依赖关系。 变量 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 更灵活、更实用。

在下一节,我们将学习阈值和告警状态。学习如何配置阈值和告警。