监控预留使用量


本文档介绍了如何使用 Cloud Monitoring 监控 Compute Engine 可用区级资源的预留使用量。

Monitoring 会收集并存储 Google Cloud 服务(例如 Compute Engine)的性能信息。性能信息称为指标和时序。您可以访问 Compute Engine 预留的指标和时序来执行以下操作:

例如,这些方法可帮助您验证预留是否按计划使用或及时采取行动,以避免不必要的资源浪费或未使用的预留产生不必要的费用。

准备工作

  • 查看预留的要求限制
  • 启用 Monitoring API。

    启用 API

  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

所需的角色

如需获得创建 Monitoring 信息中心或提醒政策以监控预留使用量所需的权限,请让管理员向您授予项目的 Monitoring Admin (roles/monitoring.admin) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色包含创建 Monitoring 信息中心或提醒政策以监控预留使用量所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

创建 Monitoring 信息中心或提醒政策以监控预留使用量需要以下权限:

  • 创建信息中心:项目的 monitoring.dashboards.create 权限
  • 创建政策提醒:项目的 monitoring.alertPolicies.create 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

限制

使用 Monitoring 访问和查看预留的时序时,存在以下限制:

  • 创建预留后,其时序会在 30 分钟内可用。

  • 时序可用后,Monitoring 至少每 30 分钟更新一次。

  • 如果删除预留,则其时序也会被删除,并且无法恢复。

  • 您只能访问和查看在当前项目中创建的预留的时序。

如需详细了解 Monitoring 限制,请参阅 Cloud Monitoring 配额和限制

预留指标

创建 Monitoring 信息中心或提醒政策时,您必须先选择 Google Cloud 指标以衡量 Google Cloud 服务的性能。对于预留,您可以选择以下 Compute Engine 指标:

  • 预留:当前项目中每个预留的预留虚拟机 (VM) 实例的数量。

  • 已用:当前项目的每个预留中使用的虚拟机数量。

选择指标后,您可以进一步过滤预留指标的指标或对其进行分组。如需详细了解预留可用的过滤条件,请参阅本文档中的预留过滤条件

预留过滤条件

您可以使用 Monitoring 过滤条件对与一个或多个预留关联的时序数据进行分组或过滤。具体而言,在创建 Monitoring 信息中心或提醒政策时,您可以通过指定以下一个或多个标签来限制它们使用的时序数据:

选择器 标签名称 说明
metadata.system machine_type 在预留的虚拟机中指定的机器类型。
metadata.system name 预留的名称。
metadata.system state 预留的状态。您只能监控处于 ACTIVE 状态(即预留存在时)的预留。
metric reserved_resource_type 预留的可用区级资源的类型。您只能监控 instance 类型,该类型是一个虚拟机实例。
resource location 预留所在的可用区。
resource reservation_id 预留的标识符 (ID)。
resource resource_container 预留所在的项目的项目编号。您只能监控当前项目中创建的预留。

创建过滤条件时,您必须指定选择器和标签名称,后跟比较运算符,最后指定要过滤的值。例如,如果您希望您的查询按可用区 us-central1-a 过滤预留,请使用以下过滤条件:

resource.location = "us-central1-a"

如需确保您在过滤条件中指定的值与预留字段的值匹配,请查看预留的详细信息

监控预留使用量

如需监控预留的使用量,请选择本文档中指定的以下方法之一:

  • 创建信息中心 - 创建 Monitoring 信息中心,并向图表区域添加微件,以显示与预留使用量相关的时序数据。

    例如,如果您要验证虚拟机是否正确使用了预留或比较多个预留的使用趋势,则此方法非常有用。

  • 创建提醒政策 - 创建提醒政策,以便在与预留消耗相关的时序数据达到定义的阈值时发送提醒。

    例如,如果您希望在当前项目中使用的虚拟机数量低于特定比率或预留在特定时间内保持未使用,此方法会非常有用。

创建信息中心

您可以使用 Google Cloud 控制台(推荐)和 Monitoring API 创建 Monitoring 信息中心以及查看与预留使用量相关的时序。

定义如何显示 Monitoring 过滤条件的时序数据时,您必须使用以下方法之一:

  • 基本查询:此方法可用于快速配置信息中心微件的时序数据。

    例如,您可以使用基本查询来快速显示特定可用区中的哪些预留尚未完全用完。

  • MQL:此方法可用于检索、过滤和处理时序数据,以便为信息中心微件创建更复杂的配置。

    例如,您可以使用 Monitoring Query Language (MQL) 显示预留中已用虚拟机与预留虚拟机的比率。

基本查询

以下示例展示了如何创建带有折线图微件的 Monitoring 信息中心,以在 us-central1-a 可用区中显示已使用的预留。

控制台

如需使用基本查询创建 Monitoring 信息中心,请按以下步骤操作:

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

    转到“信息中心”

  2. 点击 创建信息中心

    新信息中心页面随即打开。

  3. 点击 添加微件

    此时会显示添加微件窗格。

  4. 点击一个可用的微件。例如,点击微件。

    此时会显示配置微件窗格。

  5. 点击选择指标

  6. 选择指标窗口中,执行以下操作:

    1. 输入 Reservation,然后选择预留

    2. 活跃指标类别列表中,再次选择预留

    3. 活跃指标列表中,选择其中一个可用指标。 例如,选择已使用

    4. 点击应用

  7. 如需按特定可用区过滤预留,请执行以下操作:

    1. 添加过滤条件列表中,选择一个可用的预留过滤条件。在本示例中,请选择位置

    2. 比较条件列表中,选择一个可用的运算符。在此示例中,请选择 =(等于)(默认)。

    3. 列表中,选择要用于过滤预留的可用区。 在本示例中,请选择 us-central1-a

  8. 点击应用

如需了解使用 Google Cloud 控制台自定义 Monitoring 信息中心的更多选项,请参阅创建和管理自定义信息中心

REST

如需使用基本查询创建 Monitoring 信息中心,请向 dashboards.create 方法发出 POST 请求。

POST https://monitoring.googleapis.com/v1/projects/PROJECT_ID/dashboards

{
  "displayName": "Consumed reservations in zone us-central1-a",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "title": "Reservation - Used for us-central1-a [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "FILTER",
                    "secondaryAggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_NONE"
                    }
                  }
                }
              }
            ],
            "timeshiftDuration": "0s",
            "yAxis": {
              "scale": "LINEAR"
            }
          }
        },
        "width": 6
      }
    ]
  }
}

请替换以下内容:

  • PROJECT_ID:当前项目的 ID。

  • FILTER:要用于您的信息中心的 Monitoring 过滤条件。例如,如需监控可用区 us-central1-a 中使用的预留,请指定以下内容:

    resource.type = 'compute.googleapis.com/Reservation' AND metric.type = 'compute.googleapis.com/reservation/used' AND resource.location = 'us-central1-a'
    

如需了解使用 Monitoring API 自定义 Monitoring 信息中心的更多选项,请参阅使用 API 创建和管理信息中心

MQL

以下示例展示了如何创建带有折线图微件的 Monitoring 信息中心,以显示预留中已用虚拟机与预留虚拟机的比率。

控制台

如需使用 MQL 创建 Monitoring 信息中心,请按以下步骤操作:

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

    转到“信息中心”

  2. 点击 创建信息中心

    新信息中心页面随即打开。

  3. 点击 添加微件

    此时会显示添加微件窗格。

  4. 点击一个可用的微件。例如,点击微件。

    此时会显示配置微件窗格。

  5. 点击 MQL

  6. 在查询编辑器中,输入 MQL 查询。例如,如需查看预留中已用虚拟机与预留虚拟机的比率,请指定以下内容:

    fetch compute.googleapis.com/Reservation
    | { metric compute.googleapis.com/reservation/used
        | group_by [metadata.system.name], sliding(1m), max(value.used)
      ; metric compute.googleapis.com/reservation/reserved
        | group_by [metadata.system.name], sliding(1m), max(value.reserved) }
    | ratio
    
  7. 点击运行查询

  8. 点击应用

如需了解使用 Google Cloud 控制台自定义 Monitoring 信息中心的更多选项,请参阅创建和管理自定义信息中心

REST

如需使用 MQL 创建 Monitoring 信息中心,请向 dashboards.create 方法发出 POST 请求。

POST https://monitoring.googleapis.com/v1/projects/PROJECT_ID/dashboards

{
  "displayName": "Consumed reservations in zone us-central1-a",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "title": "Reservation - Used for us-central1-a [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesQueryLanguage": "MQL_QUERY"
                }
              }
            ],
            "timeshiftDuration": "0s",
            "yAxis": {
              "scale": "LINEAR"
            }
          }
        },
        "width": 6,
        "xPos": 6
      }
    ]
  }
}

请替换以下内容:

  • PROJECT_ID:当前项目的项目 ID。

  • MQL_QUERY:用于折线图微件的 MQL 查询。例如,如需查看预留中已用虚拟机与预留虚拟机的比率,请指定以下内容:

    fetch compute.googleapis.com/Reservation
    | { metric compute.googleapis.com/reservation/used
     | group_by [metadata.system.name], sliding(1m), max(value.used)
    ; metric compute.googleapis.com/reservation/reserved
     | group_by [metadata.system.name], sliding(1m), max(value.reserved) }
    | ratio
    

如需了解使用 Monitoring API 自定义 Monitoring 信息中心的更多选项,请参阅使用 API 创建和管理信息中心

创建提醒政策

您可以使用 Google Cloud 控制台和 Monitoring API 创建 Monitoring 提醒政策,以接收有关当前项目中预留使用量的通知。

为提醒政策定义提醒条件时,您必须使用以下方法之一:

  • 基本查询:此方法可用于创建简单的提醒条件。

    例如,您可以使用基本查询来创建提醒条件,该条件会在第一次使用预留时触发。

  • MQL:此方法可用于检索、过滤和处理时序数据,以创建更复杂的提醒条件。

    例如,您可以使用 Monitoring Query Language (MQL) 创建一个提醒条件,使其在预留虚拟机与已用虚拟机比率达到特定阈值时触发。

基本查询

以下示例会创建一项提醒政策,以便在首次使用预留时发送提醒通知。具体而言,只要预留中的已用虚拟机数量大于 0,就会触发提醒。

控制台

如需使用基本查询创建 Monitoring 提醒政策,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,找到提醒

    转到提醒

  2. 点击 创建政策

    创建提醒政策页面随即打开。

  3. 点击 选择指标

    选择指标窗口随即出现。

  4. 选择指标窗口中,执行以下操作:

    1. 按资源或指标名称过滤字段中,输入 Reservation

    2. 如果预留指标显示在活跃资源列表中,请选择该指标。否则,请执行以下操作:

      1. 清除仅显示有效的资源和指标

        非活跃资源列表随即出现。

      2. 非活跃资源列表中,选择预留

    3. 活跃指标类别列表中,再次选择预留

      活跃指标列表随即出现。

    4. 活跃指标列表中,选择其中一个可用指标。

      例如,选择已使用

    5. 点击应用

  5. 点击 添加过滤条件

    添加过滤条件部分随即出现。

  6. 添加过滤条件部分中,执行以下操作:

    1. 标签列表中,选择本文档中指定的某个可用预留过滤条件

      例如,如需按名称过滤预留,请选择名称

    2. 比较列表中,选择一个可用的运算符。

      例如,选择 =(等于)(默认)。

    3. 列表中,选择要监控的预留的名称。

    4. 点击完成

  7. 点击下一步

    配置提醒触发器窗格随即出现。

  8. 条件类型部分中,选择以下选项之一:

    1. 如需在时序高于或低于特定值时触发条件,请选择阈值

    2. 如需在时序没有特定时间的数据时触发条件,请选择指标缺失

    3. 如需在时序预计在近期内超过阈值时触发条件,请选择预测

    例如,选择阈值(默认值)。

  9. 提醒触发器列表中,选择触发提醒的条件。

    例如,选择任何违反时序的情况(默认)。

  10. 阈值位置列表中,选择条件何时触发。

    例如,选择高于阈值

  11. 阈值字段中,输入条件的值。

    例如,输入 0

  12. 条件名称字段中,输入条件的名称。

    例如,输入 Reservation RESERVATION_NAME consumed.

    其中,RESERVATION_NAME 是您在先前步骤中指定的预留的名称。

  13. 点击下一步

    配置通知并最终确定提醒窗格随即出现。

  14. 点击使用通知渠道

  15. 通知渠道字段中,选择要接收突发事件通知的渠道。

    如果没有通知渠道,请点击管理通知渠道,然后按照步骤创建通知渠道。如需了解详情,请参阅创建和管理通知渠道

  16. 突发事件自动关闭持续时间字段中,选择突发事件自动关闭的时长。

    例如,选择 3 天

  17. 提醒政策名称字段中,输入提醒政策的名称。

    例如,输入 Alert: you started consuming reservation RESERVATION_NAME!

    其中,RESERVATION_NAME 是您在先前步骤中指定的预留的名称。

  18. 点击下一步

    系统会打开提醒条件的审核页面。

  19. 点击创建政策

    创建提醒政策可能需要几秒钟的时间。此操作会将您重定向到创建提醒政策页面。

如需详细了解使用 Google Cloud 控制台和基本查询创建提醒政策时可用的选项,请参阅创建基于指标的提醒政策

REST

如需使用基本查询创建 Monitoring 提醒政策,请向 projects.alertPolicies.create 方法发出 POST 请求。

POST https://monitoring.googleapis.com/v3/projects/PROJECT_ID/alertPolicies

{
  "displayName": "Alert: you started consuming reservation RESERVATION_NAME!",
  "conditions": [
    {
      "displayName": "Reservation RESERVATION_NAME consumed.",
      "conditionThreshold": {
        "filter": "FILTER",
        "aggregations": [
          {
            "alignmentPeriod": "300s",
            "crossSeriesReducer": "REDUCE_NONE",
            "perSeriesAligner": "ALIGN_MEAN"
          }
        ],
        "comparison": "COMPARISON_GT",
        "duration": "0s",
        "trigger": {
          "count": 1
        },
        "thresholdValue": 0
      }
    }
  ],
  "alertStrategy": {
    "autoClose": "AUTO_CLOSE_TIME"
  },
  "combiner": "OR",
  "enabled": true,
  "notificationChannels": [
    "projects/PROJECT_ID/notificationChannels/NOTIFICATION_CHANNEL"
  ]
}

请替换以下内容:

  • PROJECT_ID:当前项目的项目 ID。

  • RESERVATION_NAME:当前项目中现有预留的名称。

  • FILTER:要用于您的提醒政策的 Monitoring 过滤条件。例如,如需监控 RESERVATION_NAME 预留的 used 指标,请指定以下内容:

    resource.type = 'compute.googleapis.com/Reservation' AND metric.type = 'compute.googleapis.com/reservation/used' AND metadata.system.name = 'RESERVATION_NAME'
    
  • AUTO_CLOSE_TIME:突发事件自动关闭前的时间(以秒为单位)。该值必须在 0s604800s(7 天)之间。例如,输入 259200s(3 天)。

  • NOTIFICATION_CHANNEL:现有通知渠道的名称。如需设置通知渠道,请参阅创建和管理通知渠道

如需详细了解使用 Monitoring API 和基本查询创建提醒政策时可用的选项,请参阅使用 API 创建提醒政策

MQL

以下示例会创建一项提醒政策,以便在预留中已用虚拟机与预留虚拟机的比率超过 90% 时发送提醒通知。

控制台

如需使用 MQL 创建 Monitoring 提醒政策,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,找到提醒

    转到提醒

  2. 点击 创建政策

    创建提醒政策页面随即打开。

  3. 点击工具栏中的 MQL

    此时系统会显示修改查询窗格。

  4. 修改查询窗格中,输入 MQL 查询。

    例如,如需创建一个按名称对预留进行分组的查询,并在使用 90% 以上的预留时触发提醒条件,请输入以下查询:

    fetch compute.googleapis.com/Reservation
    | { metric compute.googleapis.com/reservation/used
        | group_by [metadata.system.name], sliding(1m), max(value.used)
      ; metric compute.googleapis.com/reservation/reserved
        | group_by [metadata.system.name], sliding(1m), max(value.reserved) }
    | ratio
    | every 1m
    | condition gt(val(), 0.9)
    
  5. 如需运行刚刚输入的查询,请点击运行查询

  6. 点击下一步

    配置提醒触发器窗格随即出现。

  7. 条件名称中,输入条件的名称。

    例如,输入 Over 90% of your reservations are consumed.

  8. 再次点击下一步

    配置通知并最终确定提醒窗格随即出现。

  9. 点击使用通知渠道

  10. 通知渠道字段中,选择要接收突发事件通知的渠道。

    如果没有通知渠道,请点击管理通知渠道,然后按照步骤创建通知渠道。如需了解详情,请参阅创建和管理通知渠道

  11. 突发事件自动关闭持续时间字段中,选择突发事件自动关闭的时长。

    例如,选择 3 天

  12. 提醒政策名称字段中,输入提醒政策的名称。

    例如,输入 Alert: over 90% of your reservations are consumed.

  13. 点击下一步

    系统会打开提醒条件的审核页面。

  14. 点击创建政策

    创建提醒政策可能需要几秒钟的时间。此操作会将您重定向到创建提醒政策页面。

如需详细了解如何使用 Google Cloud 控制台和 MQL 创建提醒政策,请参阅创建 MQL 提醒政策(控制台)

REST

如需使用 MQL 创建 Monitoring 提醒政策,请向 projects.alertPolicies.create 方法发出 POST 请求。

POST https://monitoring.googleapis.com/v3/projects/PROJECT_ID/alertPolicies

{
  "displayName": "Alert: over 90% of your reservations are consumed.",
  "conditions": [
    {
      "displayName": "Over 90% of your reservations are consumed.",
      "conditionMonitoringQueryLanguage": {
        "duration": "0s",
        "trigger": {
          "count": 1
        },
        "query": "MQL_QUERY"
      }
    }
  ],
  "alertStrategy": {
    "autoClose": "AUTO_CLOSE_TIME"
  },
  "combiner": "OR",
  "enabled": true,
  "notificationChannels": [
    "projects/PROJECT_ID/notificationChannels/NOTIFICATION_CHANNEL"
  ]
}

请替换以下内容:

  • PROJECT_ID:当前项目的项目 ID。

  • MQL_QUERY:用于提醒政策的 MQL 查询。例如,如需创建一个查询以跟踪当前项目的预留中已用虚拟机与预留虚拟机的比率超过 90% 的阈值,请指定以下内容:

    fetch compute.googleapis.com/Reservation
    | { metric compute.googleapis.com/reservation/used
     | group_by [metadata.system.name], sliding(1m), max(value.used)
    ; metric compute.googleapis.com/reservation/reserved
     | group_by [metadata.system.name], sliding(1m), max(value.reserved) }
    | ratio
    | every 1m
    | condition gt(val(), 0.9)
    
  • AUTO_CLOSE_TIME:突发事件自动关闭前的时间(以秒为单位)。该值必须在 0s604800s(7 天)之间。例如,输入 259200s(3 天)。

  • NOTIFICATION_CHANNEL:现有通知渠道的名称。如需设置通知渠道,请参阅创建和管理通知渠道

如需详细了解如何使用 Monitoring API 和 MQL 创建提醒政策,请参阅创建 MQL 提醒政策 (API)

问题排查

了解如何排查预留监控存在的问题

后续步骤