定义使用 Google Cloud Observability 的分析作业

本文档介绍了如何在使用 Google Cloud Observability 作为监控系统的情况下,为交付流水线配置分析。

如果您使用其他监控提供方,则需要定义自定义分析,包括创建一个容器来接收和评估来自提供方的指标和其他数据。

准备工作

  1. 安装 Google Cloud CLI。

  2. 配置 gcloud CLI 以使用您的联合身份。

    如需了解详情,请参阅使用联合身份登录 gcloud CLI

  3. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  4. 验证您是否拥有完成本指南所需的权限

  5. 验证是否已为您的 Google Cloud 项目启用结算功能

  6. 启用 Compute Engine 和 Cloud Deploy API:

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com

所需的角色

如需获得创建和使用分析作业所需的权限,请让您的管理员为您授予项目账号的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

为确保 Cloud Deploy 服务账号具有创建和使用自动化所需的权限,请让您的管理员为 Cloud Deploy 服务账号授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您的管理员还可以通过自定义角色或其他预定义角色向 Cloud Deploy 服务账号授予所需的权限。

在 Cloud Deploy 中设置分析

配置部署分析包括以下步骤:

  1. 定义一项或多项提醒政策

  2. 在交付流水线中配置分析作业

  3. 运行流水线以运行分析。

定义提醒政策

您可以定义提醒政策,以便从 Google Cloud Observability 接收指标。Google Cloud Observability 提醒政策描述了当监控数据满足指定条件时,您希望在何时以及如何收到通知。

Cloud Deploy 分析会根据这些提醒所指示的情况采取行动。

例如,您可以为生产环境中的应用设置提醒政策,以便在 HTTP 响应延迟时间过长时发送提醒,并且您的分析作业可以根据该提醒触发repairRolloutRule自动化来回滚版本。

再举一个例子,您可以针对部署到临时环境的应用创建类似的提醒政策,如果在分析作业运行期间未触发任何提醒,该作业可以触发 promoteReleaseRule 自动化流程,将发布版本提升到生产环境。

创建分析

如需为应用的交付流水线创建分析作业,请在流水线的配置中配置该分析,然后应用该配置文件。

配置分析作业

本部分介绍了如何配置 Cloud Deploy 分析作业以与 Google Cloud Observability 搭配使用。

分析作业在交付流水线定义中配置,位于 strategy stanza 内。此参数可位于任何策略(canarystandard)内。如果您想按阶段配置分析,可以使用自定义 Canary (strategy.canary.customCanaryDepolyment.phaseConfigs.phaseId.analysis)。

分析作业包含以下元素:

  • 时长

    此时长指定了分析作业的运行时间。如果持续时间到期,并且未检测到来自 Google Cloud Observability 的任何提醒,则分析被视为成功,并且发布会继续进行。

  • 与监控系统中的提醒政策对应的一项或多项检查

    每次检查都包含以下内容:

    • ID

    • 一项或多项提醒政策

    也就是说,引用了一个或多个 Google Cloud Observability 提醒政策。

    • 用于标识特定提醒政策的一个或多个标签。 由于 Google Cloud Observability 提醒政策可以监控许多应用,因此我们可以使用这些标签将检查限制为一个或多个特定应用。

    请注意,您可以在此处使用系统参数作为标签的键。

以下是使用 standard 部署策略时配置分析作业的语法:


strategy:
  standard:
    analysis:
      duration: DURATION
      googleCloud:
        alertPolicyChecks:
        - id: CHECK_ID
          alertPolicies:
          - [ALERT_POLICY_ID]
          labels:
            [KEY: VALUE]

其中:

  • DURATION

    是指分析作业的运行时长(以秒为单位)。持续时间到期后,作业即完成。如果分析失败(容器返回非零退出代码),作业会在时长到期之前完成 (FAILED)。

  • CHECK_ID

    是分析中单个检查的 ID。每个 ID 在相应分析作业中都必须是唯一的。一个分析作业中可以包含一项或多项检查。

  • ALERT_POLICY_ID

    是您用于检查的 Google Cloud Observability 提醒政策的政策 ID。您可以通过运行 gcloud monitoring policies list 找到提醒政策 ID。您需要完全限定的 ID,其格式如下:

    projects/project-redacted/alertPolicies/01234567890123456789

    返回的标识符可能包含政策 ID 之后的 /conditions/13842666848149128276。请勿将其作为政策 ID 的一部分。

  • KEYVALUE之间

    是标签的键值对,用于仅考虑特定提醒。 例如,您可以使用标签,以便检查仅考虑特定工作负载上的提醒。

    您可以在此处使用系统参数作为值。

    以下示例使用了系统参数:

    labels:
     service_name: '${{render.metadata.cloud_run.service.name}}'
    

此配置会创建分析作业。虽然有多个检查,但此配置仅创建一个作业

如果配置的任何提醒政策均未发送任何提醒,则此作业会成功完成,并且发布会继续进行。如果任何政策触发了提醒,作业都会停止并处于 FAILED 状态,发布也会失败(处于 FAILED 状态,除非您选择忽略作业失败)。

应用交付流水线配置文件

如需创建包含分析作业的交付流水线,请使用以下命令应用配置文件:

gcloud deploy apply FILE \
       --region=REGION \
       --project=PROJECT_ID

替换以下内容:

  • FILE

    交付流水线配置文件的名称,clouddeploy.yaml 或您为其指定的任何名称。

  • REGION

    替换为您要创建交付流水线的区域。

  • PROJECT_ID

    您要在其中创建此交付流水线的项目的 ID。

现在,您的项目中有了一个交付流水线和一个分析作业,当您创建版本时,该作业将成为流水线的一部分。

后续步骤