La pagina descrive come inviare metriche da Config Sync a Prometheus
Questa pagina spiega come utilizzare Prometheus per visualizzare le metriche di Config Sync. Per altri modi Per esportare le metriche, consulta Monitorare Config Sync con Cloud Monitoring oppure Monitora Config Sync con un monitoraggio personalizzato.
Config Sync raccoglie ed esporta automaticamente le metriche in Prometheus. Puoi configurare Cloud Monitoring per eseguire il pull le metriche di Prometheus. In questo modo, puoi visualizzare le metriche personalizzate sia in Prometheus sia nel monitoraggio. Per ulteriori informazioni, vedi Utilizzo di Prometheus in GKE documentazione.
Esegui lo scraping delle metriche
Tutte le metriche Prometheus sono disponibili per lo scraping nella porta 8675. Prima di poter di scraping, devi configurare il cluster per Prometheus in una delle due in molti modi diversi. In uno dei seguenti modi:
Segui le Documentazione di Prometheus per configurare il cluster per lo scraping, oppure
Utilizza la Operatore Prometheus insieme ai seguenti manifest, che eseguono lo scraping di tutti i Config Sync metriche ogni 10 secondi.
Crea una directory temporanea per contenere i file manifest.
mkdir config-sync-monitor cd config-sync-monitor
Scarica il manifest Prometheus Operator dal Repository CoreOS. utilizzando il comando
curl
:curl -o bundle.yaml https://raw.githubusercontent.com/coreos/prometheus-operator/master/bundle.yaml
Questo manifest è configurato per utilizzare lo spazio dei nomi
default
, che non è consigliato. Il passaggio successivo modifica la configurazione per utilizzare uno spazio dei nomi chiamato invecemonitoring
. Per utilizzare uno spazio dei nomi diverso, sostituiscilo dove vedimonitoring
nei passaggi rimanenti.Crea un file per aggiornare lo spazio dei nomi di ClusterRoleBinding nel bundle riportato sopra.
# 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
Crea un file
kustomization.yaml
che applichi la patch e modifichi i per le altre risorse nel manifest.# kustomization.yaml resources: - bundle.yaml namespace: monitoring patchesStrategicMerge: - patch-crb.yaml
Crea lo spazio dei nomi
monitoring
, se non esiste. Puoi utilizzare un nome diverso per lo spazio dei nomi, ma in questo caso devi modificare anche il valore dinamespace
nei manifest YAML dei passaggi precedenti.kubectl create namespace monitoring
Applica il manifest Kustomize utilizzando i seguenti comandi:
kubectl apply -k . until kubectl get customresourcedefinitions servicemonitors.monitoring.coreos.com ; \ do date; sleep 1; echo ""; done
Il secondo comando blocca finché i CRD non sono disponibili nel cluster.
Crea il manifest per le risorse necessarie per configurare un Prometheus che esegue lo scraping delle metriche da 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 --- ---
Applica il manifest utilizzando i seguenti comandi:
kubectl apply -f config-sync.yaml until kubectl rollout status statefulset/prometheus-config-sync -n monitoring; \ do sleep 1; done
Il secondo comando si blocca finché i pod non sono in esecuzione.
Puoi verificare l'installazione inoltrando la porta web del server Prometheus alla tua macchina locale.
kubectl -n monitoring port-forward svc/prometheus-config-sync 9190
Ora puoi accedere alla UI web di Prometheus all'indirizzo
http://localhost:9190
.Rimuovi la directory temporanea.
cd .. rm -rf config-sync-monitor
Metriche Prometheus disponibili
Config Sync raccoglie le seguenti metriche e le rende disponibili a Prometheus. La colonna Etichette elenca tutte le etichette applicabili a ogni metrica. Le metriche senza etichette rappresentano una singola misurazione nel tempo, mentre le metriche con etichette rappresentano più misurazioni, una per ogni combinazione di valori delle etichette.
Se questa tabella non è più sincronizzata, puoi filtrare le metriche per prefisso nell'interfaccia utente di Prometheus. Tutte le metriche iniziano con il prefisso
config_sync_
.
Nome | Tipo | Etichette | Descrizione |
---|---|---|---|
config_sync_api_duration_seconds_bucket |
Istogramma | stato, operazione | Distribuzione della latenza delle chiamate al server API (distribuita in bucket per durata di ogni ciclo) |
config_sync_api_duration_seconds_count |
Istogramma | stato, operazione | Distribuzione della latenza delle chiamate al server API (ignorando la durata) |
config_sync_api_duration_seconds_sum |
Istogramma | stato, operazione | Somma delle durate di tutte le chiamate al server API |
config_sync_apply_duration_seconds_bucket |
Istogramma | commit, stato | Distribuzione della latenza dell'applicazione delle risorse dichiarate dalla fonte attendibile a un cluster (distribuite in bucket in base alla durata di ciascun ciclo) |
config_sync_apply_duration_seconds_count |
Istogramma | commit, stato | Distribuzione della latenza dell'applicazione delle risorse dichiarate dalla sorgente di dati a un cluster (ignorando la durata) |
config_sync_apply_duration_seconds_sum |
Istogramma | commit, stato | Somma delle durate di tutta la latenza dell'applicazione delle risorse dichiarate dall'origine attendibile in un cluster |
config_sync_apply_operations_total |
Contatore | operazione, stato, controller | Numero di operazioni eseguite per sincronizzare le risorse dalla fonte attendibile a un cluster |
config_sync_cluster_scoped_resource_count |
Misuratore | resourcegroup | Numero di risorse con ambito cluster in un gruppo di risorse |
config_sync_crd_count |
Misuratore | resourcegroup | Numero di CRD in un gruppo di risorse |
config_sync_declared_resources |
Misuratore | commit | Numero di risorse dichiarate analizzate da Git |
config_sync_internal_errors_total |
Contatore | origine | Numero di errori interni attivati da Config Sync. La metrica potrebbe non essere visualizzata se non si è verificato alcun errore interno |
config_sync_kcc_resource_count |
Misuratore | resourcegroup | Numero di risorse Config Connector in un ResourceGroup |
config_sync_last_apply_timestamp |
Misuratore | commit, stato | Timestamp dell'operazione di applicazione più recente |
config_sync_last_sync_timestamp |
Misuratore | commit, stato | Timestamp della sincronizzazione più recente da Git |
config_sync_parser_duration_seconds_bucket |
Istogramma | stato, trigger, origine | Distribuzione della latenza delle diverse fasi coinvolte nella sincronizzazione dall'origine attendibile a un cluster |
config_sync_parser_duration_seconds_count |
Istogramma | stato, trigger, origine | Distribuzione della latenza delle diverse fasi coinvolte nella sincronizzazione dalla fonte attendibile a un cluster (ignorando la durata) |
config_sync_parser_duration_seconds_sum |
Istogramma | stato, trigger, origine | Somma delle latenze delle diverse fasi coinvolte nella sincronizzazione dalla fonte attendibile a un cluster |
config_sync_pipeline_error_observed |
Misuratore | nome, riconciliatore, componente | Stato delle risorse personalizzate RootSync e RepoSync. Il valore 1 indica un errore |
config_sync_ready_resource_count |
Misuratore | resourcegroup | Numero totale di risorse pronte in un ResourceGroup |
config_sync_reconcile_duration_seconds_bucket |
Istogramma | stato | Distribuzione della latenza degli eventi di riconciliazione gestiti dal gestore del riconciliatore (distribuiti in bucket per durata di ogni chiamata) |
config_sync_reconcile_duration_seconds_count |
Istogramma | stato | Distribuzione della latenza degli eventi di riconciliazione gestiti dal gestore del riconciliatore (ignoramento della durata) |
config_sync_reconcile_duration_seconds_sum |
Istogramma | stato | Somma delle durate di tutta la latenza degli eventi di riconciliazione gestiti dal gestore del riconciliatore |
config_sync_reconciler_errors |
Misuratore | component, errorclass | Numero di errori riscontrati durante la sincronizzazione delle risorse dall'origine attendibile a un cluster |
config_sync_remediate_duration_seconds_bucket |
Istogramma | stato | Distribuzione della latenza degli eventi di riconciliazione dei correttivi (distribuiti in bucket per durata) |
config_sync_remediate_duration_seconds_count |
Istogramma | stato | Distribuzione della latenza degli eventi di riconciliazione dei correttivi (ignora durata) |
config_sync_remediate_duration_seconds_sum |
Istogramma | stato | Somma delle durate di tutti gli eventi di latenza degli eventi di riconciliazione correttiva |
config_sync_resource_count |
Misuratore | resourcegroup | Numero di risorse monitorate da un ResourceGroup |
config_sync_resource_conflicts_total |
Contatore | commit | Numero di conflitti di risorse dovuti a una mancata corrispondenza tra le risorse memorizzate nella cache e le risorse del cluster. La metrica potrebbe non essere visualizzata se non si è verificato alcun conflitto di risorse |
config_sync_resource_fights_total |
Contatore | Numero di risorse sincronizzate con troppo frequenza. La metrica potrebbe non essere visualizzata se non si è verificato alcun conflitto tra risorse | |
config_sync_resource_group_total |
Misuratore | Numero di RP ResourceGroup | |
config_sync_resource_ns_count |
Misuratore | resourcegroup | Numero di spazi dei nomi utilizzati dalle risorse in un ResourceGroup |
config_sync_rg_reconcile_duration_seconds_bucket . |
Istogramma | stallreason | Distribuzione temporale della riconciliazione di una RP ResourceGroup (distribuita in bucket per durata) |
config_sync_rg_reconcile_duration_seconds_count |
Istogramma | motivo di stallo | Distribuzione temporale della riconciliazione di una RP ResourceGroup (ignorando la durata) |
config_sync_rg_reconcile_duration_seconds_sum |
Istogramma | stallreason | Somma di tutte le attività di riconciliazione di una RP ResourceGroup |
config_sync_kustomize_build_latency_bucket |
Istogramma | Distribuzione della latenza del tempo di esecuzione di kustomize build (distribuito in bucket per durata di ogni operazione) |
|
config_sync_kustomize_build_latency_count |
Istogramma | Distribuzione della latenza del tempo di esecuzione di kustomize build (ignora durata) |
|
config_sync_kustomize_build_latency_sum |
Istogramma | Somma di tutto il tempo di esecuzione (kustomize build ) |
|
config_sync_kustomize_ordered_top_tier_metrics |
Misuratore | top_tier_field | Utilizzo di risorse, generatori, SecretGenerator, ConfigMapGenerator, trasformatori e validatori |
config_sync_kustomize_builtin_transformers |
Misuratore | k8s_builtin_transformer | Utilizzo di trasformatori integrati relativi ai metadati degli oggetti Kubernetes |
config_sync_kustomize_resource_count |
Misuratore | Numero di risorse emesse da kustomize build |
|
config_sync_kustomize_field_count |
Misuratore | field_name | Numero di volte in cui un determinato campo viene utilizzato nei file di kustomization |
config_sync_kustomize_patch_count |
Misuratore | patch_field | Numero di patch nei campi patches , patchesStrategicMerge e patchesJson6902 |
config_sync_kustomize_base_count |
Misuratore | base_source | Numero di basi remote e locali |
kustomize_deprecating_field_count |
Misuratore | deprecating_field | Utilizzo di campi che potrebbero diventare obsoleti |
kustomize_simplification_adoption_count |
Misuratore | simplification_field | Utilizzo di immagini, repliche e sostituzioni dei trasformatori di semplificazione |
kustomize_helm_inflator_count |
Misuratore | helm_inflator | Utilizzo di helm in kustomize, da parte dei campi integrati o della funzione personalizzata |
Procedure di debug di esempio per Prometheus
Gli esempi riportati di seguito illustrano alcuni pattern per l'utilizzo delle metriche Prometheus, dei campi dello stato degli oggetti e delle annotazioni degli oggetti per rilevare e diagnosticare i problemi relativi a Config Sync. Questi esempi mostrano come iniziare con un monitoraggio di alto livello che rileva un problema e poi perfezionare progressivamente la ricerca per visualizzare in dettaglio e diagnosticare la causa principale del problema.
Configurazioni di query per stato
Il processo reconciler
fornisce metriche di alto livello che forniscono informazioni utili per avere una visione complessiva del funzionamento di Config Sync nel cluster. Tu
può vedere se si sono verificati errori e persino
configurare gli avvisi corrispondenti.
config_sync_reconciler_errors
Metriche di query per riconciliatore
Se utilizzi le API RootSync e RepoSync di Config Sync, puoi monitorare gli oggetti RootSync e RepoSync. Gli oggetti RootSync e RepoSync sono dotati di metriche di alto livello che forniscono informazioni utili su come Config Sync opera nel cluster. Quasi tutte le metriche sono contrassegnate dal nome del riconciliatore, quindi puoi vedere se si sono verificati errori e impostare avvisi in Prometheus.
Consulta l'elenco completo delle etichette delle metriche disponibili per i filtri.
In Prometheus, puoi utilizzare i seguenti filtri per RootSyncs o 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}
Esegui query sulle operazioni di importazione e sincronizzazione in base allo stato
In Prometheus, puoi utilizzare le seguenti query:
# 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"}
Puoi anche controllare le metriche relative alle procedure di origine e sincronizzazione:
config_sync_parser_duration_seconds{status="error"}
config_sync_apply_duration_seconds{status="error"}
config_sync_remediate_duration_seconds{status="error"}
Monitora le risorse con Google Cloud Managed Service per Prometheus
Google Cloud Managed Service per Prometheus è la suite una soluzione multi-cloud gestita Metriche di Prometheus. Supporta due modalità per la raccolta dei dati: raccolta gestita (modalità consigliata) o raccolta dei dati con deployment autonomo. Completa i passaggi seguenti per configurare il monitoraggio di Config Sync con Google Cloud Managed Service per Prometheus nella modalità di raccolta gestita.
Abilita Prometheus gestito sul tuo cluster seguendo le istruzioni riportate in Configurare la raccolta gestita.
Salva il seguente manifest di esempio come
pod-monitoring-config-sync-monitoring.yaml
. Questo manifest configura una risorsa PodMonitoring per eseguire lo scraping delle metriche di Config Sync sulla porta8675
del podotel-collector-*
nello spazio dei nomiconfig-management-monitoring
. La risorsa PodMonitoring utilizza un selettore di etichette Kubernetes per trovare il 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
Applica il manifest al cluster:
kubectl apply -f pod-monitoring-config-sync-monitoring.yaml
Verificare che i dati Prometheus vengano esportati mediante Cloud Monitoring nella pagina Metrics Explorer della console Google Cloud seguendo le istruzioni Dati di Managed Service per Prometheus in Cloud Monitoring.