Halaman ini menjelaskan cara menggunakan indikator tingkat layanan (SLI) Config Sync.
Untuk menerima notifikasi saat Config Sync tidak berfungsi sebagaimana mestinya, siapkan aturan pemberitahuan Prometheus berdasarkan SLI ini. Setiap SLI menyertakan contoh cara membuat aturan pemberitahuan. Untuk mempelajari lebih lanjut cara menggunakan Prometheus dengan Config Sync, lihat Memantau Config Sync dengan metrik.
Pod Config Sync dengan jumlah container yang salah
Jika jumlah penampung Pod Config Sync lebih rendah dari yang diharapkan, Config Sync mungkin tidak berjalan. Anda dapat menyiapkan pemberitahuan untuk mendeteksi masalah ini dan memeriksa Pod Config Sync untuk mencari tahu alasan hilangnya beberapa container. Saat menyetel pemberitahuan, sebaiknya tetapkan interval waktu ke minimal lima menit untuk menghindari notifikasi yang tidak perlu. Misalnya, selama upgrade, jumlah container Pod mungkin turun di bawah target.
Jika Anda belum mengetahui jumlah container yang diharapkan, lihat Deployment Config Sync, Pod, dan container.
Contoh aturan pemberitahuan Prometheus
Bagian ini mencakup contoh yang memberi tahu Anda saat ada Pod dengan jumlah container yang salah.
Untuk menerima notifikasi saat jumlah container Pod rekonsiler root di bawah jumlah yang diharapkan, buat aturan pemberitahuan berikut:
alert: RootReconcilerPodMissingContainer expr: count by (cluster_name, pod_name) (kubernetes_io:container_uptime{namespace_name="config-management-system", pod_name=~"root-reconciler-.*"}) < 4 # Setting the for field to 5m to avoid unnecessary alerts. for: 5m
Untuk menerima notifikasi saat jumlah container Pod rekonsiler namespace di bawah jumlah yang diharapkan, buat aturan pemberitahuan berikut:
alert: NamespaceReconcilerPodMissingContainer expr: count by (cluster_name, pod_name) (kubernetes_io:container_uptime{namespace_name="config-management-system", pod_name=~"ns-reconciler-.*"}) < 4 for: 5m
Untuk menerima notifikasi saat jumlah container Pod reconciler-manager di bawah jumlah yang diharapkan, buat aturan pemberitahuan berikut:
alert: ReconcilerManagerPodMissingContainer expr: count by (cluster_name, pod_name) (kubernetes_io:container_uptime{namespace_name="config-management-system", pod_name=~"reconciler-manager-.*"}) < 2 for: 5m
Penampung Config Sync yang tidak responsif
Terjadi error jika jumlah mulai ulang penampung Config Sync mencapai batas tertentu. Misalnya, container rekonsiler root yang tidak memiliki resource memori yang cukup akan dimulai ulang dengan error OOMKilled
sampai mendapatkan cukup memori.
Contoh aturan pemberitahuan Prometheus
Untuk menerima notifikasi saat penampung Config Sync telah dimulai ulang lebih dari tiga kali, buat aturan pemberitahuan berikut:
alert: TooManyContainerRestarts
expr: kubernetes_io:container_restart_count{namespace_name=~"config-management-system|config-management-monitoring|resource-group-system"} > 3
Sinkronisasi Konfigurasi mengalami error terus-menerus
Jika Config Sync mengalami error terus-menerus, berarti ada sesuatu yang salah. Saat menemukan error, Sinkronisasi Konfigurasi akan terus mencoba menyinkronkan konfigurasi dari sumber ke cluster hingga berhasil. Namun, beberapa error tidak dapat diperbaiki dengan mencoba ulang dan memerlukan intervensi Anda.
Contoh aturan pemberitahuan Prometheus
Untuk menerima notifikasi saat rekonsiler root atau namespace mengalami error persisten selama dua jam, buat aturan pemberitahuan berikut:
alert: PersistentConfigSyncErrors
expr: sum by (cluster, configsync_sync_kind, configsync_sync_name, configsync_sync_namespace, errorclass) (config_sync_reconciler_errors) > 0
for: 2h
Dalam contoh ini:
- Label
configsync_sync_kind
dapat memiliki nilai berikut:RootSync
atauRepoSync
. - Label
configsync_sync_name
menunjukkan nama objek RootSync atau RepoSync. - Label
configsync_sync_namespace
menunjukkan namespace objek RootSync atau RepoSync. Label
errorclass
dapat memiliki tiga nilai:1xxx
,2xxx
, dan9xxx
. Setiap label sesuai dengan jenis error yang berbeda:1xxx
error: error konfigurasi yang dapat Anda perbaiki2xxx
error: error sisi server yang mungkin tidak dapat Anda perbaiki9xxx
error: error internal yang tidak dapat Anda perbaiki
Config Sync bermasalah dalam tahap sinkronisasi
Upaya sinkronisasi di Config Sync tidak dapat terganggu. Jika konfigurasi pada sumber terlalu besar atau kompleks (misalnya, sumber Anda berisi resource Config Connector yang tinggi), perlu waktu lebih dari satu jam untuk menyelesaikan sinkronisasi konfigurasi ini ke cluster. Namun, jika dua jam telah berlalu sejak sinkronisasi terakhir berhasil, mungkin ada yang salah.
Anda dapat memeriksa apakah upaya sinkronisasi saat ini masih berlangsung dengan memeriksa status RootSync atau RepoSync. Jika upaya sinkronisasi saat ini masih berlangsung, Anda dapat memilih untuk memecah sumber tepercaya agar setiap sumber tepercaya dapat disinkronkan lebih cepat, atau meningkatkan batas pemberitahuan dari dua jam menjadi sesuatu yang lebih lama. Jika tidak ada upaya sinkronisasi yang sedang berlangsung, rekonsiler Config Sync akan rusak karena seharusnya terus mencoba ulang hingga berhasil menyinkronkan konfigurasi dari sumber ke cluster. Jika hal ini terjadi, eskalasikan ke Dukungan Google Cloud.
Contoh aturan pemberitahuan Prometheus
Agar menerima notifikasi saat sinkronisasi terakhir yang berhasil untuk rekonsiler root atau namespace lebih dari dua jam yang lalu, buat aturan pemberitahuan:
alert: OldLastSyncTimestamp
# The status label indicates whether the last sync succeeded or not.
# Possible values: success, error.
expr: time() - topk by (cluster, configsync_sync_kind, configsync_sync_name, configsync_sync_namespace) (1, config_sync_last_sync_timestamp{status="success"}) > 7200
Config Sync mengalami regresi performa
Config Sync mungkin mengalami regresi performa setelah diupgrade. Regresi performa dapat terjadi dengan cara berikut:
- Peningkatan overhead waktu saat merekonsiliasi objek RootSync atau RepoSync
- Peningkatan overhead waktu saat merekonsiliasi objek ResourceGroup
- Peningkatan overhead waktu sinkronisasi konfigurasi dari sumber ke cluster
Overhead waktu untuk merekonsiliasi objek RootSync atau RepoSync
Deployment reconciler-manager
merekonsiliasi objek RootSync dan RepoSync.
Anda dapat menggunakan persentil kesembilan puluh dari overhead waktu untuk merekonsiliasi objek RootSync atau RepoSync untuk mendeteksi regresi performa.
Contoh aturan pemberitahuan Prometheus
Bagian ini mencakup contoh aturan pemberitahuan Prometheus yang memberi tahu Anda saat Deployment reconciler-manager
mengalami regresi performa.
Contoh berikut mengirimi Anda notifikasi saat persentil kesembilan puluh dari overhead waktu rekonsiliasi objek RootSync atau RepoSync selama 5 jam terakhir lebih dari 0,1 detik selama 10 menit. Anda dapat membuat aturan pemberitahuan yang memantau semua cluster, atau satu cluster.
Buat aturan berikut untuk memantau semua cluster:
alert: HighLatencyReconcileRootSyncAndRepoSyncOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_reconcile_duration_seconds_bucket[5h]))) > 0.1 for: 10m
Buat aturan berikut untuk memantau satu cluster:
alert: HighLatencyReconcileRootSyncAndRepoSyncClusterLevel expr: histogram_quantile(0.9, sum by (cluster, le) (rate(config_sync_reconcile_duration_seconds_bucket[5h]))) > 0.1 for: 10m
Overhead waktu saat merekonsiliasi objek ResourceGroup
Deployment resource-group-controller-manager
merekonsiliasi objek ResourceGroup. Anda dapat menggunakan persentil kesembilan puluh dari overhead waktu saat merekonsiliasi ResourceGroup untuk menangkap regresi performa.
Contoh aturan pemberitahuan Prometheus
Bagian ini mencakup aturan pemberitahuan Prometheus yang memberi tahu Anda saat Deployment resource-group-controller-manager
mengalami regresi performa.
Contoh berikut mengirimi Anda notifikasi saat persentil kesembilan puluh dari overhead waktu rekonsiliasi objek ResourceGroup selama 5 jam terakhir lebih dari 5 detik selama 10 menit. Anda dapat membuat aturan pemberitahuan yang memantau semua cluster, atau satu cluster.
Buat aturan berikut untuk memantau semua cluster:
alert: HighLatencyReconcileResourceGroupOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_rg_reconcile_duration_seconds_bucket[5h]))) > 5 for: 10m
Buat aturan berikut untuk memantau satu cluster:
alert: HighLatencyReconcileResourceGroupClusterLevel expr: histogram_quantile(0.9, sum by (cluster, le) (rate(config_sync_rg_reconcile_duration_seconds_bucket[5h]))) > 5 for: 10m
Overhead waktu sinkronisasi konfigurasi dari sumber ke cluster
Rekonsiler root atau namespace menyinkronkan konfigurasi dari sumber tepercaya ke cluster. Anda dapat menggunakan persentil kesembilan puluh dari overhead waktu sinkronisasi konfigurasi dari sumber ke cluster untuk mendeteksi regresi performa.
Contoh aturan pemberitahuan Prometheus
Bagian ini mencakup aturan pemberitahuan Prometheus yang memberi tahu Anda saat Deployment rekonsiler root atau namespace mengalami regresi performa.
Contoh berikut mengirimi Anda notifikasi saat persentil kesembilan puluh dari overhead waktu sinkronisasi konfigurasi di semua cluster selama lima jam terakhir lebih dari satu jam selama lima menit.Anda dapat membuat aturan pemberitahuan yang memantau semua cluster, atau satu cluster.
Buat aturan berikut untuk memantau semua cluster:
alert: HighApplyDurationOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_apply_duration_seconds_bucket[5h]))) > 3600 for: 5m
Buat aturan berikut untuk memantau satu cluster:
alert: HighApplyDurationRootSyncRepoSyncLevel expr: histogram_quantile(0.9, sum by (cluster, configsync_sync_kind,configsync_sync_name, configsync_sync_namespace, le) (rate(config_sync_apply_duration_seconds_bucket[5h]))) > 3600 for: 5m