使用 Cloud Monitoring 監控 Config Sync

本頁說明如何將指標從 Config Sync 傳送至 Cloud Monitoring。

Config Sync 會使用 OpenTelemetry 建立、記錄及匯出指標。本頁說明如何設定 Cloud Monitoring 指標。如要瞭解其他匯出指標的方式,請參閱「使用 Prometheus 監控 Config Sync」或「使用自訂監控功能監控 Config Sync」。

如要設定 Cloud Monitoring 指標,您必須擁有專案的 iam.serviceAccounts.setIamPolicy 權限。如需查看這些指標的範例,請參閱「範例偵錯程序」。您可以使用 Metrics Explorer透過 Cloud Monitoring API 查看這些指標。

授予 Cloud Monitoring 指標寫入權限

如要為 Config Sync 設定 Cloud Monitoring,您必須授予專案中服務帳戶的指標寫入權限。所需權限取決於是否已啟用 Workload Identity Federation for GKE。

透過 Workload Identity Federation for GKE 設定 Cloud Monitoring

如果已啟用 GKE 適用的工作負載身分聯盟,請執行下列指令,允許 Config Sync 傳送指標:

gcloud projects add-iam-policy-binding PROJECT_ID \
   --role=roles/monitoring.metricWriter \
   --member="serviceAccount:PROJECT_ID.svc.id.goog[config-management-monitoring/default]"

PROJECT_ID 替換為叢集的專案 ID。

設定 Cloud Monitoring,但不使用 Workload Identity Federation for GKE

如果未啟用 Workload Identity Federation for GKE,且 Config Sync 在Google Cloud 環境中執行,您可以使用 Compute Engine 預設服務帳戶。如果貴機構強制執行iam.automaticIamGrantsForDefaultServiceAccounts 機構政策限制,系統可能不會自動將專案的編輯者 (roles/editor) 角色授予這個服務帳戶。您必須執行下列指令,將專案的 Monitoring Metric Writer (roles/monitoring.metricWriter) IAM 角色授予 Compute Engine 預設服務帳戶:

gcloud projects add-iam-policy-binding PROJECT_ID \
   --role=roles/monitoring.metricWriter \
   --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com

更改下列內容:

  • PROJECT_ID:您的專案 ID。
  • PROJECT_NUMBER:您的專案編號。

Cloud Monitoring 中的預設指標清單

名稱 類型
api_duration_seconds 分布
apply_duration_seconds 分布
apply_operations_total 數量
declared_resources 最後的值
internal_errors_total 數量
last_sync_timestamp 最後的值
pipeline_error_observed 最後的值
reconciler_errors 最後的值
resource_fights_total 數量
reconcile_duration_seconds 分布
resource_group_total 最後的值
resource_count 最後的值
ready_resource_count 最後的值
resource_ns_count 最後的值
cluster_scoped_resource_count 最後的值
kcc_resource_count 度量圖

如要在 Cloud Monitoring 中修改指標許可清單,請按照操作說明使用 ConfigMap 修補 otel 收集器部署作業

Cloud Monitoring 的偵錯程序範例

以下 Cloud Monitoring 範例說明如何使用 OpenCensus 指標,在您使用 RootSync 和 RepoSync API 時,偵測及診斷與 Config Sync 相關的問題。

指標格式

在 Cloud Monitoring 中,指標的格式如下: custom.googleapis.com/opencensus/config_sync/METRIC

這項指標名稱由下列元件組成:

  • custom.googleapis.com:所有自訂指標都有這個前置字元
  • opencensus:新增這個前置字元是因為 Config Sync 使用 OpenCensus 程式庫
  • config_sync/:Config Sync 匯出至 Cloud Monitoring 的指標會包含這個前置字元
  • METRIC:要查詢的指標名稱

依對帳員查詢指標

RootSync 和 RepoSync 物件會使用高階指標進行檢測,讓您深入瞭解 Config Sync 在叢集上的運作方式。幾乎所有指標都會依據協調器名稱加上標記,因此您可以查看是否發生任何錯誤,並在 Cloud Monitoring 中設定相關快訊。

Reconciler 是以 Deployment 形式部署的 Pod。這個工具會將資訊清單從可靠資料來源同步至叢集。建立 RootSync 物件時,如果 RootSync 的名稱是 root-sync,Config Sync 會建立名為 root-reconciler-ROOT_SYNC_NAMEroot-reconciler 的協調器。建立 RepoSync 物件時,如果 RepoSync 的名稱是 repo-sync,Config Sync 會建立名為 ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTHns-reconciler-NAMESPACE 的協調器,其中 NAMESPACE 是您建立 RepoSync 物件時使用的命名空間。

下圖說明當可靠資料來源為 Git 存放區時,調解器 Pod 的運作方式:

對帳員流程

舉例來說,如要在使用 Cloud Monitoring 時依協調器名稱篩選,請完成下列工作:

  1. 前往 Google Cloud 控制台的「Monitoring」

    前往「Monioring」

  2. 在「Monitoring」導覽窗格中,按一下 「Metrics Explorer」

  3. 在「選取指標」下拉式清單中,新增:custom.googleapis.com/opencensus/config_sync/reconciler_errors

  4. 在「Filter」(篩選器) 下拉式清單中,選取「reconciler」(對帳工具)。系統隨即會顯示「篩選欄位」方塊。

  5. 在篩選器欄位方塊中,選取第一個欄位的「=」,然後在第二個欄位中選取調解員名稱 (例如 root-reconciler)。

  6. 按一下 [套用]

您現在可以查看 RootSync 物件的指標。

如需依特定資料類型篩選資料的更多操作說明,請參閱「篩選資料」。

依元件和狀態查詢 Config Sync 作業

啟用 RootSync 和 RepoSync API 後,調解器會處理從可靠來源匯入及取得來源,並同步至叢集。reconciler_errors 指標會依元件標示,方便您查看發生錯誤的位置。

舉例來說,如要在使用 Cloud Monitoring 時依元件篩選,請完成下列工作:

  1. 前往 Google Cloud 控制台的「Monitoring」

    前往「Monioring」

  2. 在「Monitoring」導覽窗格中,按一下 「Metrics Explorer」

  3. 在「選取指標」下拉式清單中,新增 custom.googleapis.com/opencensus/config_sync/reconciler_errors

  4. 在「Filter」(篩選器) 下拉式清單中,選取「component」(元件)。系統隨即會顯示「篩選欄位」方塊。

  5. 在篩選器欄位方塊中,依序選取第一個方塊的「=」和第二個方塊的「來源」

  6. 按一下 [套用]

您現在可以查看從調解工具的單一事實來源擷取資料時發生的錯誤。

您也可以查詢下列指標並依 status 標記篩選,藉此查看來源和同步程序本身的指標:

custom.googleapis.com/opencensus/config_sync/parser_duration_seconds
custom.googleapis.com/opencensus/config_sync/apply_duration_seconds
custom.googleapis.com/opencensus/config_sync/remediate_duration_seconds