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

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

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

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

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

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

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

  • 对于显示时间序列数据的 widget(例如折线图),需遵循以下规则:

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

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

    • 如果微件指定了标签的值,则整个信息中心的过滤器不会更改显示的数据。

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

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

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

您可以添加多个信息中心范围内的过滤条件。这些过滤条件通过逻辑 AND 连接。

准备工作

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

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

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

创建永久过滤器

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

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

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

要创建永久过滤器,请执行以下操作:

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

    前往信息中心

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

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

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

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

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

    • 要将过滤器应用到信息中心内的部分微件,请按以下步骤操作:

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

      4. 点击应用

对微件应用永久过滤器

如需对某个 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 与模板变量相关联。当微件显示在信息中心内时,系统会解析模板变量的值。

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

日志面板

如需将日志面板配置为根据模板变量的值过滤显示内容,请将该变量添加到查询窗格。以下示例展示了一个按模板变量 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 定义 widget 时,查询只能提取模板变量的值。我们建议您仅在通过正则表达式定义的过滤条件中使用该值。为说明语法,以下代码展示了如何使用正则表达式确定标签 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. 点击应用

后续步骤