跳到主要内容

仪表盘变量

仪表盘变量是 Grafana 中一个强大的功能,它允许用户动态地控制仪表盘的内容和显示方式。通过使用变量,您可以在一个仪表盘中展示多个数据源、时间范围或过滤条件,而无需创建多个仪表盘。本文将详细介绍如何在 Grafana 中创建和使用仪表盘变量,并通过实际案例展示其应用场景。

什么是仪表盘变量?

仪表盘变量是 Grafana 中的一种特殊功能,它允许您在查询和面板中动态地替换值。变量可以是简单的字符串、数字,也可以是复杂的查询结果。通过使用变量,您可以在一个仪表盘中展示多个数据源、时间范围或过滤条件,而无需创建多个仪表盘。

创建仪表盘变量

在 Grafana 中创建变量非常简单。以下是创建变量的步骤:

  1. 打开您的仪表盘,点击右上角的“齿轮”图标,进入仪表盘设置。
  2. 在左侧菜单中选择“Variables”。
  3. 点击“Add variable”按钮,开始创建新的变量。

变量类型

Grafana 支持多种类型的变量,包括:

  • Query: 通过查询数据源来获取变量的值。
  • Custom: 手动输入变量的值。
  • Constant: 定义一个常量值。
  • Interval: 定义时间间隔。
  • Datasource: 选择数据源。
  • Ad hoc filters: 动态添加过滤器。

示例:创建一个 Query 变量

假设我们有一个 Prometheus 数据源,并且我们想要创建一个变量来动态选择不同的服务名称。以下是创建该变量的步骤:

  1. 在“Variable”页面中,选择“Query”类型。
  2. 在“Name”字段中输入变量的名称,例如 service_name
  3. 在“Data source”字段中选择您的 Prometheus 数据源。
  4. 在“Query”字段中输入查询语句,例如 label_values(service_name),这将返回所有服务名称的标签值。
  5. 点击“Update”按钮保存变量。

现在,您可以在仪表盘的查询中使用 $service_name 变量来动态选择服务名称。

使用仪表盘变量

创建变量后,您可以在查询、面板标题、面板描述等地方使用它。以下是使用变量的几种常见方式:

在查询中使用变量

假设我们有一个 Prometheus 查询,用于获取某个服务的请求速率。我们可以使用 $service_name 变量来动态选择服务名称:

promql
rate(http_requests_total{service_name="$service_name"}[1m])

在面板标题中使用变量

您可以在面板标题中使用变量来动态显示当前选择的服务名称:

Requests Rate for $service_name

在面板描述中使用变量

您还可以在面板描述中使用变量来提供更多上下文信息:

This panel shows the request rate for the selected service: $service_name.

实际案例

案例 1:动态选择数据源

假设您有多个数据源,并且想要在一个仪表盘中动态切换数据源。您可以创建一个 Datasource 类型的变量,然后在查询中使用该变量来选择数据源。

  1. 创建一个 Datasource 类型的变量,命名为 datasource
  2. 在查询中使用 $datasource 变量来选择数据源:
sql
SELECT * FROM table WHERE datasource = '$datasource'

案例 2:动态选择时间范围

假设您想要动态选择时间范围来查看不同时间段的数据。您可以创建一个 Interval 类型的变量,然后在查询中使用该变量来选择时间范围。

  1. 创建一个 Interval 类型的变量,命名为 time_range
  2. 在查询中使用 $time_range 变量来选择时间范围:
promql
rate(http_requests_total{service_name="$service_name"}[$time_range])

总结

仪表盘变量是 Grafana 中一个非常强大的功能,它允许您动态地控制仪表盘的内容和显示方式。通过使用变量,您可以在一个仪表盘中展示多个数据源、时间范围或过滤条件,而无需创建多个仪表盘。本文介绍了如何创建和使用仪表盘变量,并通过实际案例展示了其应用场景。

附加资源

练习

  1. 创建一个 Query 类型的变量,用于动态选择不同的服务名称。
  2. 在查询中使用该变量来获取不同服务的请求速率。
  3. 创建一个 Datasource 类型的变量,并在查询中使用它来动态切换数据源。