本頁說明可用於監控 Config Sync 資源的 OpenTelemetry 指標。
Config Sync 收集指標的方式
Config Sync 會使用 OpenCensus 建立及記錄指標,並使用 OpenTelemetry 將指標匯出至 Prometheus 和 Cloud 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-collector
或 otel-collector-google-cloud
ConfigMap 所做的任何變更。
建立 otel-collector-google-cloud
ConfigMap 時,也會新增 cloudmonitoring
匯出工具 (匯出至 Cloud Monitoring) 和 kubernetes
匯出工具 (匯出至 Google 內部指標服務)。kubernetes
匯出工具會將選取的匿名指標傳送給 Google,協助改善 Config Sync。
Cloud Monitoring 會將您傳送的指標儲存在Google Cloud 專案中。cloudmonitoring
和 kubernetes
匯出工具使用相同的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 |
設定此調解程式的資源類型:RootSync 或 RepoSync |
configsync.sync.name |
設定這個協調器的 RootSync 或 RepoSync 名稱 |
configsync.sync.namespace |
設定這個調解器的 RootSync 或 RepoSync 命名空間 |
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-collector
或 otel-collector-google-cloud
ConfigMap,Config Sync 會還原所有變更。
如需調整這個 ConfigMap 的範例,請參閱開放原始碼 Config Sync 說明文件中的「自訂指標篩選」。
瞭解 pipeline_error_observed 指標
pipeline_error_observed
指標可協助您快速找出未同步或包含未與所需狀態調解資源的 RepoSync 或 RootSync CR。
如要讓 RootSync 或 RepoSync 成功同步,請觀察所有元件 (
rendering
、source
、sync
、readiness
) 的指標值是否為 0。如果最新提交的內容無法通過自動算繪,系統會觀察到元件
rendering
的指標值為 1。如果簽出最新提交內容時發生錯誤,或最新提交內容包含無效設定,系統會觀察到元件
source
的指標值為 1。如果資源無法套用至叢集,系統會觀察元件
sync
的指標,值為 1。如果套用資源後無法達到所需狀態,系統會觀察元件
readiness
的指標,並將值設為 1。舉例來說,Deployment 會套用至叢集,但對應的 Pod 未順利建立。
後續步驟
- 進一步瞭解如何監控 RootSync 和 RepoSync 物件。
- 瞭解如何使用 Config Sync SLI。