Config Sync otomatis mengumpulkan dan mengekspor metrik yang dapat Anda scrape dengan Prometheus untuk melacak kondisi sinkronisasi, mendeteksi error rekonsiliasi, dan memantau penggunaan resource di seluruh cluster Anda. Anda dapat melihat metrik ini langsung di Prometheus atau menariknya ke Cloud Monitoring sebagai metrik kustom. Untuk mengetahui informasi selengkapnya, lihat Google Cloud Managed Service for Prometheus.
Untuk mengetahui informasi tentang cara mengekspor metrik langsung ke Monitoring tanpa Prometheus, lihat Memantau Config Sync dengan Cloud Monitoring. Anda juga dapat mengekspor metrik kustom.
Mengambil metrik
Semua metrik Prometheus tersedia untuk scraping di port 8675. Sebelum dapat melakukan scraping metrik, Anda harus mengonfigurasi cluster untuk Prometheus dengan salah satu dari dua cara. Pilih antara:
Ikuti dokumentasi Prometheus untuk mengonfigurasi cluster Anda untuk scraping, atau
Gunakan Prometheus Operator bersama dengan manifes berikut, yang mengumpulkan semua metrik Config Sync setiap 10 detik.
Buat direktori sementara untuk menyimpan file manifes.
mkdir config-sync-monitor cd config-sync-monitor
Download manifes Prometheus Operator dari repositori CoreOS. repositori, menggunakan perintah
curl:curl -o bundle.yaml https://raw.githubusercontent.com/coreos/prometheus-operator/master/bundle.yaml
Manifes ini dikonfigurasi untuk menggunakan namespace
default, yang tidak direkomendasikan. Langkah berikutnya adalah mengubah konfigurasi untuk menggunakan namespace yang disebutmonitoring. Untuk menggunakan namespace yang berbeda, ganti denganmonitoringdi langkah-langkah selanjutnya.Buat file untuk mengupdate namespace ClusterRoleBinding dalam paket di atas.
# patch-crb.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus-operator subjects: - kind: ServiceAccount name: prometheus-operator namespace: monitoring # we are patching from default namespaceBuat file
kustomization.yamlyang menerapkan patch dan mengubah namespace untuk resource lain dalam manifes.# kustomization.yaml resources: - bundle.yaml namespace: monitoring patchesStrategicMerge: - patch-crb.yamlBuat namespace
monitoringjika belum ada. Anda dapat menggunakan nama yang berbeda untuk namespace, tetapi jika Anda melakukannya, ubah juga nilainamespacedalam manifes YAML dari langkah sebelumnya.kubectl create namespace monitoring
Terapkan manifes Kustomize menggunakan perintah berikut:
kubectl apply -k . until kubectl get customresourcedefinitions servicemonitors.monitoring.coreos.com ; \ do date; sleep 1; echo ""; done
Perintah kedua akan memblokir hingga CRD tersedia di cluster.
Buat manifes untuk resource yang diperlukan guna mengonfigurasi server Prometheus yang mengumpulkan metrik dari Config Sync.
# config-sync-monitoring.yaml apiVersion: v1 kind: ServiceAccount metadata: name: prometheus-config-sync namespace: monitoring --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: prometheus-config-sync rules: - apiGroups: [""] resources: - nodes - services - endpoints - pods verbs: ["get", "list", "watch"] - apiGroups: [""] resources: - configmaps verbs: ["get"] - nonResourceURLs: ["/metrics"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus-config-sync roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: prometheus-config-sync subjects: - kind: ServiceAccount name: prometheus-config-sync namespace: monitoring --- apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: config-sync namespace: monitoring labels: prometheus: config-sync spec: replicas: 2 serviceAccountName: prometheus-config-sync serviceMonitorSelector: matchLabels: prometheus: config-management alerting: alertmanagers: - namespace: default name: alertmanager port: web resources: requests: memory: 400Mi --- apiVersion: v1 kind: Service metadata: name: prometheus-config-sync namespace: monitoring labels: prometheus: config-sync spec: type: NodePort ports: - name: web nodePort: 31900 port: 9190 protocol: TCP targetPort: web selector: prometheus: config-sync --- ---Terapkan manifes menggunakan perintah berikut:
kubectl apply -f config-sync.yaml until kubectl rollout status statefulset/prometheus-config-sync -n monitoring; \ do sleep 1; done
Perintah kedua akan memblokir hingga Pod berjalan.
Anda dapat memverifikasi penginstalan dengan meneruskan port web server Prometheus ke komputer lokal Anda.
kubectl -n monitoring port-forward svc/prometheus-config-sync 9190
Anda kini dapat mengakses UI web Prometheus di
http://localhost:9190.Hapus direktori sementara.
cd .. rm -rf config-sync-monitor
Metrik Prometheus yang tersedia
Config Sync mengumpulkan metrik berikut dan menyediakannya untuk Prometheus. Kolom Label mencantumkan semua label yang berlaku untuk setiap metrik. Metrik tanpa label mewakili satu pengukuran dari waktu ke waktu, sedangkan metrik dengan label mewakili beberapa pengukuran, satu untuk setiap kombinasi nilai label.
Jika tabel ini tidak sinkron, Anda dapat memfilter metrik menurut awalan di antarmuka pengguna Prometheus. Semua metrik dimulai dengan awalan
config_sync_.
| Nama | Jenis | Label | Deskripsi |
|---|---|---|---|
config_sync_api_duration_seconds_bucket |
Histogram | status, operation | Distribusi latensi panggilan server API (didistribusikan ke dalam bucket berdasarkan durasi setiap siklus) |
config_sync_api_duration_seconds_count |
Histogram | status, operasi | Distribusi latensi panggilan server API (mengabaikan durasi) |
config_sync_api_duration_seconds_sum |
Histogram | status, operasi | Jumlah durasi semua panggilan server API |
config_sync_apply_duration_seconds_bucket |
Histogram | commit, status | Distribusi latensi penerapan resource yang dideklarasikan dari sumber kebenaran ke cluster (didistribusikan ke dalam bucket berdasarkan durasi setiap siklus) |
config_sync_apply_duration_seconds_count |
Histogram | commit, status | Distribusi latensi penerapan resource yang dideklarasikan dari sumber kebenaran ke cluster (mengabaikan durasi) |
config_sync_apply_duration_seconds_sum |
Histogram | commit, status | Jumlah durasi semua latensi penerapan resource yang dideklarasikan dari sumber kebenaran ke cluster |
config_sync_apply_operations_total |
Penghitung | operasi, status, pengontrol | Jumlah operasi yang telah dilakukan untuk menyinkronkan resource dari sumber tepercaya ke cluster |
config_sync_cluster_scoped_resource_count |
Meteran | resourcegroup | Jumlah resource cakupan cluster dalam ResourceGroup |
config_sync_crd_count |
Meteran | resourcegroup | Jumlah CRD dalam ResourceGroup |
config_sync_declared_resources |
Meteran | commit | Jumlah resource yang dideklarasikan yang diuraikan dari Git |
config_sync_internal_errors_total |
Penghitung | sumber | Jumlah error internal yang dipicu oleh Config Sync. Metrik mungkin tidak muncul jika tidak terjadi error internal |
config_sync_kcc_resource_count |
Meteran | resourcegroup | Jumlah resource Config Connector dalam ResourceGroup |
config_sync_last_apply_timestamp |
Meteran | commit, status | Stempel waktu operasi penerapan terbaru |
config_sync_last_sync_timestamp |
Meteran | commit, status | Stempel waktu sinkronisasi terbaru dari Git |
config_sync_parser_duration_seconds_bucket |
Histogram | status, pemicu, sumber | Distribusi latensi dari berbagai tahap yang terlibat dalam sinkronisasi dari sumber tepercaya ke cluster |
config_sync_parser_duration_seconds_count |
Histogram | status, pemicu, sumber | Distribusi latensi dari berbagai tahap yang terlibat dalam sinkronisasi dari sumber tepercaya ke cluster (mengabaikan durasi) |
config_sync_parser_duration_seconds_sum |
Histogram | status, pemicu, sumber | Jumlah latensi dari berbagai tahap yang terlibat dalam sinkronisasi dari sumber tepercaya ke cluster |
config_sync_pipeline_error_observed |
Meteran | name, reconciler, component | Status resource kustom RootSync dan RepoSync. Nilai 1 menunjukkan kegagalan |
config_sync_ready_resource_count |
Meteran | resourcegroup | Jumlah total resource yang siap di ResourceGroup |
config_sync_reconcile_duration_seconds_bucket |
Histogram | status | Distribusi latensi peristiwa rekonsiliasi yang ditangani oleh pengelola rekonsiliasi (didistribusikan ke dalam bucket berdasarkan durasi setiap panggilan) |
config_sync_reconcile_duration_seconds_count |
Histogram | status | Distribusi latensi peristiwa rekonsiliasi yang ditangani oleh pengelola rekonsiliasi (mengabaikan durasi) |
config_sync_reconcile_duration_seconds_sum |
Histogram | status | Jumlah durasi semua latensi peristiwa rekonsiliasi yang ditangani oleh pengelola rekonsiliasi |
config_sync_reconciler_errors |
Meteran | component, errorclass | Jumlah error yang terjadi saat menyinkronkan resource dari sumber tepercaya ke cluster |
config_sync_remediate_duration_seconds_bucket |
Histogram | status | Distribusi latensi peristiwa rekonsiliasi remediator (didistribusikan ke dalam bucket berdasarkan durasi) |
config_sync_remediate_duration_seconds_count |
Histogram | status | Distribusi latensi peristiwa rekonsiliasi remediator (mengabaikan durasi) |
config_sync_remediate_duration_seconds_sum |
Histogram | status | Jumlah durasi semua latensi peristiwa rekonsiliasi remediator |
config_sync_resource_count |
Meteran | resourcegroup | Jumlah resource yang dilacak oleh ResourceGroup |
config_sync_resource_conflicts_total |
Penghitung | commit | Jumlah konflik resource yang disebabkan oleh ketidakcocokan antara resource yang di-cache dan resource cluster. Metrik mungkin tidak muncul jika tidak ada konflik resource yang terjadi |
config_sync_resource_fights_total |
Penghitung | Jumlah resource yang terlalu sering disinkronkan. Metrik mungkin tidak muncul jika tidak ada perebutan resource yang terjadi | |
config_sync_resource_group_total |
Meteran | Jumlah CR ResourceGroup | |
config_sync_resource_ns_count |
Meteran | resourcegroup | Jumlah namespace yang digunakan oleh resource dalam ResourceGroup |
config_sync_rg_reconcile_duration_seconds_bucket. |
Histogram | stallreason | Distribusi waktu rekonsiliasi CR ResourceGroup (didistribusikan ke dalam bucket berdasarkan durasi) |
config_sync_rg_reconcile_duration_seconds_count |
Histogram | stallreason | Distribusi waktu rekonsiliasi CR ResourceGroup (mengabaikan durasi) |
config_sync_rg_reconcile_duration_seconds_sum |
Histogram | stallreason | Jumlah waktu yang dihabiskan untuk merekonsiliasi ResourceGroup CR |
config_sync_kustomize_build_latency_bucket |
Histogram | Distribusi latensi waktu eksekusi kustomize build (didistribusikan ke dalam bucket berdasarkan durasi setiap operasi) |
|
config_sync_kustomize_build_latency_count |
Histogram | Distribusi latensi waktu eksekusi kustomize build (mengabaikan durasi) |
|
config_sync_kustomize_build_latency_sum |
Histogram | Jumlah semua waktu eksekusi kustomize build |
|
config_sync_kustomize_ordered_top_tier_metrics |
Meteran | top_tier_field | Penggunaan Resource, Generator, SecretGenerator, ConfigMapGenerator, Transformer, dan Validator |
config_sync_kustomize_builtin_transformers |
Meteran | k8s_builtin_transformer | Penggunaan transformer bawaan yang terkait dengan metadata objek Kubernetes |
config_sync_kustomize_resource_count |
Meteran | Jumlah resource yang dihasilkan oleh kustomize build |
|
config_sync_kustomize_field_count |
Meteran | field_name | Frekuensi penggunaan kolom tertentu dalam file kustomisasi |
config_sync_kustomize_patch_count |
Meteran | patch_field | Jumlah patch di kolom patches, patchesStrategicMerge, dan patchesJson6902 |
config_sync_kustomize_base_count |
Meteran | base_source | Jumlah pangkalan jarak jauh dan lokal |
kustomize_deprecating_field_count |
Meteran | deprecating_field | Penggunaan kolom yang mungkin tidak digunakan lagi |
kustomize_simplification_adoption_count |
Meteran | simplification_field | Penggunaan gambar, replika, dan penggantian transformer penyederhanaan |
kustomize_helm_inflator_count |
Meteran | helm_inflator | Penggunaan helm di kustomize, baik oleh kolom bawaan maupun fungsi kustom |
Contoh prosedur proses debug untuk Prometheus
Contoh berikut mengilustrasikan beberapa pola untuk menggunakan metrik Prometheus, kolom status objek, dan anotasi objek untuk mendeteksi dan mendiagnosis masalah terkait Config Sync. Contoh ini menunjukkan cara memulai pemantauan tingkat tinggi yang mendeteksi masalah, lalu secara progresif menyaring penelusuran untuk melihat perincian dan mendiagnosis akar masalah.
Konfigurasi kueri menurut status
Proses reconciler menyediakan metrik tingkat tinggi yang memberikan insight berguna tentang
tampilan keseluruhan cara Config Sync beroperasi di cluster. Anda dapat melihat apakah ada error yang terjadi, dan bahkan dapat menyiapkan pemberitahuan untuk error tersebut.
config_sync_reconciler_errors
Metrik kueri menurut rekonsiler
Jika menggunakan Config Sync RootSync dan RepoSync API, Anda dapat memantau objek RootSync dan RepoSync. Objek RootSync dan RepoSync dilengkapi dengan metrik tingkat tinggi yang memberi Anda insight berguna tentang cara Config Sync beroperasi di cluster. Hampir semua metrik diberi tag dengan nama rekonsiler, sehingga Anda dapat melihat apakah terjadi error dan dapat menyiapkan pemberitahuan untuk error tersebut di Prometheus.
Lihat daftar lengkap label metrik yang tersedia untuk pemfilteran.
Di Prometheus, Anda dapat menggunakan filter berikut untuk RootSync atau RepoSync:
# Querying RootSync
config_sync_reconciler_errors{configsync_sync_name=ROOT_SYNC_NAME}
# Querying RepoSync
config_sync_reconciler_errors{configsync_sync_name=REPO_SYNC_NAME}
Mengkueri operasi impor dan sinkronisasi berdasarkan status
Di Prometheus, Anda dapat menggunakan kueri berikut:
# Check for errors that occurred when sourcing configs.
config_sync_reconciler_errors{component="source"}
# Check for errors that occurred when syncing configs to the cluster.
config_sync_reconciler_errors{component="sync"}
Anda juga dapat memeriksa metrik untuk proses sumber dan sinkronisasi itu sendiri:
config_sync_parser_duration_seconds{status="error"}
config_sync_apply_duration_seconds{status="error"}
config_sync_remediate_duration_seconds{status="error"}
Memantau resource dengan Google Cloud Managed Service for Prometheus
Google Cloud Managed Service for Prometheus adalah solusi multi-cloud Google Cloudyang terkelola sepenuhnya untuk metrik Prometheus. Alat ini mendukung dua mode untuk pengumpulan data: pengumpulan terkelola (mode yang direkomendasikan) atau pengumpulan data yang di-deploy sendiri. Selesaikan langkah-langkah berikut untuk menyiapkan pemantauan Config Sync dengan Google Cloud Managed Service for Prometheus dalam mode pengumpulan terkelola.
Aktifkan Prometheus Terkelola di cluster Anda dengan mengikuti petunjuk di Menyiapkan koleksi terkelola.
Simpan contoh manifes berikut sebagai
pod-monitoring-config-sync-monitoring.yaml. Manifes ini mengonfigurasi resource PodMonitoring untuk mengumpulkan metrik Config Sync di port8675dari Podotel-collector-*di namespaceconfig-management-monitoring. Resource PodMonitoring menggunakan pemilih label Kubernetes untuk menemukan Podotel-collector-*.apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: config-sync-monitoring namespace: config-management-monitoring spec: selector: matchLabels: app: opentelemetry component: otel-collector endpoints: - port: 8675 interval: 10sTerapkan manifes ke cluster:
kubectl apply -f pod-monitoring-config-sync-monitoring.yaml
Pastikan data Prometheus Anda diekspor menggunakan halaman Metrics Explorer Cloud Monitoring di konsol Google Cloud dengan mengikuti petunjuk di Data Managed Service for Prometheus di Cloud Monitoring.