创建和管理变量
在 IBM® Cloud Logs 中,变量是在查询中使用的值的占位符。 在自定义仪表盘中使用时,仪表盘的查询会更新以显示该值的数据。
变量使仪表盘更具互动性和动态性。 您可以使用变量来代替在查询中输入服务器、应用程序或传感器的具体名称。 您可以在不同的数据视图之间轻松切换。 这意味着,如果您有复杂的高卡方性指标,您可以添加变量来放大您关心的特定值。 无论变量源类型如何,所有数据类型的变量都可以在部件中使用。
变量类型
您可以选择不同的变量类型。
- 静态值变量
- 您可以手动定义变量值的固定列表,例如一个数字或一串用逗号分隔的数字。 例如,如果您的国家名称从不更改,您可能希望将其创建为静态值变量,而不是数据源查询变量。
- 查询变量
- 变量值从日志或度量数据源查询中获取。 例如,查询变量可以生成服务器名称、传感器 ID 或数据中心的列表,通过使用数据源查询获取选项来动态更新数值。 查询变量在管理多个数据源实例时非常有用,尤其是在不同的环境中。
为自定义仪表盘定义变量
-
单击仪表盘图标
仪表盘 > 自定义仪表盘。
-
在新的或现有的仪表板中,单击托管变量图标 { }.
-
单击 + 变量。
-
对于所有变量类型,请配置以下字段:
-
变量名称。 在该字段中输入的文本将决定变量名在查询中的显示方式,例如
{{ podvalues }}。 变量名中不得出现大写字母或空格。 -
显示名称(可选)。 在该字段中输入的文本将作为下拉列表的一部分出现在选择中,例如“我的 Pod”。
-
选择选项。
- 多值
- 多值指定用户可以在一个特定变量中选择多个值。 某些查询不支持多个值,如
{{ variablename }}。 只有当您的查询支持多值时,才选择该选项。 - 包括所有项
- 启用多值选项时,可以选择“全部包括”。 查询将选择特定时间段内的所有可用值和未来值,与您的特定选择无关。 选择这两个选项时,默认情况下会选择所有变量选项,也可以取消选择一个或多个变 量选项。 如果两个选项都未指定,则一次只能选择一个变量值。
-
query类型变量:-
指定查询源(
logs或metrics)。 -
对于
variable type,请指定values,对于logs,请指定。 对于metrics,请指定metric names,metric labels或label values。 如果选择metric labels,请为显示值选择标签。 -
对于
logs,通过选择要查询的日志密钥来定义字段。 当前变量值列表按字母数字顺序显示在“值预览”中。 -
对于
metrics,在度量标准 regex 中输入 regex 表达式,以获取希望显示的度量标准列表。 例如,^kube(.*)返回所有以 kube 开头的度量名称。-
label values,公制标签,选择显示值的标签。 插入一个变量使标签动态化,例如Pod Name = {{ pod }}。 -
label values,对于标签过滤器,可为查询创建一个或多个嵌套变量和额外的过滤器层。 例如,您可以选择按集群过滤标签,方法是选择{{ podvalue }}或硬编码的集群名称。 -
metrics,变量值显示名称,定义在下拉选择列表中显示值的方式。值预览中会显示字段的当前变量值列表。
-
-
对于排序值,选择如何在“值预览”中对数据进行排序。
-
-
单击保存。
还可以编辑或删除已定义变量列表中的变量。
在查询中使用变量
除了在自定义仪表盘中使用变量外,还可以在 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 查询中使用预定义变量。
| 变量 | 描述 | 示例 |
|---|---|---|
${__range} |
该变量表示仪表盘时间范围的持续时间。 它以 PromQL 支持的间隔字符串形式呈现。 例如,如果选择的时间范围是从 13.00 到 14.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}])