Cloud Monitoring 简介

Cloud Monitoring 提供了一系列丰富的工具,可帮助您回答以下这些重要问题:

  • “服务的运行状况是否良好?”
  • “服务上的负载如何?”
  • “网站是否正常运行和响应?”
  • “服务的性能是否良好?”

Cloud Monitoring 会测量服务的关键方面,让您能够查看测量结果的图表,并在测量结果出现不可接受的值时收到通知。本文档简要介绍了这些功能。

Monitoring 技术

Cloud Monitoring 为您提供了四种监控:

  1. “黑盒监控”可让您以用户使用服务的方式来探测服务,即请求网页、连接到 TCP 端口或进行 REST API 调用。此类监控不提供有关服务内部的信息,服务被视为不透明实体。Cloud Monitoring 提供使用正常运行时间检查的此类监控。如需了解详情,请参阅使用正常运行时间检查监控服务

  2. “白盒监控”允许您监控对您而言重要的服务方面。您可以使用 OpenCensus 之类的库来对服务进行插桩处理以写入时间戳数据,也可以使用 Cloud Monitoring API 写入自定义时间序列数据。如需了解详情,请参阅使用自定义指标

  3. “灰盒监控”会收集服务运行的环境的状态信息。此类监控由 Google Cloud 产品和 Cloud Monitoring 第三方合作伙伴(如 Blue Medora)联合提供。例如:

    • Google Cloud 服务会生成指标,提供有关服务运行状况的信息。例如,Compute Engine 会报告每个虚拟机实例的 CPU 使用情况和 CPU 利用率,还会报告防火墙丢弃的字节数和数据包数。如需完整列表,请参阅 Google Cloud 指标
    • Cloud Monitoring 代理会收集系统和应用指标。安装在 Compute Engine 虚拟机实例上时,此代理会收集磁盘、CPU、网络和进程指标。安装在 Linux 上时,此代理还可以配置为从第三方插件收集指标。
    • 第三方插件提供有关 Linux 虚拟机的服务级层数据。此信息可能包括关于 Apache 或 Nginx 网络服务器的指标,或者关于 MongoDB 或 PostgresSQL 数据库的指标。
  4. “基于日志的指标”是从写入 Cloud Logging 的日志内容中收集的指标。预定义的基于日志的指标包括服务检测到的错误或收到的日志条目总数等。您还可以定义自定义的基于日志的指标。例如,您可以计算与给定查询匹配的日志条目数,或者跟踪匹配日志条目中的特定值。

受监控的资源、指标描述符和时间序列

本部分介绍 Cloud Monitoring 使用的术语。如需详细了解本部分中介绍的概念,请参阅时间序列的结构

受监控的资源

“受监控的资源”是指受监控的硬件或软件组件。受监控的资源的例子包括 Compute Engine 磁盘和实例,以及 App Engine 应用和实例。可用的受监控资源大约有 100 种。如需查看当前列表,请参阅受监控的资源列表

每种类型的受监控资源都由称为 MonitoredResourceDescriptor 数据结构正式描述。例如,以下是 gce_instance 资源的受监控资源描述符:

{
  "type": "gce_instance",
  "displayName": "G​C​E VM Instance",
  "description": "A virtual machine instance hosted in Compute Engine (G​C​E).",
  "name": "projects/PROJECT_ID/monitoredResourceDescriptors/gce_instance"
  "labels": [
    {
      "key": "project_id",
      "description": "The identifier of the Google Cloud 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."
    }
  ],
}

当服务将数据写入 Cloud Monitoring 时,被写入的数据始终引用受监控的资源。如果您查看该数据,则可以使用这些标签(表示为键值对)来确定生成数据的来源。例如,如果数据引用了 gce_instance 受监控资源,您可以通过查看标签 instance_id 的值来确定特定的虚拟机实例。

在 Cloud Monitoring 中,在创建图表或提醒政策时,您可以根据时间序列中标签的值对数据进行过滤和分组。例如,如果您的 Google Cloud 项目有多个 Compute Engine 虚拟机实例,您可以创建一个图表,其中显示每个实例的 CPU 利用率的时间序列。通过添加 instance_id 过滤条件,您可以仅显示某个特定虚拟机实例的 CPU 利用率。

指标描述符

发送到 Cloud Monitoring 的所有数据均由指标描述符进行描述。指标描述符是描述数据特性的定义。Cloud Monitoring 有大约 1500 个内置指标描述符;如需了解详情,请参阅指标列表

以下是一个指标描述符示例

    Metric type: agent.googleapis.com/disk/percent_used
    Display name: Disk utilization
    Metric kind: GAUGE
    Value type: DOUBLE
    Units: % (this symbol indicates a percentage which is a value between 0.0 and 100.0)
    Labels: device, state
    Monitored resource: gce_instance (this value refers to a Compute Engine VM instance)

本部分的其余内容将介绍指标描述符的一些关键特性。如需查看完整说明,请参阅 MetricDescriptor

  • 指标类型

    指标类型的外观类似于网址。对于 Google Cloud 服务和某些第三方集成,指标类型的第一部分标识时间序列的来源,其余部分描述了受监控的内容。在示例指标描述符中,agent.googleapis.com 将来源标识为 Cloud Monitoring 代理,disk/percent_used 则表明测量的是已用空间的百分比。对于用户定义的自定义指标,指标类型以 external.googleapis.comcustom.googleapis.com 为前缀。

    指标类型是全局唯一的。

    由于指标类型是全局唯一的,因此“指标描述符”和“指标类型”这两个词通常可以互换。在 Google Cloud Console 中,经常用“指标”一词代替“指标类型”

  • 显示名

    显示名是指标描述符的简短描述性名称。在本例中,显示名为“Disk utilization”。显示名(可能不是唯一的)用于在 Google Cloud Console 中简化数据显示。

  • 指标种类

    指标种类描述了一个时间序列中相邻测量值之间的关系:

    • GAUGE 指标存储测量对象在给定时刻的值。它可以类比为汽车上的速度计,用于记录当前的速度。

    • CUMULATIVE 指标存储测量对象在给定时刻的累计值。它可以类比为汽车上的里程表,用于记录行驶的总距离。

    • DELTA 指标存储测量对象在指定时间段内值的变动。它可以类比为一个每天重置的里程计,用于测量当天行驶的总距离或自上次重置以来行驶的总距离。另一个例子是股票汇总,它可以告诉您今天在市场中的收益或损失是多少。

    如需了解详情,请参阅 MetricKind

  • 值类型

    值类型描述了测量结果的数据类型。数值测量结果为 INT64DOUBLE。指标还可以具有 BOOLSTRINGDISTRIBUTION 类型的值。一个时间序列中的所有数据点都具有相同的值类型。

    如需详细了解值类型,请参阅 ValueType

  • 指标单位

    指标单位描述报告数据点的单位或度量。

    例如,By 是“字节”的标准表示法,kBy 为“千字节”。要记录已写入 1126 字节,如果单位是 kBy,则值为 1.126。可用的指标单位还包括适合数字信息的指标单位。例如,KiBy 为“1024 字节”。要记录已写入 1126 字节,如果单位是 KiBy,则值为 1.099

    如需详细了解指标单位,请参阅单位

  • 标签

    某些指标描述符会指定标签来扩充受监控资源中定义的标签。您可以在创建图表或提醒政策时,按标签值对数据进行过滤和分组。

    示例指标描述符包含 devicestate 的标签。device 标签引用磁盘标识符,标签 state 标识时间序列是否包含可用磁盘空间、已用磁盘空间或预留磁盘空间的值。如果您查看显示一个 Compute Engine 虚拟机实例的磁盘用量的数据,则表示您查看的是针对一个 Compute Engine 虚拟机实例写入的指标类型为 agent.googleapis.com/disk/percent_used 的数据。该数据包含五个标签;三个在受监控的资源描述符中指定,两个在指标描述符中定义。例如,通过使用过滤条件,您可以仅查看可用磁盘空间,也可以仅查看某个特定虚拟机的可用磁盘空间。

时间序列

时间序列是一系列测量结果以及这些测量结果的元数据。以下代码描述了一个时间序列的一部分:

{
  "timeSeries": [
    {
      "metric": {
        "labels": {
          "device": "sda1",
          "state": "free"
        },
        "type": "agent.googleapis.com/disk/percent_used"
      },
      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "2708613220420473591",
          "zone": "us-east1-b",
          "project_id": "sampleproject"
        }
      },
      "metricKind": "GAUGE",
      "valueType": "DOUBLE",
      "points": [
        {
          "interval": {
            "startTime": "2020-07-27T20:20:21.597143Z",
            "endTime": "2020-07-27T20:20:21.597143Z"
          },
          "value": {
            "doubleValue": 0.473005
          }
        },
        {
          "interval": {
            "startTime": "2020-07-27T20:19:21.597239Z",
            "endTime": "2020-07-27T20:19:21.597239Z"
          },
          "value": {
            "doubleValue": 0.473025
          }
        },
      ],
    },

每个时间序列都有一个唯一的标签值集合。如本例所示,时间序列包含指标标签和资源标签。标签的值显示时间序列是磁盘“sda1”的可用空间,该磁盘属于 ID 为 2708613220420473591 的虚拟机实例。该磁盘的可用空间还有另一个时间序列,磁盘的预留空间也有一个时间序列。此示例包含两个测量结果,其中每个测量结果都是一个由时间间隔和值表示的点。

查看时间序列数据

要查看时间序列数据,您可以使用 Metrics Explorer,也可以在信息中心上查看图表。

指标浏览器

Metrics Explorer 提供了一个菜单驱动界面,您可以在其中选择受监控的资源类型以及要查看其时间序列数据的指标类型。选择完成后,您可以应用过滤条件以仅显示特定时间序列。为方便您管理复杂的配置,Metrics Explorer 提供了一组聚合选项。如需详细了解这些选项,请参阅过滤和聚合

例如,以下屏幕截图展示了“us-central1-a”地区中所有虚拟机实例的磁盘的平均可用、已用和预留磁盘利用率:

显示磁盘利用率的 Metrics Explorer。

如果您想要查看趋势,可以配置 Metrics Explorer 以比较当前时间序列数据和以前的数据。

如果您想要对不同数据进行比较分析,可以创建显示多个指标描述符的时间序列数据的图表。例如,您可以在同一个图表上显示“流量”、“延迟时间”和“销量”数据。

如需了解详情,请参阅 Metrics Explorer

图表和信息中心

如需显示一组资源的相关信息,您可以使用信息中心。Cloud Monitoring 支持两种不同类型的信息中心:

  • 当您的服务在使用资源时,Cloud Monitoring 会自动创建预配置的信息中心。例如,如果您的服务是使用 Apache 网络服务器在 Google Cloud 上构建的,则 Cloud Monitoring 会自动为网络服务器、每个 Compute Engine 磁盘、防火墙和 Compute Engine 虚拟机实例创建信息中心。如果这些磁盘由快照备份,则还会自动创建其他信息中心。

    预配置的信息中心旨在显示最常查看的信息。例如,Compute Engine 虚拟机实例的信息中心包含地区、公共和专用 IP 地址的相关信息,以及显示 CPU 使用率和其他有趣数据的图表。

  • 自定义信息中心允许您创建想要查看的一组图表。要向信息中心添加图表,您可以使用信息中心内的添加图表功能,也可以使用 Metrics Explorer 创建图表并将其保存到信息中心。如果您使用 Google Cloud Console 创建信息中心,图表将以网格模式显示;但是,您可以使用 Dashboards API 创建更为复杂的配置。

如需详细了解图表和信息中心,请参阅使用信息中心和图表

监控时间序列数据

要在时间序列满足特定条件时收到通知,请创建提醒政策。您可以创建简单和复杂的提醒政策,例如:

  • “如果任何位置的正常运行时间检查失败并且持续超过 3 分钟,则通知我。”

  • “如果服务器上的 QPS 少于 15,并且两个不同 Google Cloud 位置中的 3 个或更多网络服务器的 HTTP 200 响应的第 90 百分位的响应延迟时间超过 100 毫秒,则通知待命团队。”

为了方便您管理和查看政策,Cloud Monitoring 提供了一个提醒信息中心。

本部分简要介绍提醒。如需了解详情,请参阅提醒简介

提醒政策组成部分

在 Cloud Monitoring 中,一个提醒政策有四个组成部分:

  • 提醒信息中心显示的“名称”,该名称会包含在发出的通知中。
  • 用于指定通知对象的“通知渠道”列表。Monitoring 为常见的通知渠道提供支持。您可以进行配置,以通过电子邮件、移动设备或 PagerDuty 等服务发送通知。如需查看完整列表,请参阅通知选项

  • 要添加到通知中的自定义“文档”。例如,您可以配置此内容以说明人工操作者应采取的行动。此字段支持使用参数化变量;如需了解详情,请参阅文档模板中的变量

  • 提醒政策评估的一个或多个“条件”。每个条件都会指定一个受监控的资源、一个指标类型以及满足该条件的情况。例如,一个条件可能会监控虚拟机实例的磁盘利用率,如果可用空间少于 10% 并且持续至少 5 分钟,则满足条件。

当满足提醒政策的条件时,将生成突发事件并发出通知。当条件不再满足时,突发事件会自动解决,并向指定通知渠道发送另一条通知。

示例:可用磁盘空间的提醒政策

假设您希望在满足以下条件时收到通知:地区“us-central1-a”中的虚拟机实例上名为 tmpfs 的任何磁盘的可用空间低于 35%。

您决定创建一个提醒政策,所以您执行以下操作:

  1. 在 Google Cloud Console 中,转到 Cloud Monitoring,然后点击提醒

  2. 点击创建政策以创建新的提醒政策。在打开的对话框中,输入名称,然后选择添加条件

  3. 在条件对话框中,您需要选择受监控的资源和指标类型,并应用过滤条件:

    选择资源类型。

    对于此提醒,您可以执行以下操作:

    1. 对于资源类型,选择 VM instance
    2. 对于指标,选择 Disk Utilization
    3. 添加地区、状态和磁盘过滤条件:

      • zone = "us-central1-a"
      • state = "free"
      • disk = "tmpfs"

    设置这些选项后,交互式图表会显示“us-central1-a”地区中每个“tmpfs”磁盘的可用磁盘空间:

    显示磁盘利用率的提醒政策。

    屏幕截图显示,在一个项目中,“us-central1-a”地区有两个“tmpfs”磁盘。

  4. 您希望在“任何磁盘的可用磁盘空间低于 35%”时满足条件。您需要在配置窗格中输入此信息:

    显示配置的条件。

    • 何时触发条件设置为每当违反时间序列时

      选择此值是因为您希望在任何时间序列出现低于 35% 的值时收到通知。还有其他可用选项。例如,您还可以将此字段设置为所有时间序列、特定数量的时间序列或某个百分比的时间序列。

    • 条件设置为低于阈值设置为 35%

      选择这些设置是因为您想要将时间序列的值与 35% 进行比较,并且希望在值低于该数值时收到通知。其他选项包括超过、不存在或值的变化速度。

    • For 字段设置为最新值 (most recent value)。

      选择最新值 (most recent value) 是因为您希望在可用磁盘空间值小于 35% 时立即收到通知。For 字段定义了时长。如果此字段设置为五分钟,则可用磁盘空间需要低于 35% 并且持续五分钟,系统才会发出通知。在这种情况下,时长字段的默认值设为一分钟,这一长度足以确保单个测量结果不会导致创建突发事件。

  5. 通过保存条件、添加通知渠道和添加文档来完成政策。

在此示例中,满足条件时,系统会创建突发事件并发送通知。

使用正常运行时间检查监控服务

Cloud Monitoring 提供使用正常运行时间检查的黑盒监控。如果您为某个服务配置了正常运行时间检查,那么会有位于至少三个不同位置的服务器定期探测该服务的响应能力。

正常运行时间检查会将响应成功和失败以及响应的延迟时间记录为时间序列。Cloud Monitoring 会为您的 Google Cloud 项目中的每个正常运行时间检查创建一个信息中心。在正常运行时间检查信息中心,您可以查看响应的延迟时间、响应历史记录以及有关检查的详细信息。您也可以通过使用 Metrics Explorer 创建图表或向自定义信息中心添加图表来查看这些数据。如需了解图表设置,请参阅创建正常运行时间延迟时间图表

您还可以将正常运行时间检查配置为与提醒政策关联。进行此配置后,提醒政策会在正常运行时间检查失败时通知您。如需了解详情,请参阅正常运行时间检查

Cloud Monitoring 提供了一个正常运行时间信息中心,其中显示了正常运行时间检查的摘要。您可以过滤显示内容,如以下屏幕截图所示,还可以使用嵌入的链接查看特定正常运行时间检查的详细信息:

包含过滤条件的正常运行时间检查概览示例

Monitoring 组

Cloud Monitoring 组是包含您指定的特定特性的 Google Cloud 或 AWS 资源的集合。组的示例包括“每个名称以特定字符串开头的 Compute Engine 实例”、“包含某些标记的所有资源”和“区域 A 或区域 B 中的每个 AWS 计算资源”。当您添加和移除资源时,群组中的成员资格会自动更改。

如果您配置正常运行时间检查以监控某个组,则正常运行时间检查会在探测发出时探测组中的每个成员。

当您添加或移除资源时,正常运行时间检查会自动调整其探测对象。在该正常运行时间检查的信息中心内,您可以查看每个组成员的延迟时间和检查通过的时间序列。您还可以将这些类型的正常运行时间检查配置为与提醒政策关联。

创建图表或提醒政策时,您可以按 Cloud Monitoring 组名称过滤时间序列,也可以按组名称对时间序列进行分组。

如需了解详情,请参阅使用资源组

监控工作区

Cloud Monitoring 工作区使您能够从一个位置查看和管理存储在多个 Google Cloud 项目中的时间序列数据。工作区存储图表、信息中心、正常运行时间检查以及您执行的其他配置操作。

工作区被设计为对大多数用户透明。在最简单且最常见的场景中,当您第一次在 Google Cloud Console 中访问 Monitoring 时,系统会自动为您的项目创建工作区。在这个最简单的场景中,工作区监控单个 Google Cloud 项目。

创建工作区后,您可以从工作区的设置页面向工作区添加其他 Google Cloud 项目。添加项目意味着您允许 Cloud Monitoring 读取存储在该项目中的时间序列数据。

如需查看概念性概览,请参阅工作区

如需以 Google 管理其服务的方式监控您的服务,请参阅服务监控中的概念。通过服务监控,您可以定义服务的性能目标、性能的衡量方法以及错误预算。您可以创建提醒政策,以便在错误预算的消耗速度快于预期速率时发出通知。

如果您使用的是 Google Kubernetes Engine,请参阅适用于 GKE 的 Google Cloud 的运维套件概览,其中介绍如何使用 Cloud Monitoring 和 Cloud Logging 来观察 GKE。

Monitoring 使用入门

本页面简要介绍了 Cloud Monitoring 的主要组件。

如需了解 Cloud Monitoring 的功能,请参阅适用于 Compute Engine 的 Cloud Monitoring 快速入门。该快速入门将指导您使用 Cloud Monitoring 控制台创建正常运行时间检查、提醒政策以及创建自定义信息中心。Cloud Monitoring 控制台提供菜单驱动的界面,在某些情况下还支持 Monitoring Query Language。MQL 是一个具有较强表达能力的文本界面,用于查询时间序列数据。

您还可以使用 Cloud Monitoring 的编程接口 Cloud Monitoring API 来创建和管理图表和信息中心、正常运行时间检查、提醒政策和组。此 API 支持基于过滤的传统语言和 MQL。如需了解详情,请参阅使用 Monitoring Query Language 创建图表使用 API 创建信息中心

如需详细了解 Monitoring,请参阅以下资源:

如需了解价格、配额和限制,请参阅资源

如需查看受监控的资源列表,请参阅受监控的资源列表

如需查看支持的指标的列表,请参阅指标列表

如需了解 Cloud Monitoring API,请参阅以下内容: