La pagina descrive come inviare le metriche da Config Sync a Prometheus.
In questa pagina viene spiegato come utilizzare Prometheus per visualizzare le metriche di Config Sync. Per altri modi per esportare le metriche, consulta Monitorare Config Sync con Cloud Monitoring o Monitorare Config Sync con il monitoraggio personalizzato.
Config Sync raccoglie ed esporta automaticamente le metriche in Prometheus. Puoi configurare Cloud Monitoring per estrarre metriche personalizzate da Prometheus. Quindi puoi visualizzare metriche personalizzate sia in Prometheus che in Monitoring. Per ulteriori informazioni, consulta Utilizzo di Prometheus nella documentazione di GKE.
Eseguire lo scraping delle metriche
Tutte le metriche di Prometheus sono disponibili per l'estrazione dei dati sulla porta 8675. Prima di eseguire lo scraping delle metriche, devi configurare il cluster per Prometheus in uno dei due modi seguenti. Una di queste soglie:
Segui la documentazione di Prometheus per configurare il tuo cluster per lo scraping oppure
Utilizza l'operatore Prometheus insieme ai manifest riportati di seguito, che eseguono lo scraping di tutte le metriche di Config Sync ogni 10 secondi.
Crea una directory temporanea in cui inserire i file manifest.
mkdir config-sync-monitor cd config-sync-monitor
Scarica il manifest dell'operatore Prometheus 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 è sconsigliato. Il passaggio successivo modifica la configurazione in modo da utilizzare uno spazio dei nomi denominatomonitoring
. 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 precedente.
# 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 lo spazio dei nomi 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 ne esiste uno. Puoi utilizzare un nome diverso per lo spazio dei nomi, ma in questo caso modifica 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 sul cluster.
Creare il manifest per le risorse necessarie a configurare un server 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 questi comandi:
kubectl apply -f config-sync.yaml until kubectl rollout status statefulset/prometheus-config-sync -n monitoring; \ do sleep 1; done
Il secondo comando 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 all'interfaccia utente web di Prometheus all'indirizzo
http://localhost:9190
.Rimuovi la directory temporanea.
cd .. rm -rf config-sync-monitor
Metriche di Prometheus disponibili
Config Sync raccoglie le seguenti metriche e le rende disponibili per Prometheus. La colonna Etichette elenca tutte le etichette applicabili a ciascuna 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 è sincronizzata, puoi filtrare le metriche in base al 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 (distribuite in bucket per la durata di ogni ciclo) |
config_sync_api_duration_seconds_count |
Istogramma | stato, operazione | Distribuzione della latenza delle chiamate server API (ignoramento della 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 nell'applicazione delle risorse dichiarate dalla fonte attendibile a un cluster (distribuita nei bucket per la durata di ogni ciclo) |
config_sync_apply_duration_seconds_count |
Istogramma | commit, stato | Distribuzione della latenza nell'applicazione delle risorse dichiarate dalla fonte di riferimento a un cluster (ignorando la durata) |
config_sync_apply_duration_seconds_sum |
Istogramma | commit, stato | Somma di tutte le durate di tutta la latenza dell'applicazione delle risorse dichiarate dalla fonte di riferimento a 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 |
Gauge | gruppo di risorse | Numero di risorse con ambito cluster in un gruppo di risorse |
config_sync_crd_count |
Gauge | gruppo di risorse | Numero di CRD in un gruppo di risorse |
config_sync_declared_resources |
Gauge | commit | Numero di risorse dichiarate analizzate da Git |
config_sync_internal_errors_total |
Contatore | source | 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 |
Gauge | gruppo di risorse | Numero di risorse Config Connector in un ResourceGroup |
config_sync_last_apply_timestamp |
Gauge | commit, stato | Timestamp dell'operazione di applicazione più recente |
config_sync_last_sync_timestamp |
Gauge | commit, stato | Timestamp della sincronizzazione più recente da Git |
config_sync_parser_duration_seconds_bucket |
Istogramma | stato, attivatore, origine | Distribuzione della latenza delle diverse fasi coinvolte nella sincronizzazione dalla fonte di riferimento a un cluster |
config_sync_parser_duration_seconds_count |
Istogramma | stato, attivatore, origine | Distribuzione della latenza delle diverse fasi coinvolte nella sincronizzazione dalla fonte di riferimento a un cluster (ignoramento della durata) |
config_sync_parser_duration_seconds_sum |
Istogramma | stato, attivatore, origine | Somma delle latenze delle diverse fasi coinvolte nella sincronizzazione dalla fonte di riferimento a un cluster |
config_sync_pipeline_error_observed |
Gauge | nome, riconciliatore, componente | Stato delle risorse personalizzate RootSync e RepoSync. Il valore 1 indica un errore |
config_sync_ready_resource_count |
Gauge | gruppo di risorse | Numero totale di risorse pronte in un gruppo di risorse |
config_sync_reconcile_duration_seconds_bucket |
Istogramma | stato | Distribuzione della latenza degli eventi di riconciliazione gestiti dal gestore del riconciliazione (distribuita nei 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 riconciliazione (ignoramento della durata) |
config_sync_reconcile_duration_seconds_sum |
Istogramma | stato | Somma di tutte le durate di tutti i tempi di latenza degli eventi di riconciliazione gestiti dal gestore riconciliazione |
config_sync_reconciler_errors |
Gauge | componente, classe di errore | Numero di errori riscontrati durante la sincronizzazione delle risorse dall'origine dell'attendibilità a un cluster |
config_sync_remediate_duration_seconds_bucket |
Istogramma | stato | Distribuzione della latenza degli eventi di riconciliazione del ripristino (distribuiti nei bucket per durata) |
config_sync_remediate_duration_seconds_count |
Istogramma | stato | Distribuzione della latenza degli eventi di riconciliazione del recupero (ignoramento della durata) |
config_sync_remediate_duration_seconds_sum |
Istogramma | stato | Somma delle durate di tutti i tempi di latenza degli eventi di riconciliazione di Remediator |
config_sync_resource_count |
Gauge | gruppo di risorse | Numero di risorse monitorate da un gruppo di risorse |
config_sync_resource_conflicts_total |
Contatore | commit | Numero di conflitti di risorse derivanti da 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 troppo spesso. La metrica potrebbe non essere visualizzata se non si è verificata alcuna battaglia tra risorse | |
config_sync_resource_group_total |
Gauge | Numero di RP ResourceGroup | |
config_sync_resource_ns_count |
Gauge | gruppo di risorse | Numero di spazi dei nomi utilizzati dalle risorse in un ResourceGroup |
config_sync_rg_reconcile_duration_seconds_bucket . |
Istogramma | motivo di stallo | Distribuzione temporale della riconciliazione di una RP ResourceGroup (distribuita nei bucket per durata) |
config_sync_rg_reconcile_duration_seconds_count |
Istogramma | motivo di stallo | Distribuzione del tempo per la riconciliazione di una RP ResourceGroup (ignoramento della durata) |
config_sync_rg_reconcile_duration_seconds_sum |
Istogramma | motivo di stallo | Somma del tempo totale di riconciliazione di una RP di ResourceGroup |
config_sync_kustomize_build_latency_bucket |
Istogramma | Distribuzione della latenza nel tempo di esecuzione di kustomize build (distribuito nei bucket per la durata di ogni operazione) |
|
config_sync_kustomize_build_latency_count |
Istogramma | Distribuzione della latenza nel tempo di esecuzione di kustomize build (nessuna durata) |
|
config_sync_kustomize_build_latency_sum |
Istogramma | Somma di tutti i tempi di esecuzione di kustomize build |
|
config_sync_kustomize_ordered_top_tier_metrics |
Gauge | top_tier_field | Utilizzo di risorse, generatori, SecretGenerator, ConfigMapGenerator, trasformatori e convalidatori |
config_sync_kustomize_builtin_transformers |
Gauge | k8s_builtin_transformer | Utilizzo di Transformer integrati relativi ai metadati degli oggetti Kubernetes |
config_sync_kustomize_resource_count |
Gauge | Numero di risorse generate da kustomize build |
|
config_sync_kustomize_field_count |
Gauge | field_name | Numero di volte in cui un determinato campo viene utilizzato nei file kustomization. |
config_sync_kustomize_patch_count |
Gauge | patch_field | Numero di patch nei campi patches , patchesStrategicMerge e patchesJson6902 |
config_sync_kustomize_base_count |
Gauge | base_source | Numero di basi remote e locali |
kustomize_deprecating_field_count |
Gauge | deprecating_field | Utilizzo di campi che potrebbero essere ritirati |
kustomize_simplification_adoption_count |
Gauge | simplification_field | Utilizzo di immagini, repliche e sostituzioni dei Transformer di semplificazione |
kustomize_helm_inflator_count |
Gauge | helm_inflator | Utilizzo di helm in kustomize, tramite i campi integrati o la funzione personalizzata |
Esempi di procedure di debug per Prometheus
I seguenti esempi illustrano alcuni pattern per l'utilizzo delle metriche di Prometheus, dei campi di stato degli oggetti e delle annotazioni degli oggetti al fine di rilevare e diagnosticare problemi relativi a Config Sync. Questi esempi mostrano come iniziare con un monitoraggio di alto livello che rileva un problema per poi perfezionare progressivamente la ricerca per visualizzare in dettaglio e diagnosticare la causa principale del problema.
Configurazioni delle query per stato
Il processo reconciler
fornisce metriche di alto livello che offrono insight utili per ottenere una visione complessiva del funzionamento di Config Sync sul cluster. Puoi
vedere se si sono verificati errori e perfino
configurare avvisi.
config_sync_reconciler_errors
Metriche query per riconciliatore
Se utilizzi le API Config Sync RootSync e RepoSync, puoi monitorare gli oggetti RootSync e RepoSync. Gli oggetti RootSync e RepoSync includono metriche di alto livello che offrono informazioni utili sul modo in cui Config Sync funziona sul cluster. Quasi tutte le metriche sono contrassegnate dal nome del riconciliatore, in modo da poter vedere se si sono verificati errori e configurare avvisi in merito in Prometheus.
Consulta l'elenco completo delle etichette delle metriche disponibili per l'applicazione di filtri.
In Prometheus, puoi utilizzare i seguenti filtri per le operazioni RootSync o 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}
Operazioni di importazione e sincronizzazione delle query 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 verificare le metriche per i processi di origine e di 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 soluzione multi-cloud completamente gestita di Google Cloud per le metriche Prometheus. Supporta due modalità per la raccolta dei dati: raccolta gestita (la modalità consigliata) o raccolta dei dati con deployment autonomo. Completa i seguenti passaggi per configurare il monitoraggio di Config Sync con Google Cloud Managed Service per Prometheus in modalità di raccolta gestita.
Abilita Prometheus gestito sul cluster seguendo le istruzioni in Configura 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
Verifica che i dati di Prometheus vengano esportati utilizzando la pagina Metrics Explorer di Cloud Monitoring nella console Google Cloud seguendo le istruzioni per dati Managed Service per Prometheus in Cloud Monitoring.