指标模型的组成部分

Cloud Monitoring 的监控数据模型由三个主要概念组成:

  • 受监控的资源类型
  • 指标类型
  • 时间序列

Cloud Monitoring 指标模型概要介绍了这些概念。如果您对这些概念不太熟悉,请先阅读该页面。

本页面详细介绍了指标类型、受监控的资源和时间序列以及一些相关概念。这些概念是所有 Monitoring 指标的基础。

如果您想执行以下任一操作,则应了解此页面上的信息:

如需详细了解这些概念及其与 Cloud Monitoring API 之间的关系,请参阅时间序列的结构,特别是在您计划使用 Monitoring API 或自定义指标时。

标签简述

受监控的资源类型和指标类型都支持标签,这使得数据可以在分析期间进行分类。例如:

  • 一个虚拟机的受监控资源类型可能包括机器位置以及与机器关联的项目 ID 的标签。记录有关受监控资源的信息时,该信息包括标签的值。

    除了为受监控的资源类型定义的标签之外,受监控的资源还可能具有系统或用户提供的元数据标签。

  • 对 API 请求进行计数的指标类型可能具有用于记录所调用方法的名称和请求状态的标签。

标签中详细介绍了标签的使用。

受监控的资源类型

受监控的资源是从中捕获指标数据的资源。根据最新统计,Cloud Monitoring 支持大约 100 种类型的受监控的资源。

受监控资源的类型包括通用节点和任务、Cloud Bigtable 中的表、Google Kubernetes Engine 中的架构组件、各种 AWS 资源等等。

每种类型的受监控资源都由称为受监控的资源描述符的数据结构正式描述。如需了解详情,请参阅受监控的资源描述符

每种受支持的受监控资源类型都在受监控的资源列表中有一个的条目。表中的条目是根据受监控的资源描述符创建的。本部分介绍在受监控的资源描述符中捕获的信息,以及该信息在列表中的显示方式。

受监控的资源类型示例

以下是一个 Cloud Storage 存储分区的列表条目

Cloud Storage 存储分区的列表。

表中的所有条目都包含以下信息:

  • 类型:条目中的标头列出受监控的资源类型;在示例中为 gcs_bucket
  • 显示名:受监控的资源的简短说明。
  • 说明:受监控的资源的详细说明。
  • 标签:用于对数据进行分类的一组维度。如需了解详情,请参阅标签

指标类型

指标类型描述了可以从受监控的资源中收集的测量结果。指标类型包括对要测量的内容以及如何解释测量结果的说明。根据最新统计,Cloud Monitoring 支持大约 1500 种类型的指标,并且您可以定义新类型。

指标类型包括 API 调用数量、磁盘使用情况统计信息、存储空间使用情况等。

每种指标类型都由称为指标描述符的数据结构正式描述。如需了解详情,请参阅指标描述符

每种内置指标类型都在指标列表中有一个条目。这些表中的条目是根据指标描述符创建的。本部分介绍了指标类型中捕获的信息,以及该信息在参考资料中的显示方式。

指标类型示例

下图显示了一个 Cloud Storage 指标类型的条目:

Cloud Storage 指标列表摘录。

指标类型显示在表格中,表格标头说明了信息的布局。本部分使用一个条目作为示例,但所有表格都使用相同的格式。

示例 Cloud Storage 表条目提供有关指标类型的以下信息:

  • 指标类型:指标类型的标识符,在示例中为 storage.googleapis.com/api/request_count

    前缀 storage.googleapis.com 是 Cloud Storage 的命名空间。与特定受监控资源类型关联的所有指标类型都使用相同的命名空间。

    表格中的条目中省略命名空间。

    Cloud Storage 指标表中列出了与 Cloud Storage 关联的所有指标类型。

  • 发布阶段:表示指标类型的发布阶段的彩色块,其值包括 Alpha、Beta、GA 等。

  • 显示名:描述指标类型的短字符串,示例中为“请求数量”。

  • 种类、类型、单位:此行提供用于解读数据值的信息:示例显示的是没有单位(即 1 值)的 64 位整数记录的增量指标。

    • 种类:此示例是一个增量指标,用于记录一段时间内的变化。也就是说,每个数据点都会记录自上一个数据点写入以来的 API 调用次数。如需详细了解种类,请参阅值类型和指标种类

    • 类型:此示例将其值记录为 64 位整数。如需详细了解类型,请参阅值类型和指标种类

    • 单位:此指标不需要明确的单位,因为它代表计数;数字 1 表示不需要单位。

  • 受监控的资源:此指标类型适用的受监控资源。此处的值与受监控的资源类型中描述的值相同。

  • 说明:有关所记录内容和记录方式的更多详细信息。设置为斜体,以将其与标签区分开。

  • 标签:用于对数据进行分类的一组维度。如需了解详情,请参阅标签

您只能访问属于当前 Google Cloud 项目或工作区的监控数据。例如,如果您请求来自 storage.googleapis.com/api/request_count 指标类型的数据,则只能看到项目中 Cloud Storage 存储分区的 API 数量。如果您的项目未使用任何 Cloud Storage 存储分区,则您不会获得这些存储分区的指标数据。

内置指标类型

内置指标类型由 Google Cloud 服务(包括 Cloud Monitoring)定义。这些指标类型描述了各种常见基础架构的标准测量结果,可供任何人使用。

指标列表显示了整个内置指标类型集。 外部指标列表页面上列出的指标属于内置指标的一个特殊子集,由 Cloud Monitoring 与开源项目或第三方提供商共同定义。通常,这些指标的前缀为 external.googleapis.com

自定义指标

在构建应用时,您可能想要衡量某些属性,但这些属性没有内置指标。借助 Cloud Monitoring,您可以定义自己的指标类型。这些指标类型称为自定义指标。 如果指标的前缀为 custom.googleapis.comexternal.googleapis.com/prometheus,那么此指标就是自定义指标。后者通常来自 Stackdriver Prometheus 辅助信息文件。如需了解详情,请参阅使用 Prometheus

例如,如果要跟踪您的商店销售的微件数量,您需要使用自定义指标。如需了解详情,请参阅使用自定义指标

标签

指标和受监控的资源类型的定义包括标签。标签是所收集数据的分类器;它们有助于对数据进行分类,以进行更深入的分析。例如:

  • Cloud Storage 指标类型 storage.googleapis.com/api/request_count 有两个标签:response_codemethod
  • Cloud Storage 受监控的资源类型 gcs_bucket 有三个标签:project_idbucket_namelocation。标签用于标识资源类型的特定实例。

因此,针对 Cloud Storage 存储分区的 API 请求收集的所有数据都根据所调用的方法、调用的响应代码、所涉及存储分区的名称、位置和项目进行分类。标签集因指标或受监控的资源类型而异;指标列表受监控的资源列表页面中记录了可用的标签。

通过在计算 API 调用次数时跟踪响应代码、方法名称和位置,您可以获取特定 API 方法的调用次数、任何方法的失败调用次数或特定方法在特定位置的失败调用次数。

标签的数量和每个标签可取的值的数量称为基数。基数是可能会为一对指标和受监控的资源类型收集的时间序列数量:标签的每个值组合都有一个时间序列。有关详情,请参阅基数:时间序列和标签

资源元数据标签

除了在指标和受监控的资源类型上定义的标签之外,Monitoring 还会在内部收集有关受监控资源的其他信息,并将此信息存储在系统元数据标签中。这些系统元数据标签可作为只读值供用户使用。某些资源还允许用户在 Google Cloud Console 中配置虚拟机实例等资源时创建自己的资源元数据标签。

系统和用户元数据标签统称为资源元数据标签。您可以像使用指标和受监控的资源类型上定义的标签一样,在时间序列过滤条件中使用这些标签。如需详细了解过滤,请参阅监控过滤条件

时间序列:来自受监控资源的数据

本部分讨论什么是监控数据以及其在时间序列中的组织方式。这就是指标模型的概念性组成部分成为具体工件的地方。

Cloud Monitoring 会针对指标和受监控的资源类型对存储一段时间的定期测量结果。测量结果收集到时间序列中,每个时间序列都包含以下内容:

  • 时间序列所属的指标类型的名称,以及指标标签的一个值组合。

  • 一系列(时间戳,值)对。值是测量值,时间戳是进行测量的时间。

  • 作为时间序列数据来源的受监控资源,以及资源标签的一个值组合。

系统会为生成数据的每个指标和资源标签组合创建一个时间序列。

格式示例:上述指标类型 storage.googleapis.com/api/request_count 可能对项目的 Cloud Storage 存储分区具有多个时间序列。以下展示了一些可能的时间序列。

在图示中,值 bucket: xxxx 表示受监控资源类型中 bucket_name 标签的值,response_codemethod 是指标类型中的标签。资源和指标标签中的每个值组合都有一个时间序列;图示中显示了一些示例:

显示指标中的多个时间序列的图片

Cloud Monitoring 不会记录“空”时间序列。在 Cloud Storage 存储分区示例中,如果您未使用特定存储分区或从未调用特定 API 方法,则不会为该标签收集数据,并且时间序列不会提及该存储分区。这意味着,如果您的项目完全没有特定指标的数据,您永远不会看到该指标类型。

指标类型并不表明指标的时间序列中可以找到哪些类型的受监控资源。对于 Cloud Storage,只有一种受监控的资源类型:gcs_bucket。某些指标类型与多个受监控的资源配对。

即时示例:如果您有工作区中的 Google Cloud 项目,则可以试用 API Explorer 微件(位于 Monitoring API 中的 timeSeries.list 方法的参考页面上)。下面的试试看按钮为 timeSeries.list 方法提供以下默认参数:

  • 名称projects/[PROJECT_ID]
  • 过滤条件metric.type="logging.googleapis.com/log_entry_count" resource.type="gce_instance"
  • interval.start_time2019-11-11T00:00:00Z
  • interval.end_time2019-11-11T00:20:00Z
  • 字段timeSeries.metric

尝试运行此示例时,必须将名称字段中的 [PROJECT_ID] 更改为您的项目 ID。

此示例假定您具有一个运行 Cloud Logging 代理的 Compute Engine 实例。受监控的资源类型为 gce_instance,指标类型为 logging.googleapis.com/log_entry_count。如果这些值不适用,您可以对其进行更改。

检索时间序列数据时,必须指定开始时间和结束时间。此示例使用 2019 年 11 月 11 日的一个时间段。但是,时间序列数据会存储 6 周,因此在运行请求之前,您可能还需要调整日期。

要运行该请求,请点击下面的按钮,根据需要调整参数,然后点击微件面板底部的执行按钮。

试试看!

如果请求成功,将返回与请求匹配的时间序列数据。返回内容类似于以下代码段:

{
  "timeSeries": [
    {
      "metric": {
        "labels": {
          "severity": "INFO",
          "log": "compute.googleapis.com/activity_log"
        },
        "type": "logging.googleapis.com/log_entry_count"
      },
      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "0",
          "zone": "us-central1",
          "project_id": "your-project-id"
        }
      },
      "metricKind": "DELTA",
      "valueType": "INT64",
      "points": [
        {
        "interval": {
            "startTime": "2019-10-29T13:53:00Z",
            "endTime": "2019-10-29T13:54:00Z"
          },
          "value": {
            "int64Value": "0"
          }
        },
        ...
      ]
    },
    ...
  ]
}

如需详细了解如何使用此微件(包括问题排查),请参阅 API Explorer

基数:时间序列和标签

每个时间序列都与特定的指标和受监控资源类型对相关联,但每个对都可以有多个时间序列。可能的时间序列数量由对的基数决定:标签数量和每个标签可取的值的数量。

例如,假设您有一个简单指标类型,该类型指定一个标签 color,以及一个受监控的资源类型标签 zone。您可以为 zonecolor 值的每个组合获取一个时间序列。

标签可采用的值的数量非常重要:

  • 如果只有两个可能的地区(“东部”和“西部”),则 zone 标签最多可以有两个不同的值。
  • 如果只有三种可能的颜色:“红色”,“绿色”和“蓝色”,则 color 标签最多可以有三个不同的值。

基数取决于标签及其值。

此指标的基数为 6 (3×2),但该指标生成的时间序列也可能少于此数量。例如,如果您从未获得来自“西部”地区的任何数据,则您永远不会有三个以上的时间序列。

当您为图表或其他用途请求指标时,指标基数是性能的关键因素。基数越高,查询响应时间就越长。

在设计自定义指标时,您也需要考虑基数,即确定标签集及其可能的值。每个指标类型最多只能有 10 个标签,但您还需要确保任何标签的可能取值是有限的。最好使用一小组离散的值(如“红色”、“绿色”和“蓝色”)。请勿使用粒度值(如时间戳)。自定义指标还有其他限制;如需了解详情,请参阅自定义指标