创建和管理变量

在 IBM® Cloud Logs 中,变量是在查询中使用的值的占位符。 在自定义仪表盘中使用时,仪表盘的查询会更新以显示该值的数据。

变量使仪表盘更具互动性和动态性。 您可以使用变量来代替在查询中输入服务器、应用程序或传感器的具体名称。 您可以在不同的数据视图之间轻松切换。 这意味着,如果您有复杂的高卡方性指标,您可以添加变量来放大您关心的特定值。 无论变量源类型如何,所有数据类型的变量都可以在部件中使用。

变量类型

您可以选择不同的变量类型。

静态值变量
您可以手动定义变量值的固定列表,例如一个数字或一串用逗号分隔的数字。 例如,如果您的国家名称从不更改,您可能希望将其创建为静态值变量,而不是数据源查询变量。
查询变量
变量值从日志或度量数据源查询中获取。 例如,查询变量可以生成服务器名称、传感器 ID 或数据中心的列表,通过使用数据源查询获取选项来动态更新数值。 查询变量在管理多个数据源实例时非常有用,尤其是在不同的环境中。

为自定义仪表盘定义变量

  1. 登录 IBM Cloud 账户

  2. 访问 IBM Cloud Logs 实例

  3. 单击仪表盘图标仪表盘图标 仪表盘 > 自定义仪表盘

  4. 在新的或现有的仪表板中,单击托管变量图标 { }.

  5. 单击 + 变量

  6. 对于所有变量类型,请配置以下字段:

    • 变量类型。

    • 变量名称。 在该字段中输入的文本将决定变量名在查询中的显示方式,例如 {{ podvalues }}。 变量名中不得出现大写字母或空格。

    • 显示名称(可选)。 在该字段中输入的文本将作为下拉列表的一部分出现在选择中,例如“我的 Pod”。

    • 选择选项。

      多值
      多值指定用户可以在一个特定变量中选择多个值。 某些查询不支持多个值,如 {{ variablename }}。 只有当您的查询支持多值时,才选择该选项。
      包括所有项
      启用多值选项时,可以选择“全部包括”。 查询将选择特定时间段内的所有可用值和未来值,与您的特定选择无关。 选择这两个选项时,默认情况下会选择所有变量选项,也可以取消选择一个或多个变 量选项。 如果两个选项都未指定,则一次只能选择一个变量值。
  7. query 类型变量:

    • 指定查询源(logsmetrics )。

    • 对于 variable type,请指定 values,对于 logs,请指定。 对于 metrics,请指定 metric names, metric labelslabel values。 如果选择 metric labels,请为显示值选择标签。

    • 对于 logs,通过选择要查询的日志密钥来定义字段。 当前变量值列表按字母数字顺序显示在“值预览”中。

    • 对于 metrics,在度量标准 regex 中输入 regex 表达式,以获取希望显示的度量标准列表。 例如,^kube(.*) 返回所有以 kube 开头的度量名称。

      • label values公制标签,选择显示值的标签。 插入一个变量使标签动态化,例如 Pod Name = {{ pod }}

      • label values,对于标签过滤器,可为查询创建一个或多个嵌套变量和额外的过滤器层。 例如,您可以选择按集群过滤标签,方法是选择 {{ podvalue }} 或硬编码的集群名称。

      • metrics变量值显示名称,定义在下拉选择列表中显示值的方式。

        值预览中会显示字段的当前变量值列表。

    • 对于排序值,选择如何在“值预览”中对数据进行排序。

  8. 单击保存

还可以编辑或删除已定义变量列表中的变量。

在查询中使用变量

除了在自定义仪表盘中使用变量外,还可以在 Lucene、DataPrime, 和 PromQL 查询中使用已定义的变量。

Lucene 查询

您可以在 Lucene 查询中使用已定义的变量。 例如,product_id:{{ pid }},其中 pid 是变量名(不是显示名)、

DataPrime 疑问

创建变量后,用户选择的变量值可通过 $p.<variable_name> 在 DataPrime 查询中用作查询 参数

PromQL 疑问

在 PromQL 查询语言中使用 {{ variable_name }}

例如,PromQL 查询 sum(kube_pod_owner{pod=~"{{ pod }}"}) 用于聚合与 Kubernetes pod 相关的度量值。{pod=~"{{ pod }}"} 是一个标签选择器,用于筛选名称与变量值相匹配的特定 pod 的 kube_pod_owner 度量值。 {{ pod }} 占位符是一个模板变量,在运行查询时会取代实际 pod 名称。

您还可以在 PromQL 查询中使用预定义变量。

预定义的 PromQL 变量
变量 描述 示例
${__range} 该变量表示仪表盘时间范围的持续时间。 它以 PromQL 支持的间隔字符串形式呈现。 例如,如果选择的时间范围是从 13.0014.30,那么 ${__range} 变量的计算结果就是 90m 1d, 5m
${__range_s} 计算为所选时间段内的秒数。 60s, 180s
${__range_ms} 计算为所选时间段内的毫秒数。 60ms, 180ms

例如,您可以在 sum_over_time 中使用 __range variable

sum_over_time(kube_pod_owner[${__range}])