向自定义信息中心添加永久过滤条件

本文档介绍了如何向自定义信息中心添加信息中心级永久性过滤条件。永久过滤条件 - 让您无需修改每个微件即可修改信息中心显示的数据 - 具有默认状态,它们可以应用于整个信息中心或仅应用于特定 widget。信息中心工具栏会显示每个永久性过滤条件,以及一个菜单,您可以通过该菜单临时更改过滤条件的值。

如需定义信息中心上的默认数据呈现方式以及用于修改该显示内容的菜单驱动型选项,请添加永久过滤条件。例如,如果要查看所有地区的指标,同时也想查看特定地区的指标,请根据 zone 标签创建一个永久过滤条件。

您可以使用 Google Cloud 控制台或 Cloud Monitoring API 创建和应用永久过滤条件。本文档介绍了如何使用 Google Cloud 控制台。如需了解如何使用 Cloud Monitoring API,请参阅通过 API 创建和管理信息中心:信息中心过滤条件

如需了解如何添加和修改临时分组和过滤条件,请参阅向自定义信息中心添加临时过滤条件

信息中心过滤条件的运作方式

信息中心过滤条件会指定标签和值。信息中心显示的时序决定了可用于过滤的标签。widget 如何支持信息中心范围的过滤条件取决于 widget 显示的数据类型以及 widget 的配置:

  • 对于显示时间序列数据的微件(例如折线图),以下规则适用:

    • 如果 widget 显示的时序不支持过滤条件中的标签,则信息中心范围的过滤条件不会更改显示的数据。

      例如,如果您对标签 instance_id 添加了过滤条件,但信息中心上的图表未显示带有 instance_id 标签的数据,则该过滤条件不会更改显示的数据。

    • 如果该 widget 为某个标签指定了值,则信息中心范围的过滤条件不会更改显示的数据。

      例如,如果您对标签 instance_id 添加过滤条件,但信息中心上的图表包含基于 instance_id 标签的过滤条件,则信息中心范围的过滤条件不会更改显示的数据。

    • 否则,图表会过滤其显示的数据,使其仅显示满足信息中心范围过滤条件的时序。

  • 对于日志面板微件,基于资源标签的信息中心范围过滤条件会更新查询。例如,如果您添加信息中心范围的过滤条件 cluster_name: mycluster,则查询会更新为包含 resource.labels."cluster_name"="mycluster"

您可以添加多个信息中心范围内的过滤条件。这些过滤条件以逻辑“与”相连。

准备工作

如需获取使用 Google Cloud 控制台添加或修改永久性过滤条件所需的权限,请让管理员向您授予项目的 Monitoring Editor (roles/monitoring.editor) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

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

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

创建永久过滤器

在设计信息中心时,您可能会以多种方式查看信息中心显示的数据。例如,当信息中心显示虚拟机实例的指标时,您可能希望查看所有虚拟机的指标,以及查看特定可用区中虚拟机的指标。您可以为 zone 标签创建一个永久过滤条件,并将默认设置为所有可用区 *。查看信息中心时,您可以使用 zone 过滤条件上的菜单选择特定可用区。

您可以将永久过滤条件限定为特定 widget。设想一个场景,您希望并排查看两个不同区域中虚拟机的指标。您将构建两个图表集合,并为每个集合创建一个过滤器。默认配置满足原始目标。不过,在查看信息中心时,工具栏会列出变量和菜单,以便您可以选择不同的值。您可以使用这些菜单查看不同区域的数据。

仅适用于特定 widget 的永久过滤条件有时称为“模板变量”。创建此类型的过滤条件后,在向信息中心添加 widget 时,您还可以将过滤条件应用于该 widget。如需了解详情,请参阅对 widget 应用永久过滤条件

如需创建永久过滤条件,请执行以下操作:

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

    前往信息中心

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

  2. 在信息中心工具栏中,点击 设置,然后选择管理过滤条件
  3. 点击 标签,然后选择一个标签。例如,您可以选择 zone
  4. 点击 默认值,然后为该标签选择默认值。若要匹配所有值,请选择“*”。

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

  5. 执行下列其中一项操作:

    • 如需将过滤条件应用于信息中心上的所有微件,请选择应用到全部,然后选择应用

    • 如需将过滤器应用于信息中心内的部分微件,请执行以下操作:

      1. 清除应用到全部
      2. 变量名称字段中,输入变量的显示名称。
      3. 展开应用到图表菜单,选择过滤器适用的微件,然后选择确定

      4. 点击应用

对微件应用永久过滤器

如需对 widget 应用永久过滤条件,您必须将该 widget 与变量相关联:

  • 对于使用菜单配置的图表,您可以在创建或修改过滤条件时执行此关联。

  • 对于日志面板,请修改该 widget 并配置默认查询。请务必遵循应用永久过滤条件的语法部分中的指导。

  • 对于 MQL 或 PromQL 定义的图表和表格,请修改图表或表格,然后修改 MQL 或 PromQL。请务必遵循应用永久过滤条件的语法部分中的指导。

应用永久过滤条件的语法

例如,下面显示了信息中心的部分 JSON 表示法,其中定义了模板变量和信息中心范围的过滤条件:

{
  "dashboardFilters": [
      {
        "filterType": "RESOURCE_LABEL",
        "labelKey": "instance_id",
        "stringValue": "3133577226154888113",
        "templateVariable": "iid"
      },
      {
        "filterType": "RESOURCE_LABEL",
        "labelKey": "zone"
      }
    ],
  "displayName": "Illustrate Template Variables",
  ...

在所显示的 JSON 中,dashboardFilters 结构中的第一个条目代表一个名为 iid 的模板变量和一个带有标签键 zone 的信息中心范围的过滤条件。模板变量是标签 instance_id 的别名。

模板变量的数据结构不会列出应用该变量的 widget。正确的做法是,修改 widget 的查询以包含对变量的引用,从而将 widget 与模板变量相关联。当该 widget 在信息中心上显示时,系统会解析模板变量的值。

如需了解如何为日志面板和图表添加注释,请参阅以下部分:

日志面板

如需将日志面板配置为根据模板变量的值过滤显示内容,请将该变量添加到查询窗格。以下示例展示了按模板变量 iid 的值进行过滤的查询:

${iid}

在日志面板查询要显示的日志之前,模板变量已解析。在此示例中,如果模板变量的值为 "12345",则 ${iid} 会替换为语句 resource.labels."instance_id"="12345"

您还可以在查询中仅包含模板变量的值。 我们建议您仅在通过正则表达式定义的过滤条件中使用该值。例如,以下查询使用正则表达式来匹配具有包含所述字符串的 JSON 载荷的日志条目:

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

如果您为日志面板配置了查询,然后选择用于打开日志浏览器的按钮,则系统会先解析模板变量,然后再打开日志浏览器。

下表显示了日志面板如何解析模板变量:

语法 已选择的
已解决的日志面板表达式
${iid} 12345 resource.labels."instance_id"="12345"
${iid} * ""
${iid.value} 12345 12345
${iid.value} * .*

MQL 定义的图表和表格

使用 Monitoring Query Language (MQL) 配置图表时,请将竖线和变量附加到查询字符串中:

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

在图表查询要显示的时序之前,系统会解析模板变量。在此示例中,如果模板变量的值为 "12345",则 ${iid} 会替换为语句 filter (resource.instance_id == '12345')。此过滤条件匹配具有 resource.instance_id 标签的时间序列,并且仅当该标签的值恰好为 12345 时。

如需使用正则表达式过滤时序,请将查询配置为仅包含模板变量的值。为了说明语法,下面显示了如何使用正则表达式来确定标签 resource.instance_id 的值是否包含模板变量 iid 的值:

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

下表显示了如何针对 MQL 查询解析模板变量:

语法 已选择的
解析的 MQL 表达式
${iid} 12345 filter (resource.instance_id == '12345')
${iid} * filter (true)
${iid.value} 12345 12345
${iid.value} * .*

PromQL 定义的图表和表格

使用 PromQL 定义图表时,请将由大括号括起来的变量附加到查询字符串中:

compute_googleapis_com:instance_cpu_utilization {
    project_id="my-project", ${iid}
}

在图表查询要显示的时序之前,系统会解析模板变量。在此示例中,如果模板变量的值为 "12345",则 ${iid} 会替换为语句 instance_id == '12345'

与 MQL 类似,当您使用 PromQL 定义微件时,查询只能提取模板变量的值。我们建议您仅在通过正则表达式定义的过滤条件中使用该值。下文说明了如何使用正则表达式来确定标签 instance_id 的值是否包含模板变量 iid 的值:

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

下表显示了如何针对 PromQL 查询解析模板变量:

语法 已选择的
已解析的 PromQL 表达式
${iid} 12345 instance_id == '12345'
${iid} * noop_filter=~".*"
${iid.value} 12345 12345
${iid.value} * .+

使用时间序列过滤条件定义的图表和表格

使用时间序列过滤条件定义图表时,请将变量附加到过滤条件字符串:

"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
           resource.type=\"gce_instance\" ${iid}"

与 MQL 和 PromQL 定义的图表不同,您无法在时间序列过滤条件中使用模板变量的值。

下表显示了如何解析模板变量:

语法 已选择的
已解决的过滤条件表达式
${iid} 12345 resource.instance_id == "12345"
${iid} * 已忽略
${iid.value} 12345 不支持
${iid.value} * 不支持

修改永久过滤条件

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

如需更改永久过滤器的配置,请执行以下操作:

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

    前往信息中心

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

  2. 在信息中心工具栏中,点击 设置,然后选择管理过滤条件
  3. 找到要修改的过滤条件,然后使用菜单进行修改。
  4. 点击应用

删除永久性过滤条件

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

    前往信息中心

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

  2. 在信息中心工具栏中,点击 设置,然后选择管理过滤条件
  3. 找到要移除的过滤器,然后点击 删除
  4. 点击应用

后续步骤