Config Sync 指標

本頁說明可用於監控 Config Sync 資源的 OpenTelemetry 指標。

Config Sync 收集指標的方式

Config Sync 會使用 OpenCensus 建立及記錄指標,並使用 OpenTelemetry 將指標匯出至 PrometheusCloud Monitoring。您也可以將 OpenTelemetry 指標匯出至自訂監控系統。下列指南說明如何匯出指標:

根據預設,Config Sync 會建立名為 otel-collector 的 ConfigMap,用於設定 OpenTelemetry Collector。otel-collector 部署作業會在 config-management-monitoring 命名空間中執行。

建立 otel-collector ConfigMap 會設定 prometheus 匯出工具,該工具會公開指標端點供 Prometheus 掃描。

在 GKE 或其他已設定 Google Cloud 憑證的 Kubernetes 環境中執行 Config Sync 時,Config Sync 會建立名為 otel-collector-google-cloud 的 ConfigMap。otel-collector-google-cloud 會覆寫 otel-collector ConfigMap 中的設定。Config Sync 會還原對 otel-collectorotel-collector-google-cloud ConfigMap 所做的任何變更。

建立 otel-collector-google-cloud ConfigMap 時,也會新增 cloudmonitoring 匯出工具 (匯出至 Cloud Monitoring) 和 kubernetes 匯出工具 (匯出至 Google 內部指標服務)。kubernetes匯出工具會將選取的匿名指標傳送給 Google,協助改善 Config Sync。

Cloud Monitoring 會將您傳送的指標儲存在Google Cloud 專案中。cloudmonitoringkubernetes 匯出工具使用相同的Google Cloud 服務帳戶,該帳戶需要 IAM 權限才能寫入 Cloud Monitoring。如要設定這些權限,請參閱授予 Cloud Monitoring 指標寫入權限

OpenTelemetry 指標

Config Sync 和 Resource Group Controller 會使用 OpenCensus 收集下列指標,並透過 OpenTelemetry Collector 提供這些指標。「標記」欄會列出適用於各項指標的 Config Sync 專屬標記。附有標籤的指標代表多項評估結果,每個標籤值組合各有一項。

Config Sync 指標

名稱 類型 標記 說明
api_duration_seconds 分布 作業、狀態 API 伺服器呼叫的延遲時間分布。
apply_duration_seconds 分布 狀態 將從可靠資料來源宣告的資源套用至叢集的延遲分佈情形。
apply_operations_total 數量 運作、狀態、控制器 為將資源從真實來源同步至叢集而執行的作業總數。
declared_resources 最後的值 從 Git 剖析的已宣告資源數量。
internal_errors_total 數量 來源 Config Sync 遇到的內部錯誤總數。如果沒有發生內部錯誤,指標可能不會顯示在查詢結果中。
last_sync_timestamp 最後的值 狀態 最近一次從 Git 同步處理的時間戳記。
parser_duration_seconds 分布 狀態、觸發條件、來源 從真實來源同步到叢集所涉及不同階段的延遲時間分配。
pipeline_error_observed 最後的值 名稱、協調器、元件 RootSync 和 RepoSync 自訂資源的狀態。值為 1 表示失敗。
reconcile_duration_seconds 分布 狀態 由協調器管理員處理的協調事件延遲分佈情形。
reconciler_errors 最後的值 component、errorclass 將資源從真實來源同步至叢集時發生的錯誤數。
remediate_duration_seconds 分布 狀態 補救措施協調事件的延遲時間分布情形。
resource_conflicts_total 數量 快取資源與叢集資源不符,導致的資源衝突總數。如果沒有發生資源衝突,指標可能不會顯示在查詢結果中。
resource_fights_total 數量 同步頻率過高的資源總數。如果結果大於零,表示有問題。詳情請參閱「KNV2005:ResourceFightWarning」。如果沒有發生資源爭用,指標可能不會出現在查詢結果中。

資源群組控制器指標

Resource Group Controller 是 Config Sync 中的元件,可追蹤受管理資源,並檢查各項資源是否已準備就緒或完成協調。可用的指標如下:

名稱 類型 標記 說明
rg_reconcile_duration_seconds 分布 stallreason 調解 ResourceGroup CR 所需時間的分布情形
resource_group_total 最後的值 目前 ResourceGroup CR 的數量
resource_count 最後的值 resourcegroup ResourceGroup 追蹤的資源總數
ready_resource_count 最後的值 resourcegroup ResourceGroup 中就緒的資源總數
resource_ns_count 最後的值 resourcegroup ResourceGroup 中資源使用的命名空間數量
cluster_scoped_resource_count 最後的值 resourcegroup ResourceGroup 中的叢集範圍內資源數量
crd_count 最後的值 resourcegroup ResourceGroup 中的 CRD 數量
kcc_resource_count 最後的值 resourcegroup ResourceGroup 中的 KCC 資源總數
pipeline_error_observed 最後的值 名稱、協調器、元件 RootSync 和 RepoSync 自訂資源的狀態。值為 1 表示失敗。

Config Sync 指標標籤

指標標籤可用於匯總 Cloud Monitoring 和 Prometheus 中的指標資料。您可以在 Monitoring 主控台的「Group By」(依據分組) 下拉式清單中選取這些項目。

如要進一步瞭解 Cloud Monitoring 標籤和 Prometheus 指標標籤,請參閱「指標模型元件」和「Prometheus 資料模型」。

指標標籤

使用 Cloud Monitoring 和 Prometheus 監控時,您會看到 Config Sync 和 Resource Group Controller 指標,這些指標會使用下列標籤。

名稱 說明
operation create、patch、update、delete 執行的作業類型
status 成功、錯誤 作業的執行狀態
reconciler rootsync、reposync Reconciler 的類型
source 剖析器、差異器、修復工具 內部錯誤的來源
trigger 重試、watchUpdate、managementConflict、resync、reimport 對帳事件的觸發條件
name 對帳員姓名 對帳員姓名
component 剖析、來源、同步、算繪、就緒 元件名稱 / 目前對帳階段
container 協調器、git-sync 容器名稱
resource CPU、記憶體 資源類型
controller 套用者、修復者 根或命名空間調解器中的控制器名稱
type 任何 Kubernetes 資源,例如 ClusterRole、Namespace、NetworkPolicy、Role 等。 Kubernetes API 的種類
commit ---- 最近一次同步處理的修訂版本雜湊

資源標籤

傳送至 Prometheus 和 Cloud Monitoring 的 Config Sync 指標會設定下列指標標籤,以識別來源 Pod:

名稱 說明
k8s.node.name 代管 Kubernetes Pod 的節點名稱
k8s.pod.namespace Pod 的命名空間
k8s.pod.uid Pod 的 UID
k8s.pod.ip Pod 的 IP
k8s.deployment.name 擁有 Pod 的 Deployment 名稱

reconciler Pod 傳送至 Prometheus 和 Cloud Monitoring 的 Config Sync 指標,也會設定下列指標標籤,以識別用於設定協調器的 RootSync 或 RepoSync:

名稱 說明
configsync.sync.kind 設定此調解程式的資源類型:RootSyncRepoSync
configsync.sync.name 設定這個協調器的 RootSyncRepoSync 名稱
configsync.sync.namespace 設定這個調解器的 RootSyncRepoSync 命名空間

Cloud Monitoring 資源標籤

Cloud Monitoring 資源標籤用於為儲存空間中的指標建立索引,因此與指標標籤不同,對基數的影響微乎其微,而基數是效能方面的重要考量。詳情請參閱「受監控的資源類型」。

k8s_container 資源類型會設定下列資源標籤,以識別來源容器:

名稱 說明
container_name 容器名稱
pod_name Pod 的名稱
namespace_name Pod 的命名空間
location 代管節點的叢集所在區域或可用區
cluster_name 代管節點的叢集名稱
project 叢集所屬專案的 ID

設定自訂指標篩選條件

您可以調整 Config Sync 匯出至 Prometheus、Cloud Monitoring 和 Google 內部監控服務的自訂指標。調整自訂指標,微調納入的指標或設定不同的後端。

如要修改自訂指標,請建立並編輯名為 otel-collector-custom 的 ConfigMap。使用這個 ConfigMap 可確保 Config Sync 不會還原您所做的任何修改。如果您修改 otel-collectorotel-collector-google-cloud ConfigMap,Config Sync 會還原所有變更。

如需調整這個 ConfigMap 的範例,請參閱開放原始碼 Config Sync 說明文件中的「自訂指標篩選」。

瞭解 pipeline_error_observed 指標

pipeline_error_observed 指標可協助您快速找出未同步或包含未與所需狀態調解資源的 RepoSync 或 RootSync CR。

  • 如要讓 RootSync 或 RepoSync 成功同步,請觀察所有元件 (renderingsourcesyncreadiness) 的指標值是否為 0。

    螢幕截圖:pipeline_error_observed 指標,所有觀察到的元件值皆為 0

  • 如果最新提交的內容無法通過自動算繪,系統會觀察到元件 rendering 的指標值為 1。

  • 如果簽出最新提交內容時發生錯誤,或最新提交內容包含無效設定,系統會觀察到元件 source 的指標值為 1。

  • 如果資源無法套用至叢集,系統會觀察元件 sync 的指標,值為 1。

  • 如果套用資源後無法達到所需狀態,系統會觀察元件 readiness 的指標,並將值設為 1。舉例來說,Deployment 會套用至叢集,但對應的 Pod 未順利建立。

後續步驟