创建和管理变量和固定的过滤条件

本文档介绍了如何固定信息中心级过滤条件,使其永久有效。固定的过滤条件具有默认状态,可让您修改信息中心显示的数据,而无需修改每个微件。这些过滤条件可以应用于整个信息中心,也可以仅应用于特定微件。信息中心工具栏会显示每个已固定的过滤条件,以及一个菜单,您可以通过该菜单临时更改过滤条件的值。

变量与固定的过滤条件类似,但仅适用于特定的微件。本文档介绍了如何创建变量以及如何将其应用于 widget。信息中心工具栏会显示每个变量以及一个菜单,您可以通过该菜单暂时更改变量的值。

本文档介绍了如何使用 Google Cloud 控制台创建变量和固定的过滤条件。如需了解如何使用 Cloud Monitoring API,请参阅使用 API 创建和管理信息中心:信息中心过滤条件

如需了解如何添加和修改仅适用于当前会话的临时分组和过滤条件,请参阅向自定义信息中心添加临时过滤条件

关于固定的过滤条件

已固定的过滤条件包含一个标签、一个或多个默认值,以及所有可能值的列表。所有可能值的列表会根据信息中心中显示的时序数据动态派生。如需了解过滤条件的结构,请参阅 DashboardFilter

您无法对各个微件应用固定的过滤条件。而是使用以下规则来确定固定的过滤条件能否更改微件显示的数据:

  • 如果微件显示的数据包含已固定的过滤条件指定的标签键,并且微件未为该标签键指定值,则已固定的过滤条件可以更改显示的数据。

    例如,假设您添加了固定的过滤条件 cluster_name: mycluster。然后,图表会自动仅显示cluster_name 标签值为 mycluster 的时序。同样,日志面板 widget 上的查询会修改为 resource.labels."cluster_name"="mycluster",并且图表会自动仅显示已固定的过滤条件中包含该标签的时序。

  • 如果微件包含针对同一标签键的过滤条件,或者微件显示的数据不包含已固定的过滤条件中指定的标签键,则微件会忽略已固定的过滤条件。

变量简介

变量具有名称和类型。通过修改微件包含的查询,将变量应用于特定微件。如需了解过滤条件的结构,请参阅 DashboardFilter

变量可以基于标签,也可以仅包含值:

  • 基于标签的变量类似于固定的过滤条件。这些变量包含标签键、一个或多个默认标签值以及所有可能的标签值的列表。所有可能值的列表会根据信息中心中显示的时间序列数据动态派生。

  • 仅值变量包含一个或多个默认值,并且可能会列出所有可能的值。如果您未指定默认值,系统会为默认值选择通配符运算符 (*)。如需定义一组所有可能的值,您可以提供一个值数组,也可以编写 SQL 查询。

    仅包含值的变量有三种类型:自定义文本输入SQL 查询

    • 自定义:如果您想同时枚举所有可能值的列表并设置一个或多个默认值,请使用此选项。例如,您可以将所有可能值的列表设置为 prod, staging, dev,并将默认值设置为 prod

    • 文本输入:当您不知道所有可能的值时使用。例如,您可能希望按网址进行过滤,但在创建变量时,您不知道确切的网址列表。然后,当您使用微件的过滤器菜单时,可以输入新的网址,然后将更改保存到当前会话或变量定义。

    • SQL 查询:当您想使用 SQL 查询生成可能值列表时,请使用此方法。这些变量旨在应用于使用 Log Analytics 创建的图表。

      对于这些变量,请确保查询结果是一个包含一个列的表,该列的数据类型为字符串,并且表中的每行都包含唯一的字符串值:

      SELECT log_name
      FROM `TABLE_NAME_OF_LOG_VIEW`
      GROUP BY log_name
      

      该变量应与图表查询同一表。

如需将变量应用于微件,您需要更新微件包含的查询。 如果您使用 Google Cloud 控制台,则对于基于标签的变量和某些 widget 类型,您可以通过菜单选择执行此关联。不过,您可以随时修改 widget 的查询以应用变量。如需了解详情,请参阅将变量应用于微件

准备工作

如需获得使用 Google Cloud 控制台添加或修改变量或固定的过滤条件所需的权限,请让管理员向您授予项目的 Monitoring Editor (roles/monitoring.editor) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需详细了解角色,请参阅使用 Identity and Access Management 控制访问权限

创建并固定过滤条件

如需创建并固定一个应用于所有支持过滤条件的信息中心微件的过滤条件,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 信息中心页面:

    前往信息中心

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在信息中心工具栏中,点击 设置
  3. 过滤部分,点击添加过滤条件 (Add a filter)。
  4. 点击 标签,然后选择一个标签。例如,您可以选择 zone
  5. 如需允许用户从变量的值菜单中选择多个值,请选择多选。如果未启用多选,用户只能从值菜单中选择一个选项。
  6. 点击 Default value(默认值),然后选择标签的默认值。如需匹配所有值,请选择 *

    创建过滤条件后,系统会将其添加到信息中心工具栏中。如需暂时更改过滤条件值,请选择过滤条件,然后从菜单中进行选择。

  7. 点击完成,然后点击应用

  8. 如需保存修改后的信息中心,请点击工具栏中的保存

创建变量

如需创建适用于特定信息中心微件的变量,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 信息中心页面:

    前往信息中心

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在信息中心工具栏中,点击 设置
  3. 变量部分中,点击添加变量
  4. 选择变量类型,然后填写对话框。

    如需创建基于标签的变量,请选择标签。如果您希望变量具有标签键和标签值,并且可以像过滤条件一样使用,请使用此选项。所有可能值的列表会根据信息中心中显示的时间序列数据动态派生。

    对于仅限值的变量,您有以下选项:

    • SQL:如果您希望 SQL 查询的结果生成所有可能值的列表,请使用此选项。

      输入一个或多个默认值,然后输入用于生成所有可能值列表的 SQL 查询。确保查询结果是一个包含一个列的表,该列的数据类型为字符串,并且表中的每一行都包含唯一的字符串值。

    • 自定义:如果您想同时指定可能值列表和默认值,请使用此选项。例如,您可以将 Values 字段设置为 prod, staging, dev,并将 Default value 设置为 prod

    • 文本输入:如果您想指定要作为默认值应用的值列表,请使用此选项。

  5. 输入变量名称。该名称会显示在信息中心的工具栏中。

  6. 点击完成,然后点击应用

  7. 将变量应用于日志面板微件以及使用 SQL、MQL 或 PromQL 配置的微件。如需了解详情,请参阅将变量应用于微件

  8. 如需保存修改后的信息中心,请点击工具栏中的保存

将变量应用于 widget

如需将变量应用于微件,必须修改微件使用的查询:

  • 对于使用 SQL、PromQL 或 MQL 查询的图表以及日志面板微件,您必须修改微件并修改查询。本部分介绍了如何进行这些修改。

  • 对于您使用菜单或直接过滤条件模式配置的图表,当您使用应用于图表菜单选择该 widget 时,Monitoring 会修改查询。

如需了解如何将基于标签的变量或仅值变量应用于 widget,请参阅以下部分:

创建过滤条件和变量

控制台

如需了解如何使用 Google Cloud 控制台创建固定的过滤条件和变量,请参阅以下文档:

API

如需定义固定的过滤条件和变量,请使用 dashboardFilters 数据结构。

  • 如需创建变量,请将 templateVariable 字段的值设置为变量的名称。如果您要创建固定的过滤条件,请省略此字段或将值设置为空字符串。
  • 如需创建固定的过滤条件或基于标签的变量,您必须指定 labelKey 字段。如果您想要仅包含值的变量,请省略此字段。
  • 为过滤条件或变量设置默认值。此字段的配置决定了用户能否从值菜单中选择确切的一个选项,还是可以选择多个值。

    • 如需设置单个默认值并限制用户只能在值菜单中选择一个选项,请将 valueType 字段设置为 STRING,并设置 stringValue 字段:
    "valueType": "STRING",
    "stringValue": "my-default-value",
    
    • 如需设置至少一个默认值并允许用户在值菜单中选择多个选项,请将 valueType 字段设置为 STRING_ARRAY,并设置 stringArrayValue 字段。在以下示例中,有三个默认值。
    "valueType": "STRING_ARRAY",
    "stringArrayValue": {
      "values": [ "a", "b", "c" ]
    },
    
  • 可选:如需指定仅值变量的所有可能值列表,请设置 stringArray 字段或 timeSeriesQuery 字段。如果您指定查询,则该查询必须是分析查询。

例如,请考虑以下 dashboardFilters 对象:

{
  "dashboardFilters": [
      {
        "labelKey": "zone"
        "stringValue": "us-central1-c",
        "valueType": "STRING",
        "filterType": "RESOURCE_LABEL"
      },
      {
        "labelKey": "instance_id",
        "stringValue": "3133577226154888113",
        "valueType": "STRING",
        "filterType": "RESOURCE_LABEL",
        "templateVariable": "my_label_based_variable"
      },
      {
        "filterType": "VALUE_ONLY",
        "templateVariable": "my_value_only_variable",
        timeSeriesQuery: {
          opsAnalyticsQuery: {
            sql: "
              SELECT log_name
              FROM `MY_TABLE`
              GROUP BY log_name
            ",
          }
        }
      }
    ],
  "displayName": "Illustrate Variables",
  ...
}

上一个 JSON 定义了一个固定的过滤条件和两个变量:

  • 已固定的过滤条件的标签键为 zone,该键会显示在工具栏上。valueTypestringValue 字段用于指定单个默认值。如需了解详情,请参阅 dashboardFilters 数据结构的 API 参考文档页面。

  • 基于标签的变量名为 my_label_based_variable,其标签键为 instance_id。此变量的默认值设为特定实例 ID。您还可以使用数组配置默认值。在工具栏上,过滤器显示为名称为 my_label_based_variable 的过滤器。

  • 仅包含值的变量名为 my_value_only_variable。此条目未指定默认值,因此系统会自动应用通配符运算符 (*)。此外,此变量还使用 SQL 查询生成该变量的可能值列表。

请注意,dashboardFilters 对象不会列出应用了该变量的微件。如需将变量应用于 widget,您可以修改 widget 的查询。

解引用变量的一般语法

对于所有 widget(SQL 定义的 widget 除外),请使用以下语法将变量应用于查询:

  • 如需应用基于标签的变量,并将标签键和标签值解析为查询语言的有效过滤表达式,请使用 ${my_label_based_variable}

  • 如需仅应用基于标签的变量的值,请使用 ${my_label_based_variable.value}。比较必须使用正则表达式。

  • 如需仅应用仅值变量的值,请使用 ${my_value_only_variable}。对于仅包含值的变量,请勿添加 .value 子句。比较必须使用正则表达式。

日志面板微件

如需将变量应用于日志面板微件,请更新“查询”窗格。 这些 widget 的语法遵循一般语法中指定的语法。

控制台

例如,以下查询使用正则表达式将 jsonPayload.message 字段的值与包含基于标签的变量值的字符串值进行比较:

jsonPayload.message=~"Connected to instance: ${my_label_based_variable.value}"

再举一个例子,假设有一个仅包含值的变量 value_only_severity_variable,并且在值菜单中选择了三个值:ERRORINFONOTICE。接下来,将以下代码添加到日志面板 widget 的查询窗格中:

severity =~ "${value_only_severity_variable}"

下图展示了呈现的形式:

severity =~ "^(ERROR|INFO|NOTICE)$"

API

例如,以下 JSON 展示了如何将基于标签的变量应用于日志面板微件的查询:

"logsPanel": {
  "filter": "${my_label_based_variable}",
  "resourceNames": [
    "projects/1234512345"
  ]
},

例如,以下查询使用正则表达式将 jsonPayload.message 字段的值与包含基于标签的变量值的字符串值进行比较:

"logsPanel": {
  "filter": "resource.type=\"gce_instance\"\n
             resource.labels.project_id=~\"${my_label_based_variable.value}\"\n",
  "resourceNames": [
    "projects/012345"
  ]
}

再举一个例子,假设有一个仅包含值的变量 value_only_severity_variable,并且菜单中选择了三个值:ERRORINFONOTICE。接下来,将以下代码添加到日志面板 widget 的查询窗格中:

"logsPanel": {
  "filter": "severity =~ \"${value_only_severity_variable}\"\n",
  ...
}

以下示例展示了日志面板 widget 执行的查询:

severity =~ "^(ERROR|INFO|NOTICE)$"

如果您为日志面板配置了查询,然后选择按钮打开 Logs Explorer,系统会在打开 Logs Explorer 之前解析变量。

下表说明了日志面板如何解析示例变量。如前所述,如果仅使用变量的值,则必须使用正则表达式作为比较运算符:

语法 已选
已解析的日志面板表达式
${my_label_based_variable} 12345 resource.labels."instance_id"="12345"

示例变量基于资源标签 instance_id

${my_label_based_variable} * ""
${my_label_based_variable.value}
${my_value_based_variable}
12345 12345
${my_label_based_variable.value}
${my_value_based_variable}
* .*

包含 PromQL 查询的图表

如需将基于标签的变量应用于包含 PromQL 查询的图表,请遵循常规语法中列出的指南。

控制台

例如,以下查询依赖于基于标签的变量 my_label_based_variable 解析为过滤条件表达式:

compute_googleapis_com:instance_cpu_utilization{
    monitored_resource="gce_instance", ${my_label_based_variable} }

您还可以修改查询,以便仅解析变量的值。以下示例使用正则表达式将基于标签的查询的值与 instance_id 进行比较:

compute_googleapis_com:instance_cpu_utilization{
    instance_id=~"${my_label_based_variable.value}"
}

如果您使用的是仅包含值的变量,请省略 .value 子句。例如,如需使用仅包含值的变量按可用区过滤,查询将包含如下内容:

zone=~"${my_value_only_variable}"

API

例如,以下 JSON 展示了一个查询,该查询依赖于基于标签的变量 my_label_based_variable 解析为过滤表达式:

"timeSeriesQuery": {
  "prometheusQuery": "avg_over_time(
    compute_googleapis_com:instance_cpu_utilization{
      monitored_resource=\"gce_instance\",
      ${my_label_based_variable}
      }[${__interval}])",
  "unitOverride": "",
  "outputFullDuration": false
},

您还可以修改查询,以便仅解析变量的值。以下示例使用正则表达式将基于标签的查询的值与 instance_id 进行比较:

"timeSeriesQuery": {
  "prometheusQuery": "avg_over_time(
    compute_googleapis_com:instance_cpu_utilization{
    monitored_resource=\"gce_instance\",
    instance_id=~\"${my_label_based_variable.value}\"
    }[${__interval}])",
  "unitOverride": "",
  "outputFullDuration": false
},

如果您使用的是仅包含值的变量,请省略 .value 子句。例如,如需使用仅包含值的变量按可用区过滤,查询将包含如下内容:

zone=~\"${my_value_only_variable}\"

下表说明了 PromQL 如何解析示例变量。如前所述,如果仅使用变量的值,则必须使用正则表达式作为比较运算符:

语法 已选
已解析的 PromQL 表达式
${my_label_based_variable} 12345 instance_id == '12345'

示例变量基于资源标签 instance_id

${my_label_based_variable} * noop_filter=~".*"
${my_label_based_variable.value}
${my_value_based_variable}
12345 12345
${my_label_based_variable.value}
${my_value_based_variable}
* .+

包含 SQL 查询的图表

如需将变量应用于 SQL 定义的 widget,请更新 WHERE 子句以引用变量的值。对于所有变量,请在变量名称前面加上“at”符号,例如:@variable_name。对于基于标签的变量,请将 .value 附加到变量名称 @my_label_based_variabe.value

对于 SQL 查询,变量替换依赖于 BigQuery,并且可以防止 SQL 注入。如需了解详情,请参阅运行参数化查询

控制台

由于 SQL 不会将通配符运算符解释为“任何值”,因此我们建议您在将变量应用于 SQL 查询时始终使用 IF 语句。以下示例展示了数据类型为字符串的仅值变量的用法:

WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)

如果变量的菜单选项允许用户选择多个值,您必须使用 CAST 函数将变量的值转换为 GoogleSQL 数据类型。以下查询展示了此语法:

IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE,
   severity IN UNNEST(@my_value_only_variable))

建议使用前面示例中显示的 IF 语句,因为 SQL 不会将通配符运算符解读为“任何值”。因此,如果您省略 IF 语句并选择通配符运算符,则查询结果将为空表。在第二个示例中,UNNEST 函数会将数组转换为表格。

如需添加格式正确的 WHERE 子句,请执行以下操作:

  1. 修改微件。
  2. 在工具栏中,选择插入变量过滤条件,然后选择要应用于 WHERE 子句的变量。
  3. 在打开的对话框中,查看生成的代码,然后点击复制并关闭
  4. 将复制的代码粘贴到查询窗格中,然后进行必要的修改。

    例如,假设您创建了一个名为 LogName 的变量,用于生成日志名称列表,并将结果输出到一个包含一个名为 log_name 的列的表中。接下来,您需要创建一个图表,选择插入变量过滤器,然后选择变量 LogName。系统会生成以下代码:

    WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
    

    在此示例中,您需要修改生成的代码,并将 LogName = 替换为 log_name =,以便执行表联接:

    WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
    
  5. 依次点击运行应用

  6. 如需保存修改后的信息中心,请点击工具栏中的保存

API

由于 SQL 不会将通配符运算符解释为“任何值”,因此我们建议您在将变量应用于 SQL 查询时始终使用 IF 语句。以下示例展示了数据类型为字符串的仅值变量的用法:

WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)

例如,以下是显示 SQL 查询结果的图表的部分 JSON 表示法。为了支持按日志名称过滤结果,添加了一个引用名为 LogName 的变量的 WHERE 子句:

"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
  "opsAnalyticsQuery": {
    "queryExecutionRules": {},
    "queryHandle": "",
    "sql": "SELECT\n timestamp, severity, resource.type, log_name, text_payload, proto_payload, json_payload\n
            FROM\n `my-project.global._Default._Default`\n
            WHERE \n IF (@LogName = \"*\", TRUE, log_name=@LogName)\nLIMIT 10000"
  }
}

变量 LogName 还会发出查询,以确定可能的日志名称列表:

"dashboardFilters": [
  {
    "filterType": "VALUE_ONLY",
    "templateVariable": "LogName",
    "valueType": "STRING",
    "timeSeriesQuery": {
      "opsAnalyticsQuery": {
        "savedQueryId": "",
        "sql": "SELECT log_name FROM `my-project.global._Default._Default` GROUP BY log_name LIMIT 1000",
        "queryHandle": ""
      },
      "unitOverride": "",
      "outputFullDuration": false
    }
  }
],

如果变量的菜单选项允许用户选择多个值,您必须使用 CAST 函数将变量的值转换为 GoogleSQL 数据类型。以下查询展示了此语法:

IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE,
   severity IN UNNEST(@my_value_only_variable))

建议使用前面示例中显示的 IF 语句,因为 SQL 不会将通配符运算符解读为“任何值”。因此,如果您省略 IF 语句并选择通配符运算符,则查询结果将为空表。在第二个示例中,UNNEST 函数会将数组转换为表格。

使用 MQL 查询的图表

如需将基于标签的变量应用于包含 MQL 查询的图表,请附加一个管道符 (|),然后按照一般语法中列出的指南操作。

当您使用菜单驱动的界面创建用于显示时间序列数据的图表时,系统会将您的选择转换为 Monitoring 过滤条件

控制台

例如,以下查询依赖于基于标签的变量 my_label_based_variable 解析为过滤条件表达式:

fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/utilization'
| every 1m
| ${my_label_based_variable}

您还可以修改查询,以便仅解析变量的值。以下示例使用正则表达式将基于标签的查询的值与 instance_id 进行比较:

fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/utilization'
| filter resource.instance_id=~'${my_label_based_variable.value}'
| group_by 1m, [value_utilization_mean: mean(value.utilization)]
| every 1m

如果您使用的是仅包含值的变量,请省略 .value 子句。例如,如需使用仅包含值的变量按可用区过滤,查询将包含如下内容:

resource.zone=~'${my_value_only_variable}'

API

例如,以下 JSON 展示了一个查询,该查询依赖于基于标签的变量 my_label_based_variable 解析为过滤表达式:

"timeSeriesQuery": {
  "timeSeriesQueryLanguage": "fetch gce_instance\n
    | metric 'compute.googleapis.com/instance/cpu/utilization'\n
    | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n
    | every 1m\n
    | ${my_label_based_variable}",
  "unitOverride": "",
  "outputFullDuration": false
},

您还可以修改查询,以便仅解析变量的值。以下示例使用正则表达式将基于标签的查询的值与 instance_id 进行比较:

"timeSeriesQuery": {
  "timeSeriesQueryLanguage": "fetch gce_instance\n
    | metric 'compute.googleapis.com/instance/cpu/utilization'\n
    | filter resource.instance_id=~'${my_label_based_variable.value}'\n
    | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n
    | every 1m\n",
  "unitOverride": "",
  "outputFullDuration": false
},

如果您使用的是仅包含值的变量,请省略 .value 子句。例如,如需使用仅包含值的变量按可用区过滤,查询将包含如下内容:

resource.zone=~'${my_value_only_variable}'

下表说明了 MQL 如何解析示例变量。如前所述,如果仅使用变量的值,则必须使用正则表达式作为比较运算符:

语法 已选
已解析的 MQL 表达式
${my_label_based_variable} 12345 filter (resource.instance_id == '12345')

示例变量基于资源标签 instance_id

${my_label_based_variable} * filter (true)
${my_label_based_variable.value}
${my_value_based_variable}
12345 12345
${my_label_based_variable.value}
${my_value_based_variable}
* .*

包含 Monitoring 过滤条件查询的图表

如需将基于标签的变量应用于查询形式为监控过滤条件的图表,请遵循一般语法中列出的指南。

控制台

如果您使用 Google Cloud 控制台创建图表,并且使用的是菜单驱动型界面,则可以使用变量的应用于图表字段,或通过修改微件并从过滤菜单中选择基于标签的变量,将基于标签的变量应用于图表。过滤菜单会列出所有基于标签的变量和所有标签键。

如需将基于值的变量应用于这些类型的图表,请执行以下操作:

  1. 修改图表。
  2. 在“查询”窗格中,点击添加过滤条件,然后选择一个标签键。例如,您可以选择可用区
  3. 菜单中,选择仅包含值的变量。
  4. 点击应用
  5. 如需保存修改后的信息中心,请点击工具栏中的保存

例如,以下 JSON 展示了一个查询,该查询依赖于基于标签的变量 my_label_based_variable 解析为过滤表达式:

metric.type="compute.googleapis.com/instance/cpu/utilization"
resource.type="gce_instance" ${my_label_based_variable}"

使用监控过滤条件形式的查询的微件无法按基于标签的变量中的值过滤时序;不过,您可以按仅包含值的变量进行过滤。例如,以下查询显示了按 zone 过滤的查询的 Filters 字段的值,该查询基于仅值变量的值进行过滤:

metric.type="compute.googleapis.com/instance/cpu/utilization"
resource.type="gce_instance"
resource.label."zone"=monitoring.regex.full_match(${my_value_only_variable})

API

例如,以下 JSON 展示了一个查询,该查询依赖于基于标签的变量 my_label_based_variable 解析为过滤表达式:

"timeSeriesQuery": {
  "timeSeriesFilter": {
    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
               resource.type=\"gce_instance\"
               ${my_label_based_variable} ",
    "aggregation": {
      "alignmentPeriod": "60s",
      "perSeriesAligner": "ALIGN_MEAN",
      "groupByFields": []
    }
  },
  "unitOverride": "",
  "outputFullDuration": false
},

使用监控过滤条件形式的查询的微件无法按基于标签的变量中的值过滤时序;不过,您可以按仅包含值的变量进行过滤。例如,以下查询会显示基于仅值变量的值按 zone 过滤的查询的 "filter" 字段:

"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
          resource.type=\"gce_instance\"
          resource.labels.\"zone\"=monitoring.regex.full_match(${my_value_only_variable})"

下表说明了 Monitoring 过滤器如何解析示例变量。如前所述,如果仅使用变量的值,则必须使用正则表达式作为比较运算符:

语法 已选
已解析的过滤条件表达式
${my_label_based_variable} 12345 resource.instance_id == "12345"

示例变量基于资源标签 instance_id

${my_label_based_variable} * 已忽略
${my_label_based_variable.value} 12345 不支持
${my_label_based_variable.value} * 不支持
${my_value_based_variable} 12345 "12345"
${my_value_based_variable} * ".*"

修改已固定的过滤条件或变量

如需暂时更改信息中心工具栏上显示的任何过滤条件的值,请点击过滤条件名称,然后输入值或从菜单中进行选择。

如果您的信息中心包含显示时间序列数据的表格,您可以使用单元格的 按此值过滤信息中心按钮,添加临时过滤条件或修改永久性过滤条件和变量。选中此按钮后,系统会应用新的临时过滤条件,或更新现有过滤条件或变量的值。当表格列的标签键与过滤条件或变量的标签键匹配时,系统会更新现有过滤条件和变量。

如需更改已固定的过滤条件或变量的配置,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 信息中心页面:

    前往信息中心

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在信息中心工具栏中,点击 设置
  3. 找到您要修改的过滤条件或变量,然后展开其定义。
  4. 完成修改后,点击应用
  5. 如需保存修改后的信息中心,请点击工具栏中的保存

删除已固定的过滤条件或变量

如需删除已固定的过滤条件或变量,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 信息中心页面:

    前往信息中心

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在信息中心工具栏中,点击 设置
  3. 找到要移除的过滤条件或变量,然后点击 删除
  4. 点击应用
  5. 如需保存修改后的信息中心,请点击工具栏中的保存

后续步骤