参与 2023 年 DevOps 现状问卷调查,塑造软件运营的未来,并让所有人都能听到您的声音。

Cloud Monitoring 概览

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

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

Cloud Monitoring 为其大部分服务提供了 Google Cloud 控制台和 API 支持,还支持 Cloud Monitoring API 参考文档页面(例如页面 alertPolicies.list),让您可以直接从参考页面试验 API 调用。

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

监控服务负载

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

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

  • Google Cloud 运维套件代理收集的系统和应用指标。这些指标可提供有关 Compute Engine 实例上运行的系统资源和应用的更多信息。(可选)您可以配置代理以从第三方插件(例如 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 的正常运行时间检查失败三分钟时),Cloud Monitoring 就会打开一个突发事件并发出通知。

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

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

如需详细了解提醒政策,请参阅提醒概览

监控大型系统

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

以集合形式管理资源

如需将资源作为集合而不是单独管理,请创建资源组资源组是符合您所提供的某些条件的动态资源集合。当您添加和移除资源时(例如通过向 Google Cloud 项目添加 Compute Engine 虚拟机实例),群组中的成员资格会自动发生变化。以下是资源组的示例:

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

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

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

监控多个 Google Cloud 项目的指标

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

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

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

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 利用率(按机器类型分组)。

后续步骤