跳转至

视图变量


观测云支持在视图中添加全局变量。当您想要在仪表板中动态地完成图表的筛选,可以通过使用视图变量来实现。

添加视图变量

在仪表板中,若未添加过视图变量,顶部导航栏显示添加视图变量按钮,点击即可进入添加。

数据来源:当前视图变量可选的数据范围,包括 DQL、指标、基础对象、自定义对象、日志、应用性能、用户访问、安全巡检和自定义。

变量查询:当前视图变量使用的查询方式,包括 DQL 查询、PromQL 查询、UI 查询和自定义。

默认值:当前视图变量在仪表板中的初始变量。您可在下拉框查看当前视图变量的全部变量,并选择在仪表板默认查看的初始变量。若默认值为空,则在仪表板显示最新的字段数据。

  • *:条件为空(null);
  • All values:将视图变量查询语句得到的结果值当作变量传参;下拉框最多显示 50 个变量。
  • 自定义:直接在选择栏输入值后回车创建。您可以在选择栏搜索查找您的目标变量。

点击选中,即可选中当前列表的所有值。

变量名:当前视图变量集合所属的变量名称,在仪表板中添加图表时,需要在图表查询中引用,格式为:#{变量名}。

显示名:当前视图变量集合在仪表板中显示的名称,例如:变量名为 host,显示名为 主机名

注意:若工作空间无数据上报,在配置视图变量时无法选择数据,可在配置时预设字段,数据正常上报后,会自动匹配字段。

相关操作如下:

  • 拖动排序:hover 至图标,可点击拖动视图变量,调节先后顺序。
  • 排序:针对查询返回的视图变量进行默认、升降、排序排列。
  • 是否隐藏:开启该功能后,在非编辑模式下,该变量不可见,顶部导航栏显示添加视图变量按钮。

变量查询

视图变量支持 DQL 查询、PromQL 查询、UI 查询、自定义四种查询方式。

取值范围

视图变量的取值范围有两种方式:

跟随仪表板联动,即根据仪表板的时间控件所选的时间范围列出变量查询的数据;
不跟随仪表板联动,即列出变量查询的所有数据,不受仪表板时间控件所选的时间范围影响。

下面是不同数据来源变量查询的取值范围说明:

数据类型 指标集 标签 默认值
指标 SHOW_MEASUREMENT() 函数;
该函数不支持添加时间筛选;
取值范围:当前工作空间所有的指标集。
SHOW_TAG_KEY(from=['指标集名']) 函数;
该函数不支持添加时间筛选;
取值范围:当前工作空间选定指标集下面的标签。
SHOW_TAG_VALUE(from=['指标集名'], keyin=['标签名']) LIMIT 50;
该函数不支持添加时间筛选;
取值范围:指定指标集下某个标签的 50 个值。
数据类型 分类 属性/标签 默认值
基础对象 O::RE(.*):(DISTINCT_BY_COLLAPSE(class));
该函数支持添加时间筛选,跟随仪表板时间控件联动
取值范围:选定时间内的所有默认 index 下的 source 值。
SHOW_OBJECT_FIELD('kubernetes_nodes');
该函数不支持添加时间筛选;
取值范围:当前工作空间对象数据下的所有字段。
O::kubernetes_nodes:(DISTINCT_BY_COLLAPSE(namespace)) LIMIT 50;
该函数支持添加时间筛选,跟随仪表板时间控件联动
取值范围:选定时间内对象数据中某个标签的 50 个值。
数据类型 分类 属性/标签 默认值
自定义对象 CO::RE(.*):(DISTINCT_BY_COLLAPSE(class));
该函数支持添加时间筛选,跟随仪表板时间控件联动
取值范围:选定时间内的所有默认 index 下的 source 值。
SHOW_CUSTOM_OBJECT_FIELD('class值');
该函数不支持添加时间筛选;
取值范围:当前工作空间自定义对象数据下的所有字段
CO::cdsmnl:(DISTINCT_BY_COLLAPSE(cds)) LIMIT 50;
该函数支持添加时间筛选,跟随仪表板时间控件联动
取值范围:选定时间内自定义对象数据中某个标签的 50 个值。
数据类型 日志来源 属性 默认值
日志 L::RE(.*):(DISTINCT_BY_COLLAPSE(source));
该函数支持添加时间筛选,跟随仪表板时间控件联动
取值范围:选定时间内的所有默认 index 下的 source 值。
SHOW_LOGGING_FIELD(index='default');
该函数不支持添加时间筛选;
取值范围:当前工作空间日志数据下的所有字段。
L::RE(.*):(DISTINCT_BY_COLLAPSE(trace_id)) LIMIT 50;
该函数支持添加时间筛选,跟随仪表板时间控件联动
取值范围:选定时间内日志数据中某个标签的 50 个值。
数据类型 属性 默认值
应用性能监测 SHOW_TRACING_FIELD();
该函数不支持添加时间筛选;
取值范围:当前工作空间链路数据下的所有字段。
T::RE(.*):(DISTINCT_BY_COLLAPSE(resource)) LIMIT 50;
该函数支持添加时间筛选,跟随仪表板时间控件联动
取值范围:选定时间内链路数据中某个标签的 50 个值。
数据类型 数据分类 属性 默认值
用户访问监测 R::RE(.*):(DISTINCT_BY_COLLAPSE(source));
该函数支持添加时间筛选,跟随仪表板时间控件联动
取值范围:选定时间内的所有默认 index 下的 source 值。
SHOW_RUM_FIELD('source值');
该函数不支持添加时间筛选;
取值范围:当前工作空间用户访问数据下的所有字段。
R::error:(DISTINCT_BY_COLLAPSE(province)) LIMIT 50;
该函数支持添加时间筛选,跟随仪表板时间控件联动
取值范围:选定时间内用户访问数据中某个标签的 50 个值。
数据类型 属性 默认值
安全巡检 SHOW_SECURITY_FIELD();
该函数不支持添加时间筛选;
取值范围:当前工作空间安全巡检数据下的所有字段。
S::RE(.*):(DISTINCT_BY_COLLAPSE(rule)) LIMIT 50;
该函数支持添加时间筛选,跟随仪表板时间控件联动
取值范围:选定时间内安全巡检数据中某个标签的 50 个值。

DQL 查询

在 DQL 查询过程中,支持用户直接手写 DQL 语句,查询返回对应的数据值,您可以在查询中添加时间范围筛选和配置级联查询

点击 了解更多 DQL 定义和语法

DQL 语句查询示例:

注意:基础设施、日志等非指标数据建议使用该方式。

语法 说明
数据源类型::数据来源:(distinct('属性字段名')){筛选条件} M/metric - 时序指标数据;
O/object - 对象数据;
L/logging - 日志数据;
E/event - 事件数据;
T/tracing - 追踪数据;
R/rum - RUM 数据。
R::view:(distinct(app_id)) 返回 web 应用用户访问监测的 app_id 列表。
R::view:(distinct(env)){app_id = '8f05003ebccad062'} 返回 Web 应用用户访问监测 app_id=8f05003ebccad062对应的 env 列表。
R::view:(distinct(env)){app_id = #{appid}} 通过在 DQL 语句中使用 #{变量名} ,可用于级联查询,表示上一条查询的变量名设为 app_id,则返回上条变量中所选 app_id 对应的 env 列表。
添加时间范围说明

视图变量使用 DQL 语句查询时,支持以 [xx:xx:xx] 的格式添加数据查询的时间范围:

  • 若在 DQL 查询中添加了时间范围,则优先使用 DQL 查询中的时间范围;
  • 若在 DQL 查询中未添加时间范围,则默认使用仪表板时间控件所选的时间范围。

示例:

# 查询最近 10 分钟的容器主机列表 
O::docker_containers:(distinct(`host`)) [10m]
Show 函数查询

在使用 DQL 查询时,支持使用 Show 函数来查询返回对应的数据值,Show 函数不支持添加时间范围筛选。

点击 了解更多 DQL 函数说明

Show 函数查询示例:

注意:指标数据建议使用该查询方式。

语法 说明
show_measurement() 返回当前工作空间所有的指标集。
show_tag_key(from=["cpu"]) 返回当前工作空间指标集 cpu 下面的标签。
show_tag_key(from=["cpu"],keyin=["host"]) 查询当前工作空间指标集 cpuhost 标签值列表。

PromQL 查询

在 PromQL 查询中,支持手写查询语句。查询中默认使用仪表板时间控件所选时间,并查询返回对应的数据值。

关于 PromQL 查询相关信息,可参考 PromQL 快速上手

UI 查询

在 UI 查询中,支持选择指标、基础对象、自定义对象、日志、应用性能、用户访问、安全巡检数据来源,通过直接在 UI 上点击选择查询变量,查询返回对应的数据值。

在 UI 查询中,您无法添加时间范围和配置 级联查询

自定义查询

自定义是指用户可以直接定义一组数值用于视图变量使用,无需通过查询语句获取相关值;自定义变量选项中的内容,每个选项之间用英文 , 隔开。自定义查询不支持添加时间范围和配置级联查询。

级联查询

当需要配置两个以上视图变量,且第二个视图变量需要基于第一个视图变量查询的结果的来进行联动查询时,可以使用级联查询,以此类推,级联查询可以支持多个视图变量的联动查询。

注意:级联查询仅支持 DQL 语句来进行查询配置。

示例

下面以用户访问监测配置 Web 应用概览视图变量级联筛选为例,需要基于应用 ID环境版本进行联动查询。

配置说明:

应用 ID环境版本有三个变量,故需要在仪表板配置三条变量查询语句。在第二和第三条查询语句使用上一级配置的 #{变量名} ,即可完成级联查询配置。

  • 变量 1(应用 ID):查询应用名称为 df_web_rum_sdk 的应用列表:
R::view:(distinct(`app_id`)){sdk_name = `df_web_rum_sdk`}
  • 变量 2(环境):查询应用名称为 df_web_rum_sdk,且变量 1 中所选应用 ID 下的环境列表:
R::view:(distinct(`env`)) {app_id = `#{appid}` and sdk_name = `df_web_rum_sdk`}
  • 变量 3(版本):查询应用名称为 df_web_rum_sdk,且变量 2 中所选环境下的版本列表:
R::view:(distinct(`version`)) {app_id = `#{appid}` and env = `#{env}`  and sdk_name = `df_web_rum_sdk`}

逻辑运算符

逻辑运算符 变量值匹配类型 示例
= 、!= 精确匹配,支持多选。 R::view:(distinct(env)) {app_id = #{appid}
match(re)、not match(re)
wildcard、not wildcard
模糊匹配,支持多选。 R::view:(distinct(env)) {app_id = re(#{appid})}

添加对象映射

针对基础设施对象数据可以设置字段映射,字段映射只是用作显示,不会影响原字段数据。

选择数据来源、对象分类。以及需要映射的两个属性字段。如下图所示:将 container_id 映射显示为 container_name

场景示例

视图变量配置示例

1、视图变量创建完成后,要在图表中关联此变量,实现图表与视图变量的联动筛选。

1)在图表查询中,筛选字段时,value 值选中该变量即可。(此处下拉中显示的是变量名)

2)在场景视图中切换变量值,图表将根据变量标签进行筛选展示。

2、在图表中,选中特定时间线或数据点,可直接点击实现反向添加,实现全局联动查看选中值相关的图表数据分析。

注意

  • 前提:其对应的 DQL 中存在 by 分组条件;
  • 涉及图表范围:时序图、概览图、饼图、排行榜、仪表盘、柱状图、散点图、气泡图、表格图、矩形树图、中国地图、世界地图、蜂窝图

1)点击特定时间线或数据点后,在显示的卡片中点击应用到视图变量下的设置条件。

2)即可填充到仪表板的视图变量中。效果显示如下:

对象映射配置示例

对象映射可以应用在两个地方:视图变量的下拉显示中和图表的显示中。

在视图变量中应用

在视图变量中添加对象的【属性字段】,若该字段同样设置了字段映射,那么在视图变量中显示为:映射的字段(查询的字段)。

举例说明:

1)在【视图变量】中添加了 container_id 变量(如下图所示)。

2)在【对象映射】中设置 container_id 映射为 container_name

3)此时在视图中变量显示为:container_name(container_id)

在图表中应用

在图表中查询了对象的属性字段,并在设置中开启字段映射,若该字段同样设置了字段映射,那么在图表变量中显示为:映射的字段(查询的字段)。

举例说明:

1)在对象映射中设置 host 映射为 name(如下图所示):

2)在图表查询中使用该字段,并且在设置中开启字段映射,那么在图表中显示格式为 name(host)

注意
  • 对象映射只支持设置对象类数据;
  • 使用对象映射时,必须先定义一个基于对象类字段的视图变量;
  • 同一对象分类的查询字段,不支持设置两个映射,即查询字段下拉中不存在该对象分类已添加的字段;
  • 开启字段映射时,图表中显示查询的分组字段和对应的映射字段,未指定映射的分组字段不显示;
  • 关闭字段映射时,图表中不显示映射的字段,正常显示。

文档评价

文档内容是否对您有帮助? ×