指标模型的组成部分

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

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

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

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

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

如需详细了解这些概念以及它们如何映射到 Cloud Monitoring API,请参阅时序的结构,尤其是在您计划使用 Monitoring API 或自定义指标时。

标签简述

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

  • 一个虚拟机的受监控资源类型可能包括机器位置以及与机器关联的项目 ID 的标签。记录受监控的资源的相关信息后,信息将包括标签的值。 除了为受监控的资源类型定义的标签之外,受监控的资源可能还具有系统或用户提供的元数据标签。
  • 对 API 请求进行计数的指标类型可能具有用于记录所调用方法的名称和请求状态的标签。

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

受监控的资源类型

受监控的资源是指从中捕获指标数据的资源。Cloud Monitoring 支持大约 270 种受监控的资源。

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

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

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

受监控的资源类型示例

下图显示了 Cloud Storage 存储桶的列表中的条目

Cloud Storage 存储桶的列表。

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

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

指标类型

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

指标类型包括 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 表示不需要单位。

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

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

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

通过 Cloud Monitoring API 访问监控数据时,您在 API 调用中添加一个 Google Cloud 项目。您只能检索该 Google Cloud 项目可见的数据。例如,如果您针对指标类型 storage.googleapis.com/api/request_count 请求项目数据,则不会看到项目中 Cloud Storage 存储分区的 API 计数。如果您的项目未使用任何 Cloud Storage 存储分区,则系统不会返回任何指标数据。

内置指标类型

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

指标列表会显示所有内置指标类型。 [外部指标列表][metrics-external] 页面中列出的指标是 Cloud Monitoring 与开源项目或第三方提供商合作定义的一个特殊的内置指标子集。通常,这些指标的前缀为 external.googleapis.com

自定义指标

在构建应用时,您可能想要衡量某些属性,而 Cloud Monitoring 不会针对这些属性构建这些指标。借助 Cloud Monitoring,您可以定义自己的指标类型,也可以从外部来源导入指标类型。这些指标类型称为自定义指标。如果指标的前缀为 custom.googleapis.comprometheus.googleapis.com,则该指标为自定义指标。后面的指标通常来自 Google Cloud Managed Service for 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 控制台中配置虚拟机实例等资源时创建自己的资源元数据标签。

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

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

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

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 方法的参考页面上。

  1. 打开 timeSeries.list 参考页面。

  2. 在标有 Try this method(尝试此方法)的窗格中,输入以下内容:

    • nameprojects/PROJECT_IDPROJECT_ID 替换为您的 Google Cloud 项目的 ID。
    • 过滤条件metric.type="logging.googleapis.com/log_entry_count" resource.type="gce_instance"
    • interval.start_time:输入开始时间,并确保该时间比结束时间早 20 分钟。
    • interval.end_time:输入结束时间。

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

{
  "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": "2024-03-29T13:53:00Z",
            "endTime": "2024-03-29T13:54:00Z"
          },
          "value": {
            "int64Value": "0"
          }
        },
        ...
      ]
    },
    ...
  ]
}

如需详细了解如何使用 API Explorer widget,包括问题排查,请参阅 APIs Explorer

基数:时序和标签

每个时序都与一对特定的指标和受监控的资源类型相关联。指标类型和受监控的资源类型都提供一些标签。在 Cloud Monitoring 中,这组标签的唯一值组合的数量是指标类型或受监控资源类型的基数。这些值称为“指标基数”和“资源基数”,可用于确定可能会生成多少个可能的时序(即“总基数”)。

指标、资源和总基数

假设您的指标类型指定了两个标签:colorzone。指标基数取决于这些标签具有的可能值的数量:

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

此指标的基数为 6 (3×2)。如果 color 标签有 1,000 个可能值,并且每种颜色可以出现在每个区域,则指标基数为 2,000 (1,000×2)。如果这些是受监控的资源类型(而不是指标类型)的标签,则相同的计算也适用。

此基数值是一个最大值,具体取决于可能的标签值的组合的数量。当实际并不出现标签值的所有组合时,实际的有效值可能会显著降低。例如,如果每种颜色仅出现在一个可用区中,而不是出现在两个可用区中,则您在正在运行的系统中看到的时序数上限为 1000。但是,有效基数的实用性取决于某些组合未显示的原因以及它们将来是否可能会出现。

基数取决于任何标签可以包含的值。

写入时序数据时,系统会按指标和受监控的资源类型对其进行分类。对于任意一对指标和资源类型,总基数是指标基数和资源基数的乘积。如果您的指标的基数为 1,000,资源基数为 100,并且如果每个标签值出现,那么您将有 100,000 个时序 (1,000×100)。

设计自己的指标时,请确保限制任何标签的可能值集。首选方法是使用一小组离散值(如“红色”、“绿色”和“蓝色”)。例如,如果您使用 8 位 RGB 值作为 color 标签,则可以有超过 1600 万个不同的值。请勿为指标标签使用时间戳、任何类型的唯一标识符、用户 ID、IP 地址、未参数化网址等高分辨率值。

查询性能和基数

当您发出数据查询时,请求的数据量是查询性能的最重要因素:一小时数据的查询通常比耗时六个月的查询更快。但是,请求返回的数据量也与请求中的时序数量密切相关。与另一个查询为极高基数指标检索两个月数据相比,一个查询检索两个月的数据可能要比另一个查询快,因为要检索的数据量非常大。

基数主要取决于标签可以包含的值的数量,而不是标签的数量。通常情况下,您无法控制资源的基数,例如 Pod 或虚拟机的数量随业务需求而变化时。但是,将指标提取到 Cloud Monitoring 时(而不是使用系统指标),您通常可以在一定程度上控制指标基数。例如,对于用户定义的自定义指标,您可以确定标签及其可能的值。如果要注入 Prometheus 指标,则可以使用重新添加标签功能来修改标签集并删除您不想注入的时序。

您可以使用 Cloud Monitoring 指标管理页面来识别可能存在基数问题的指标。如需查看指标管理页面,请执行以下操作:

  1. 在 Google Cloud 控制台的导航面板中,选择 Monitoring,然后选择  指标管理

    前往指标管理

  2. 在工具栏中,选择时间窗口。默认情况下,指标管理页面会显示有关前一天收集的指标的信息。

如需详细了解指标管理页面,请参阅查看和管理指标使用情况

如需了解 Cloud Monitoring 如何存储和检索时间序列数据的技术背景,请参阅 Monarch:Google 的内存中时序数据库

如需了解 Cloud Monitoring 中用户定义的指标的限制,请参阅用户定义的指标