Halaman ini menjelaskan cara mengirim metrik dari Config Sync ke Prometheus.
Halaman ini menjelaskan cara menggunakan Prometheus untuk melihat metrik Config Sync. Untuk cara lain untuk mengekspor metrik, lihat Memantau Config Sync dengan Cloud Monitoring atau Pantau Config Sync dengan pemantauan kustom.
Config Sync secara otomatis mengumpulkan dan mengekspor metrik ke Prometheus. Anda dapat mengonfigurasi Cloud Monitoring untuk mengambil metrik dari Prometheus. Kemudian Anda dapat melihat metrik khusus di Prometheus dan Pemantauan. Untuk informasi selengkapnya, lihat Menggunakan Prometheus di GKE dokumentasi layanan.
Mengoreksi metrik
Semua metrik Prometheus tersedia untuk penyalinan di port 8675. Sebelum Anda dapat metrik salinan, Anda harus mengonfigurasi klaster Anda untuk Prometheus di salah satu dari dua cara. Memenuhi salah satu ketentuan berikut:
Ikuti Dokumentasi Prometheus guna mengonfigurasi cluster Anda untuk penyalinan, atau
Gunakan Operator Prometheus bersama dengan manifes berikut, yang menyalin semua Config Sync metrik 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 Anda 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 mengubah konfigurasi untuk menggunakan namespace memanggilmonitoring
. Untuk menggunakan namespace yang berbeda, gantilah tempat Anda melihatmonitoring
pada langkah yang tersisa.Buat file untuk memperbarui namespace ClusterRoleBinding di 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 namespace
Buat file
kustomization.yaml
yang menerapkan patch dan mengubah untuk resource lain dalam manifes.# kustomization.yaml resources: - bundle.yaml namespace: monitoring patchesStrategicMerge: - patch-crb.yaml
Buat namespace
monitoring
jika tidak ada. Anda dapat menggunakan nama namespace yang berbeda, tetapi jika Anda mengubahnya, ubah juga nilainyanamespace
dalam 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 memblokir hingga CRD tersedia di cluster.
Membuat manifes untuk resource yang diperlukan untuk mengonfigurasi Prometheus server yang menyalin 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 melakukan pemblokiran hingga Pod berjalan.
Anda dapat memverifikasi penginstalan dengan meneruskan porta web dari 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 ke Prometheus. Kolom Label mencantumkan semua label yang berlaku untuk setiap metrik. Metrik tanpa label mewakili satu pengukuran dari waktu ke waktu sementara 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, operasi | 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 tepercaya 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 tepercaya ke cluster (mengabaikan durasi) |
config_sync_apply_duration_seconds_sum |
Histogram | commit, status | Jumlah durasi semua latensi penerapan resource yang dideklarasikan dari sumber tepercaya 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 di 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 ada 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 di berbagai tahap yang terlibat dalam sinkronisasi dari sumber tepercaya ke cluster |
config_sync_parser_duration_seconds_count |
Histogram | status, pemicu, sumber | Distribusi latensi 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 berbagai tahap yang terlibat dalam sinkronisasi dari sumber tepercaya ke cluster |
config_sync_pipeline_error_observed |
Meteran | nama, rekonsiliasi, komponen | Status resource kustom RootSync dan RepoSync. Nilai 1 menunjukkan kegagalan |
config_sync_ready_resource_count |
Meteran | resourcegroup | Jumlah total resource 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 | komponen, kelas error | Jumlah error yang ditemukan saat menyinkronkan resource dari sumber kebenaran ke cluster |
config_sync_remediate_duration_seconds_bucket |
Histogram | status | Distribusi latensi peristiwa rekonsiliasi remediator (didistribusikan ke dalam bucket menurut durasi) |
config_sync_remediate_duration_seconds_count |
Histogram | status | Distribusi latensi peristiwa rekonsiliasi perbaikan (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 terjadi konflik resource |
config_sync_resource_fights_total |
Penghitung | Jumlah resource yang terlalu sering disinkronkan. Metrik mungkin tidak muncul jika tidak ada pertentangan 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 semua waktu merekonsiliasi CR ResourceGroup |
config_sync_kustomize_build_latency_bucket |
Histogram | Distribusi latensi dari kustomize build waktu eksekusi (didistribusikan ke dalam bucket berdasarkan durasi setiap operasi) |
|
config_sync_kustomize_build_latency_count |
Histogram | Distribusi latensi dari kustomize build waktu eksekusi (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 kolom tertentu digunakan 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 basis 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 pengganti transformer penyederhanaan |
kustomize_helm_inflator_count |
Meteran | helm_inflator | Penggunaan helm dalam kustomisasi, baik berdasarkan kolom bawaan maupun fungsi kustom |
Contoh prosedur proses debug untuk Prometheus
Contoh berikut menggambarkan beberapa pola untuk menggunakan metrik Prometheus, status objek, dan anotasi objek untuk mendeteksi dan mendiagnosis masalah yang terkait dengan Config Sync. Contoh-contoh ini menunjukkan bagaimana Anda dapat memulai pemantauan tingkat tinggi yang mendeteksi masalah, kemudian secara bertahap pencarian untuk melihat perincian dan mendiagnosis akar penyebab masalah.
Konfigurasi kueri berdasarkan status
Proses reconciler
memberikan metrik tingkat tinggi yang memberikan insight berguna tentang
gambaran keseluruhan tentang cara kerja Config Sync di cluster. Anda
dapat melihat apakah telah terjadi
kesalahan, dan bahkan dapat
menyiapkan pemberitahuan untuk mereka.
config_sync_reconciler_errors
Kueri metrik berdasarkan rekonsiliasi
Jika Anda menggunakan API Config Sync RootSync dan RepoSync, Anda dapat memantau objek RootSync dan RepoSync. RootSync dan RepoSync objek dilengkapi dengan metrik tingkat tinggi yang memberi Anda wawasan berguna tentang cara Config Sync beroperasi di cluster. Hampir semua metrik adalah diberi tag oleh nama rekonsiliasi, sehingga Anda dapat melihat apakah telah terjadi kesalahan dan dapat mengatur pemberitahuan untuk mereka di Prometheus.
Lihat daftar lengkap label metrik yang tersedia untuk pemfilteran.
Di Prometheus, Anda dapat menggunakan filter berikut untuk RootSyncs atau RepoSyncs:
# Querying RootSync
config_sync_reconciler_errors{configsync_sync_name=ROOT_SYNC_NAME}
# Querying RepoSync
config_sync_reconciler_errors{configsync_sync_name=REPO_SYNC_NAME}
Operasi impor dan sinkronisasi kueri berdasarkan status
Di Prometheus, Anda bisa 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 sumber dan proses 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 layanan solusi multi-cloud terkelola untuk Metrik Prometheus. Mendukung dua mode untuk pengumpulan data: koleksi 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 pada cluster Anda dengan mengikuti petunjuk di Menyiapkan koleksi terkelola.
Simpan contoh manifes berikut sebagai
pod-monitoring-config-sync-monitoring.yaml
. Manifes ini mengonfigurasi PodMonitoring untuk menyalin metrik Config Sync pada port8675
Podotel-collector-*
pada 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: 10s
Terapkan manifes ke cluster:
kubectl apply -f pod-monitoring-config-sync-monitoring.yaml
Memastikan data Prometheus Anda diekspor menggunakan Cloud Monitoring Halaman Metrics Explorer di konsol Google Cloud dengan mengikuti petunjuk tentang Data Google Cloud Managed Service for Prometheus di di Cloud Monitoring.