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

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

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

准备工作

  1. 登录您的 Google 账号。

    如果您还没有 Google 账号,请注册新账号。

  2. 安装 Google Cloud CLI。

  3. 如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI。

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

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

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

  7. 启用 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
  8. 安装 Google Cloud CLI。

  9. 如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI。

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

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

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

  13. 启用 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 内。这可以包含在任何策略(canary 或 standard)中。如果您想按阶段配置分析,可以使用自定义 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 的一部分。

  • KEY和VALUE之间

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

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

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

    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。

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

后续步骤