定義使用 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 所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (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 所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (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 段落中,做為推送管道定義的一部分進行設定。這可以是任何策略、canary 或 standard 內。如要為每個階段設定分析,請使用自訂 Canary (strategy.canary.customCanaryDepolyment.phaseConfigs.phaseId.analysis)。

分析工作包含下列元素:

  • 時間長度

    這項時間長度會指定分析工作的執行時間。如果時間到期,且未偵測到 Google Cloud Observability 的快訊,系統會視為分析成功,並繼續推出。

  • 一或多項檢查,對應於監控系統中的警告政策

    每項檢查都包含下列項目:

    • 身分證件

    • 一或多項警告政策

    也就是參照一或多項 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 納入政策 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。

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

後續步驟