参加 2021 年 DevOps 现状问卷调查,塑造软件运维的未来,让我们了解您的想法。

Cloud Monitoring 简介

本页面简要介绍了 Cloud Monitoring 的工具和数据模型。使用 Cloud Monitoring,您可以回答如下重要问题:

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

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

Cloud Monitoring 概览

Cloud Monitoring 会收集您的服务和您使用的 Google Cloud 资源的测量结果。本部分简要介绍了 Cloud Monitoring 工具,您可以使用这些工具直观呈现和监控这些测量结果。

提醒政策和正常运行时间检查

如果您希望在服务的性能不符合您定义的条件时收到通知,请创建提醒政策。例如,您可以创建一条提醒政策,在来自服务的 HTTP 200 响应的延迟时间的第 90 百分位超过 100 毫秒时通知您的调用团队。

如果您希望在所部署的服务无法访问或未正确响应时收到通知,请配置正常运行时间检查,并附上 提醒政策

  • 正常运行时间检查会定期探测您的服务,并将该探测的成功和延迟时间存储为指标数据。
  • 提醒政策会监控正常运行时间检查的成功状态,并在探测失败时通知您。

图表和信息中心

如果您希望了解服务的当前负载,或者想要查看服务上个月的性能数据,请使用图表和信息中心工具。Cloud Monitoring 会根据服务和您的服务使用的资源为您填充信息中心;不过,您也可以创建自定义信息中心以便绘制数据图表、显示指标或显示文本。

您可以绘制和监控由 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 错误数行计数。

理解指标和时间序列

本部分介绍 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 虚拟机实例,那么每个虚拟机实例的磁盘利用率将是唯一的时间序列。您可以通过以下几种方法显示这些数据:

  • 您可以显示每个虚拟机实例的磁盘利用率。
  • 您可以按 state 标签根据虚拟机实例进行分组,然后显示平均磁盘利用率。以下屏幕截图显示了采用此配置的图表:

    按状态分组的平均磁盘使用率。

  • 您可以过滤 instance_id 标签的单个值的时间序列,以显示特定虚拟机实例的磁盘利用率。以下屏幕截图显示了采用此配置的图表:

    特定磁盘的已用磁盘百分比。

使用图表和信息中心查看时间序列数据

Cloud Monitoring 为您提供了多种方法来直观显示时间序列数据:

  • 预定义的信息中心:Cloud Monitoring 会根据 Google Cloud 项目使用的资源自动填充这些信息中心。

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

  • 自定义信息中心:这些是您创建的或安装的信息中心。自定义信息中心允许您定义要查看的数据以及查看数据的方式。在信息中心内,您可以添加微件,其中显示了图表、文本、量表或统计信息摘要。您可以使用 Dashboards APICloud Console 创建自定义信息中心。

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

创建图表时,您可以选择受监控的资源和要查看其时间序列数据的指标类型。完成这些选择后,您可以应用过滤条件来选择与某些标签值匹配的时间序列,也可以按标签对数据进行分组。 例如,您可以添加过滤条件,以便图表仅显示位于us-east-1d 地区的 Compute Engine 虚拟机实例的时间序列。

通过图表设置,您可以将当前数据与之前的数据进行比较,并创建显示多个指标的时间序列数据的图表。例如,以下屏幕截图中的图表显示了单个虚拟机读取和写入的字节数:

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

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

配置提醒

如果您创建提醒政策,则当单个时间序列满足特定条件或多个时间序列满足该条件时,您可以收到通知。提醒政策可以很简单,也可以很复杂,例如:

  • 如果对网域 example.com 的任何正常运行时间检查不满 3 分钟,请通知我。

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

  • 如果 Google Cloud 项目中的任何虚拟机实例的 CPU 负载超过阈值 0.6,请通知我。以下屏幕截图说明了此提醒政策:

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

您可以使用 Cloud Monitoring API 并使用 Google Cloud Console 创建提醒政策。在这两种情况下,您都可以在 Google Cloud Console 中使用提醒页面来管理和查看政策。

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

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

如果满足提醒政策的条件(例如,对网域 example.com 的每次正常运行时间检查不满三分钟),则 Cloud Monitoring 会打开突发事件并发出通知:

  • 突发事件是一种持久性记录,可在满足条件时存储受监控资源的相关信息。当条件不再满足时,突发事件会自动关闭。您可以使用提醒信息中心查看所有突发事件,包括打开和关闭的突发事件。
  • 您可以指定在配置提醒政策时要通知的人员。Monitoring 支持常见的通知渠道,包括电子邮件、Cloud Mobile App 以及 PagerDuty 或 Slack 等服务。如需查看通知渠道的完整列表,请参阅通知选项

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

验证您的服务是否可访问

您可以将 Cloud Monitoring 配置为以模拟用户如何访问服务的方式来定期探测您的服务。在配置正常运行时间检查时,至少位于三个不同位置的服务器会定期探测您的服务,然后记录探测成功和延迟时间。如果您希望在正常运行时间检查失败时收到通知,则可以创建提醒政策来监控 uptime_check/check_passed 指标,以便记录正常运行时间检查的结果。

Cloud Monitoring 提供了一个正常运行时间检查页面,其中显示了正常运行时间检查的摘要。您可以过滤显示内容,也可以使用嵌入式链接查看特定正常运行时间检查的详细信息。正常运行时间检查的详情视图会显示响应的成功或失败和响应的延迟时间,以及有关正常运行时间检查的详细信息:

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

如需详细了解此主题,请参阅管理正常运行时间检查

监控大型系统

本部分介绍的功能旨在帮助您监控大型系统。

使用资源组

如果您想以集合(而非单独)管理 Google Cloud 或 Amazon 资源,则可以创建资源组。资源组是动态集合资源,满足您提供的部分条件。在添加和移除资源时(例如,通过将 Compute Engine 虚拟机实例添加到 Cloud 项目),实例组中的成员资格会自动更改。以下是资源组的示例:

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

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

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

查看多个 Google Cloud 项目的指标

如果您希望通过一个界面查看并监控多个 Google Cloud 项目和 AWS 帐号的时间序列数据,则可以配置多项目指标范围

默认情况下,Google Cloud Console 中的 Cloud Monitoring 页面仅提供对存储在范围界定项目中的时间序列数据(即您使用 Cloud Console 项目选择器选择的项目)的时间序列数据的访问权限。范围界定项目存储您配置的提醒正常运行时间检查信息中心监控组

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

使用编程和图形界面

您可以使用 Google Cloud Console,来查看指标数据并创建和管理提醒政策、信息中心和正常运行时间检查。

您还可以直接使用 Cloud Monitoring API,来写入自定义指标数据并创建和管理提醒政策、信息中心和正常运行时间检查。通过 Cloud Monitoring API 参考文档页面(如 alertPolicies.list),您可以试验直接从文档页面进行 API 调用。

后续步骤