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 penampung yang salah
Jika jumlah container 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 mengetahui alasan beberapa container tidak ada. Saat menyetel pemberitahuan, sebaiknya tetapkan interval waktu setidaknya lima menit untuk menghindari pemberitahuan yang tidak perlu. Misalnya, selama upgrade, jumlah penampung Pod dapat turun di bawah target.
Jika Anda belum memahami jumlah container yang diharapkan, lihat Deployment, Pod, dan container Config Sync.
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 root reconciler 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 penampung Pod namespace reconciler 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
Container Config Sync yang tidak sehat
Jika jumlah mulai ulang penampung Config Sync mencapai
nilai minimum tertentu, ada yang salah. Misalnya, penampung rekonsiliasi root yang tidak memiliki resource memori yang cukup akan dimulai ulang dengan error OOMKilled
hingga mendapatkan memori yang cukup.
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
Config Sync mengalami error persisten
Jika Config Sync mengalami error yang terus-menerus, ada yang salah. Saat Config Sync mengalami error, Config Sync akan terus mencoba menyinkronkan konfigurasi dari sumber ke cluster hingga berhasil. Namun, beberapa error tidak dapat diperbaiki dengan mencoba lagi dan memerlukan intervensi Anda.
Contoh aturan pemberitahuan Prometheus
Untuk menerima notifikasi saat rekonsiliator 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:- Error
1xxx
: error konfigurasi yang dapat Anda perbaiki 2xxx
error: error sisi server yang mungkin tidak dapat Anda perbaiki- Error
9xxx
: error internal yang tidak dapat Anda perbaiki
- Error
Config Sync macet di tahap sinkronisasi
Upaya sinkronisasi di Config Sync tidak dapat diinterupsi. Jika konfigurasi di sumber terlalu besar atau rumit (misalnya, sumber Anda berisi banyak resource Config Connector), penyelesaian sinkronisasi konfigurasi ini ke cluster dapat memerlukan waktu lebih dari satu jam. Namun, jika dua jam telah berlalu sejak sinkronisasi terakhir yang berhasil, mungkin ada masalah.
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 lebih lama. Jika tidak ada upaya sinkronisasi yang sedang berlangsung, rekonsiliasi Config Sync rusak karena seharusnya terus mencoba lagi hingga berhasil menyinkronkan konfigurasi dari sumber ke cluster. Jika hal ini terjadi, eskalasikan ke Google Cloud Dukungan.
Contoh aturan pemberitahuan Prometheus
Untuk mendapatkan notifikasi saat sinkronisasi terakhir yang berhasil dari rekonsiliasi root atau namespace terjadi 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 untuk merekonsiliasi objek RootSync atau RepoSync
- Peningkatan overhead waktu untuk merekonsiliasi objek ResourceGroup
- Peningkatan overhead waktu untuk menyinkronkan 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 guna 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 akan mengirimkan notifikasi saat persentil kesembilan puluh dari overhead waktu untuk menyelaraskan objek RootSync atau RepoSync selama 5 jam terakhir melebihi 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 untuk merekonsiliasi objek ResourceGroup
Deployment resource-group-controller-manager
merekonsiliasi objek ResourceGroup. Anda dapat menggunakan persentil kesembilan puluh dari overhead waktu
merekonsiliasi ResourceGroup untuk mendeteksi 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 akan mengirimkan notifikasi saat persentil kesembilan puluh dari overhead waktu untuk merekonsiliasi objek ResourceGroup selama 5 jam terakhir melebihi 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 untuk menyinkronkan konfigurasi dari sumber ke cluster
Penyelarasan root atau namespace menyinkronkan konfigurasi dari sumber tepercaya ke cluster. Anda dapat menggunakan persentil kesembilan puluh dari overhead waktu menyinkronkan 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 rekonsiliasi root atau namespace mengalami regresi performa.
Contoh berikut akan mengirimkan notifikasi saat persentil kesembilan puluh dari overhead waktu menyinkronkan 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