Cloud Monitoring 简介

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本文档简要介绍了 Cloud Monitoring,它是 Google Cloud 的运维套件的一部分。Cloud Monitoring 与大多数 Google Cloud 服务集成,会自动收集和存储有关这些服务的性能信息。还可以从第三方应用收集系统和应用指标。Cloud Monitoring 提供的数据可视化和分析工具可帮助您回答以下重要问题:

  • 我的服务的负载情况如何?
  • 我的网站响应正确吗?
  • 我的服务是否表现良好?

Cloud Monitoring 为其大部分服务提供了 Google Cloud Console 和 API 支持,而 Cloud Monitoring API 参考页面(例如页面 alertPolicies.list)可让您直接通过参考页面试用 API 调用。

本文档适用于需要监控服务或系统性能的开发者和系统管理员。

监控服务的负载

如需了解服务的当前负载,或查看服务过去一个月的性能数据,请使用图表和信息中心工具。您可以绘制和监控 Google Cloud 项目收集的任何(数字)指标数据,包括以下内容:

  • 由 Google Cloud 服务生成的系统指标。这些指标提供有关该服务如何运行的信息。例如,Compute Engine 针对每个虚拟机 (VM) 实例报告超过 25 个唯一指标。如需查看完整的指标列表,请参阅 Google Cloud 指标

  • Cloud Monitoring 代理收集的系统和应用指标。这些指标提供了有关在 Compute Engine 实例和 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行的系统资源和应用的其他信息。(可选)您可以配置代理以从第三方插件(例如 Apache 或 Nginx 网络服务器,或 MongoDB 或 PostgreSQL 数据库)收集指标。

  • 您的服务使用 Cloud Monitoring API 或 OpenCensus 等库编写的自定义指标

  • 基于日志的指标,用于收集写入 Cloud Logging 的日志的数字信息。Google 定义的基于日志的指标包括服务检测到的错误数和 Google Cloud 项目接收的日志条目总数。您还可以定义基于日志的指标。例如,您可以创建一个指标,对部署到 App Engine 的应用的 404 Not Found 错误数行计数。

如需直观呈现数据以查看趋势、识别离群值以及查看有关数据的其他详细信息,您可以使用以下工具:

  • Google Cloud 信息中心:Cloud Monitoring 会根据 Google Cloud 项目使用的资源自动创建这些信息中心。

    例如,当 Google Cloud 项目包含 Compute Engine 虚拟机实例时,Cloud Monitoring 会自动创建这些虚拟机实例和磁盘的信息中心。通过使用虚拟机实例信息中心,您可以查看内存和磁盘使用率等详细信息,确定 IP 地址,以及确定哪些虚拟机丢弃网络数据包。此信息中心还会显示有关 Cloud Monitoring 代理使用情况的信息,并提供检测建议。

  • 自定义信息中心:您可以创建或安装这些信息中心。自定义信息中心允许您定义要查看的数据以及查看数据的方式。 例如,您可以显示存储在 Google Cloud 项目中的指标数据、提醒政策和日志。您可以通过图表、刻度盘、统计信息摘要图表或表格来展示时序数据。信息中心还支持文本微件。您可以使用 信息中心 APIGoogle Cloud 控制台创建自定义信息中心。

  • 图表:您可以将图表添加到自定义信息中心,也可以使用 Metrics Explorer,这是一款图表工具,可用于快速绘制和探索时间序列数据。您可以将使用 Metrics Explorer 创建的图表保存到自定义信息中心。

创建图表时,您可以选择要查看的时间序列数据。例如,您可以配置图表以显示位于 us-east-1d 可用区的 Compute Engine 虚拟机实例的数据。

通过图表设置,您可以将当前数据与之前的数据进行比较,显示离群值和百分位,以及显示多个指标。例如,以下屏幕截图中的图表显示了单个虚拟机读取和写入的字节数:

显示磁盘读写字节数的 Metrics Explorer。

如需详细了解如何查看时间序列数据,请参阅使用信息中心和图表

监控网站可用性

如需监控网站是否响应,请配置正常运行时间检查。这些检查会定期模拟您的服务访问服务的方式,然后记录探测的成功和延迟情况。

为了查看拨测的相关信息,Cloud Monitoring 提供了一个信息中心,其中汇总了每项拨测的状态,并且提供了每项详细信息的信息中心。正常运行时间检查的详情视图会显示响应的成功或失败和响应的延迟时间,以及有关正常运行时间检查的详细信息:

正常运行时间检查的详情视图示例。

如需详细了解此主题,请参阅管理拨测

当服务表现不佳时收到通知

如需在服务表现不符合您定义的条件时收到通知,请创建提醒政策。例如,您可以创建一个提醒政策,在来自您服务的 HTTP 200 响应的第 90 个百分位数超过 100 毫秒时通知您的待命团队。同样,您也可以在正常运行时间检查失败时收到通知。

提醒政策允许您配置单个时序便可使条件满足,或者多个时序都必须满足条件才可使条件满足。提醒政策可以很简单,也可以很复杂。例如:

  • 对网域 example.com 进行任何正常运行时间检查至少失败三分钟时,请通知我。

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

  • 我的 Google Cloud 项目中任何虚拟机实例的 CPU 负载大于阈值 0.6 时通知我。

Cloud Monitoring 提供了一个信息中心,其中汇总了提醒政策的状态;对于每个政策,则提供了一个包含详细信息的信息中心。如以下屏幕截图所示,提醒的详细信息中心显示了受监控的数据、提醒阈值、通知渠道、突发事件列表以及通知中包含的任何用户定义的文档:

用于监控 CPU 负载的提醒政策。

条件是提醒政策的核心组件。条件描述了您希望 Cloud Monitoring 监控的系统的潜在问题。例如,您可以描述如下条件:

  • 对网域 example.com 的任何正常运行时间检查至少持续三分钟。
  • 任何受监控的虚拟机实例的可用空间都少于 10%。

当满足提醒政策的条件时(例如,对网域 example.com 进行的所有正常运行时间检查都失败 3 分钟时),Cloud Monitoring 会创建突发事件并发出通知。

突发事件是存储受监控资源相关信息的永久性记录。例如,监控 CPU 利用率的提醒政策会存储利用率满足条件的虚拟机的相关信息。当条件不再满足时,突发事件会自动关闭。您可以使用提醒信息中心查看所有突发事件,包括打开和关闭的突发事件。

您可以指定在配置提醒政策时要通知的人员。Monitoring 支持常见的通知渠道,包括电子邮件、Cloud Mobile App 以及 PagerDuty 或 Slack 等服务。如需查看通知渠道的完整列表,请参阅通知选项

如需了解有关提醒政策的详细信息,请参阅提醒简介

监控大型系统

本部分介绍如何以集合的形式管理资源,以及如何监控存储在多个 Google Cloud 项目中的指标。

以集合的形式管理资源

如需以集合的形式(而不是单独)管理资源,请创建资源组资源组是对符合您所提供的某些条件的资源的动态集合。在添加和移除资源时(例如,通过将 Compute Engine 虚拟机实例添加到 Cloud 项目),实例组中的成员资格会自动更改。以下是资源组的示例:

  • 名称以字符串 prod- 开头的 Compute Engine 实例。
  • 带有 test-cluster 标记的资源。
  • 区域 A 或区域 B 中的 Amazon EC2 实例。

定义资源组后,您可以将组当作单个资源进行监控。例如,您可以配置正常运行时间检查来监控资源组。对于图表和提醒政策,您还可以根据群组名称进行过滤。

如需详细了解此主题,请参阅使用资源组

监控多个 Cloud 项目的指标

如需通过一个界面查看和监控多个 Google Cloud 项目和 AWS 帐号的时序数据,请配置多项目指标范围

默认情况下,Google Cloud 控制台中的 Cloud Monitoring 页面仅提供对存储在范围项目中的时序的访问权限。限定范围的项目是您使用 Google Cloud Console 项目选择器选择的项目。范围界定项目存储您配置的提醒拨测信息中心监控组

范围界定项目还托管一个指标范围。指标范围定义了其指标对于范围界定项目可见的项目和帐号。您可以配置指标范围,以包含来自其他 Google Cloud 项目和来自 AWS 帐号的时间序列数据。如需了解如何修改指标范围,请参阅修改项目的 Cloud Monitoring 配置

Cloud Monitoring 数据模型

本部分介绍 Cloud Monitoring 数据模型:

  • 指标描述测量的内容。指标示例包括虚拟机的 CPU 利用率和已使用的磁盘百分比。

  • 时序是一种数据结构,包含指标的带时间戳的测量结果以及关于这些测量结果的来源和含义的信息。

例如,以下示例演示了一个时序:

  "timeSeries": [
    {
      "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
          }
        },
      ],
      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "2708613220420473591",
          "zone": "us-east1-b",
          "project_id": "sampleproject"
        }
      },
      "metric": {
        "labels": {
          "device": "sda1",
          "state": "free"
        },
        "type": "agent.googleapis.com/disk/percent_used"
      },
      "metricKind": "GAUGE",
      "valueType": "DOUBLE",

    },

以下是有关时序所含内容的一些详细信息:

  • points 数组包含带有时间戳的测量结果。

    在前面的示例中,points 数组包含两个值:

      "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
          }
        },
      ],
    

    如需了解值的含义,您需要参考时序中包含的其他数据以及这些数据的定义。

  • resource 字段描述了受监控的硬件或软件组件。在 Cloud Monitoring 中,硬件或软件组件称为受监控的资源。受监控资源的示例包括 Compute Engine 实例和 App Engine 应用。如需查看受监控资源的完整列表,请参阅受监控资源列表

    在前面的示例中,resource 字段如下所示:

      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "2708613220420473591",
          "zone": "us-east1-b",
          "project_id": "sampleproject"
        }
    
    • type 字段将受监控资源列为 gce_instance,这表示这些测量是在 Compute Engine 虚拟机实例上进行的。

    • labels 字段包含键值对,用于提供受监控资源的其他信息。对于 gce_instance 类型,这些标签标识了受监控的虚拟机实例。

  • metric 字段描述了要测量的内容。

    在前面的示例中,metric 字段如下所示:

      "metric": {
        "labels": {
          "device": "sda1",
          "state": "free"
        },
        "type": "agent.googleapis.com/disk/percent_used"
      },
    
    • 对于 Google 服务,type 字段指定服务和受监控的内容。在此示例中,Cloud Monitoring 代理是服务,用于测量所用磁盘的百分比。如果 type 字段以 customexternal 开头时,则该指标是自定义指标或第三方定义的指标。

    • labels 字段包含键值对,用于提供有关测量的其他信息。这些标签被定义为 MetricDescriptor(即用于定义测量数据属性的资料结构)的一部分。agent.googleapis.com/disk/percent_used 指标的 MetricDescriptor 包含 devicestate 标签。

  • metricKind 字段描述了时序中相邻测量之间的关系:

    • GAUGE 指标用于存储在给定时间测量的事物值,例如每小时温度记录。

    • CUMULATIVE 指标会存储给定时刻(例如车辆中的里程表)测量的事物累计值。

    • DELTA 指标会存储指定时间段内所测量事物值的变化,例如,显示股票收益或损失的股票摘要。

  • valueType 字段描述测量的数据类型:INT64DOUBLEBOOLSTRINGDISTRIBUTION

Cloud Monitoring 会针对资源和指标标签值的每个组合写入一个时序。您可以使用这些标签对时序进行分组和过滤。例如,当 Google Cloud 项目包含多个 Compute Engine 虚拟机实例时,每个虚拟机实例的 CPU 利用率就是唯一的时序。您可以通过以下几种方法显示这些数据:

  • 您可以显示每个虚拟机实例的 CPU 利用率。
  • 您可以通过过滤 instance_id 标签的单个值的时序,显示特定虚拟机实例的 CPU 利用率。
  • 您可以按 machine_type 标签按虚拟机实例分组,然后显示平均 CPU 利用率。以下屏幕截图显示了采用此配置的图表:

    平均 CPU 利用率(按机器类型分组)。

后续步骤