定義使用 Google Cloud Observability 的分析工作

本文說明如何使用 Google Cloud Observability 做為監控系統,設定交付管道的分析。

如果您使用其他監控供應商,則需要定義自訂分析,包括建立容器,以便從供應商擷取及評估指標和其他資料。

事前準備

  1. 登入 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 時所需的角色

    您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (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 時所需的角色

    您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色

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

必要的角色

如要取得建立及使用分析作業所需的權限,請要求管理員在專案帳戶中授予下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

為確保 Cloud Deploy 服務帳戶具備建立及使用自動化功能所需的權限,請要求管理員在專案中,將下列 IAM 角色授予 Cloud Deploy 服務帳戶:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

管理員或許也能透過自訂角色或其他預先定義的角色,授予 Cloud Deploy 服務帳戶必要權限。

在 Cloud Deploy 中設定分析

設定部署分析的步驟如下:

  1. 定義一或多項警告政策

  2. 在傳送管道中設定分析工作

  3. 執行管道來執行分析。

定義快訊政策

您可以定義快訊政策,接收來自 Google Cloud Observability 的指標。Google Cloud Observability 警告政策會說明監控資料符合指定條件時,您希望收到通知的時間和方式。

Cloud Deploy 分析功能會根據這些警示所指出的情況採取行動。

舉例來說,您可以在正式版應用程式中設定快訊政策,在 HTTP 回應延遲時間過長時傳送快訊,並根據該快訊,讓分析工作觸發repairRolloutRule自動化,以回溯版本。

舉例來說,您可以在部署至測試環境的應用程式上建立類似的警報政策,如果分析工作期間未觸發任何警報,該工作可以觸發promoteReleaseRule自動化,將版本升級至正式環境。

建立分析

如要為應用程式的發布管道建立分析工作,請在管道的設定中設定該分析,然後套用該設定檔。

設定分析工作

本節說明如何設定 Cloud Deploy 分析作業,以便與 Google Cloud Observability 搭配使用。

分析工作是在推送管道定義中設定,位於 strategy 節內。這可以是任何策略 (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 可能包含政策 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。

現在專案中已有推送管道和分析工作,建立版本時,分析工作就會成為管道的一部分。

後續步驟