时间序列的结构

本页面是对指标、时间序列和资源以及指标模型的组成部分中的讨论和示例的进一步深入探讨。要充分利用此页面,请先阅读以上这些页面。

本页面面向希望更深入地了解时间序列和 Cloud Monitoring 指标模型实现的读者,尤其是那些使用 Monitoring API 的读者。这包括自定义(用户定义)指标的用户。

  • 本页面将通用指标模型映射到 Cloud Monitoring API,因此它对于直接使用 Monitoring API 的使用者非常有用。主要与 Google Cloud Console 进行互动的用户可能不需要如此详细的信息。

  • 它对使用 OpenCensus 等第三方集成的用户也非常有用。当来自外部来源的数据通过集成到达 Cloud Monitoring 时,它会映射到 Cloud Monitoring 指标模型,并像任何其他指标数据一样进行处理。

如需详细了解如何收集您自己的指标,请参阅使用自定义指标

指标模型回顾

理解时间序列结构的先决条件是熟悉 Cloud Monitoring 使用的指标模型。指标、时间序列和资源中介绍了此模型。本部分简要回顾该节内容。

一般而言,监控数据记录在时间序列中。每个单独的时间序列都包含与此讨论相关的三项信息:

  • 一组带时间戳的数据点。
  • 对指标类型的引用,告知您如何解读数据点。
  • 对数据来源的受监控资源的引用。

    时间序列的结构

每个时间序列都包含来自单个物理来源或逻辑来源的测量结果。如果您的环境有数百个资源,则每个资源至少贡献一个时间序列。实际上,如果您的指标类型和受监控的资源类型具有标签,则可通过每个标签值组合获得一个时间序列;有关详情,请参阅基数

时间序列示例

以下是单个时间序列的完整实例(TimeSeries 类型):

    {
      "metric": {
        "labels": {
          "log": "kubelet",
          "severity": "DEFAULT"
        },
        "type": "logging.googleapis.com/log_entry_count"
      },
      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "5106847938295940291",
          "zone": "us-central1-a",
          "project_id": "a-gcp-project"
        }
      },
      "metricKind": "DELTA",
      "valueType": "INT64",
      "points": [
        {
          "interval": {
            "startTime": "2019-12-20T20:25:38Z",
            "endTime": "2019-12-20T20:26:38Z"
          },
          "value": {
            "int64Value": "20"
          }
        }
      ]
    }

大多数时间序列包含更多数据点;此时间序列的时间跨度为一分钟。所有时间序列都具有相同的结构,具有以下字段:

  • metric 字段记录

    • 此特定时间序列的指标标签值,表示标签值的一个组合。
    • 数据所关联的指标类型。指标类型指定可用的标签并描述数据点所代表的内容。

    如需详细了解此字段中的信息,请参阅指标

  • resource 字段记录:

    • 此特定时间序列的资源标签值,表示标签值的一个组合。
    • 从中收集数据的特定受监控的资源。

    受监控的资源中更详细地介绍了此字段中的信息。

  • metricKindvalueType 字段告诉您如何解读值。如需了解详情,请参阅指标种类和类型

  • points 字段是带时间戳的值的数组。指标类型告诉您值所代表的含义。时间序列示例有一个包含单个数据点的数组;在大多数时间序列中,数组会包含更多值。

有关检索时间序列数据的即时示例,请参阅时间序列:来自受监控资源的数据

本页面的其余部分将更详细地介绍 metricresource 字段中的信息。

受监控的资源

Cloud Monitoring 会从受监控的资源中收集数据并将其记录在时间序列中。创建的每个时间序列都包含从中收集数据的受监控资源的说明。

受监控的资源对象

每个时间序列将数据点的来源记录为受监控的资源对象(类型 MonitoredResource)。此对象嵌入时间序列中,并标识 Monitoring 已知的受监控资源类型的一个特定实例:它指向物理或逻辑实体。

例如,以下是描述一个特定 Compute Engine 实例的受监控资源对象,提取自示例时间序列:

      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "5106847938295940291",
          "zone": "us-central1-a",
          "project_id": "a-gcp-project"
        }
      }

此受监控资源的实例的类型为 gce_instance,它在项目 a-gcp-project 中有一个特定的 instance_id 值 (5106847938295940291)。该实例位于美国。另一个时间序列可能源自此受监控资源的不同实例。每个标签值组合都会标识从中收集数据的唯一资源。

不同的标签集对不同的资源有意义。资源的标签集取决于该类型的受监控资源描述符。

受监控的资源描述符

关于受监控的资源类型的信息保存在名为“受监控的资源描述符”(类型 MonitoredResourceDescriptor)的数据结构中。

受监控的资源描述符类似于记录结构的架构或规范。它不包含有关受监控资源的特定实例的数据;它告诉您如何描述特定类型的受监控资源。例如,以下是 gce_instance 资源的受监控资源描述符:

{
  "type": "gce_instance",
  "displayName": "GCE VM Instance",
  "description": "A virtual machine instance hosted in Google Compute Engine (GCE).",
  "name": "projects/[PROJECT_ID]/monitoredResourceDescriptors/gce_instance"
  "labels": [
    {
      "key": "project_id",
      "description": "The identifier of the GCP project associated with this resource, such as \"my-project\"."
    },
    {
      "key": "instance_id",
      "description": "The numeric VM instance identifier assigned by Compute Engine."
    },
    {
      "key": "zone",
      "description": "The Compute Engine zone in which the VM is running."
    }
  ],
}

将此受监控的资源描述符与受监控的资源对象中显示的 gce_instance 资源的特定实例进行比较。此描述符未描述某个特定的受监控的资源;相反,描述符指定标签,而标签值的每个组合都会标识一个特定的受监控的资源。

您可以使用 Cloud Monitoring API 在 Google Cloud 项目中检索受监控的资源描述符。例如,请参阅 monitoredResourceDescriptors.listmonitoredResourceDescriptors.get 方法的参考页面。

即时示例:如果您有 Google Cloud 项目,则可以使用 API Explorer 微件(位于 Monitoring API 中的 monitoredResourceDescriptors.get 方法的参考页面上)检索此描述符。

运行此示例时,必须将名称字段中的 [PROJECT_ID] 更改为您的项目 ID。然后点击微件面板底部的执行按钮。请求将返回上面的描述符。

试试看!

如需查看使用 Monitoring API 方法的更多示例,请参阅浏览指标和资源类型

根据最新统计,Cloud Monitoring 可以监控大约 100 种资源类型;如需了解详情,请参阅资源列表。该列表直接来自一组可用的受监控资源描述符。

指标

Cloud Monitoring 创建的每个时间序列都会记录一组数据点以及这些数据点的组织结构和含义的信息。

指标对象

每个时间序列都包含对指标对象中所记录数据说明的引用。

指标对象(类型 Metric)是一组信息,用于指示指标类型以及指标类型在此时间序列中的数据点的值。例如,下面是从时间序列示例中的时间序列中提取的指标对象:

    {
      "metric": {
        "labels": {
          "log": "kubelet",
          "severity": "DEFAULT"
        },
        "type": "logging.googleapis.com/log_entry_count"
      }

此对象告诉您时间序列包含 logging.googleapis.com/log_entry_count 指标类型的测量结果。标签值告诉您,此特定时间序列仅计算名为 kubelet 的日志文件中严重程度为 DEFAULT 的日志条目。

每个标签值组合都有一个时间序列,因此同一日志文件的 INFO 条目会以不同的时间序列显示。

在指标对象中收集的标签集在该指标类型的描述符中指定。

指标描述符

指标类型的相关信息保存在称为“指标描述符”(类型 MetricDescriptor)的数据结构中。

指标描述符是记录结构的架构或规范。它不包含特定指标的相关数据;相反,它会告诉您如何解读与特定指标类型相关的数据。

以下是指标类型 logging.googleapis.com/log_entry_count 的指标描述符:

{
  "type": "logging.googleapis.com/log_entry_count",
  "name": "projects/a-gcp-project/metricDescriptors/logging.googleapis.com/log_entry_count",
  "labels": [
    {
      "key": "log",
      "description": "Name of the log."
    },
    {
      "key": "severity",
      "description": "Severity of the log entry."
    }
  ],
  "metricKind": "DELTA",
  "valueType": "INT64",
  "unit": "1",
  "description": "Number of log entries that contributed to user-defined metrics.",
  "displayName": "Log entries",
  "metadata": {
    "launchStage": "GA",
    "samplePeriod": "60s"
  },
  "launchStage": "GA"
}

将此指标描述符与指标对象中显示的指标对象进行比较。描述符会告诉您标签值的含义,以及如何解读数据点的值。

您可以使用 Cloud Monitoring API 检索指标描述符。例如,请参阅 metricDescriptors.listmetricDescriptors.get 方法的参考页面。

即时示例:如果您有 Google Cloud 项目,则可以使用 API Explorer 微件(位于 Monitoring API 中的 metricDescriptors.get 方法的参考页面上)检索此描述符。

运行此示例时,必须将名称字段中的 [PROJECT_ID] 更改为您的项目 ID。然后点击微件面板底部的执行按钮。请求将返回上面的描述符。

试试看!

如需查看使用 Monitoring API 方法的更多示例,请参阅浏览指标和资源类型

指标描述符中的大多数字段都是简明直观的。可能需要进一步解释的两个指标是指标种类和值类型,指标种类和类型中对此进行了进一步说明。

根据最新统计,Cloud Monitoring 有大约 1,500 种内置指标;如需了解详情,请参阅指标列表。您还可以创建自己的指标描述符以捕获自定义指标。如需了解详情,请参阅使用自定义指标