Questa pagina descrive come utilizzare gli indicatori del livello del servizio (SLI) di Config Sync.
Per ricevere notifiche quando la sincronizzazione della configurazione non funziona come previsto, configura le regole di avviso Prometheus in base a questi SLI. Ogni SLI include un esempio di come creare una regola di avviso. Per scoprire di più sull'utilizzo di Prometheus con Config Sync, consulta Monitora Config Sync con le metriche.
Pod Config Sync con numero di contenitori errato
Se il numero di contenitori di un pod Config Sync è inferiore al previsto, Config Sync potrebbe non essere in esecuzione. Puoi configurare un avviso per rilevare questo problema e ispezionare il pod di sincronizzazione della configurazione per capire perché alcuni container mancano. Quando imposti gli avvisi, ti consigliamo di impostare un intervallo di tempo minimo di cinque minuti per evitare avvisi non necessari. Ad esempio, durante l'upgrade, il conteggio dei contenitori di un pod potrebbe scendere al di sotto del target.
Se non hai dimestichezza con il numero di contenitori previsto, consulta Deployment, pod e contenitori di Config Sync.
Esempi di regole di avviso Prometheus
Questa sezione include esempi che ti avvisano quando sono presenti pod con un conteggio errato dei container.
Per ricevere una notifica quando il conteggio dei contenitori di un pod di riconciliatore principale è inferiore al conteggio previsto, crea la seguente regola di avviso:
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
Per ricevere una notifica quando il conteggio dei contenitori di un pod di riconciliazione del nome di spazio è inferiore al conteggio previsto, crea la seguente regola di avviso:
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
Per ricevere una notifica quando il conteggio dei contenitori di un pod di gestione del riconciliatore è inferiore al conteggio previsto, crea la seguente regola di avviso:
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 non integri
Se il conteggio dei riavvii di un contenitore Config Sync raggiunge una determinata
soglia, significa che c'è un problema. Ad esempio, un contenitore di riconciliazione principale che
non dispone di risorse di memoria sufficienti si riavvia con l'errore OOMKilled
fino a quando non riceve memoria sufficiente.
Esempio di regola di avviso Prometheus
Per ricevere una notifica quando un contenitore Config Sync è stato riavviato più di tre volte, crea la seguente regola di avviso:
alert: TooManyContainerRestarts
expr: kubernetes_io:container_restart_count{namespace_name=~"config-management-system|config-management-monitoring|resource-group-system"} > 3
Config Sync riscontra errori persistenti
Se Config Sync rileva errori persistenti, significa che c'è un problema. Quando Config Sync riscontra errori, continua a riprovare a sincronizzare le configurazioni dall'origine a un cluster finché non riesce. Tuttavia, alcuni errori non possono essere corretti riprovando e richiedono il tuo intervento.
Esempio di regola di avviso Prometheus
Per ricevere una notifica quando un riconciliatore della radice o del nome dello spazio dei nomi riscontra errori persistenti per due ore, crea la seguente regola di avviso:
alert: PersistentConfigSyncErrors
expr: sum by (cluster, configsync_sync_kind, configsync_sync_name, configsync_sync_namespace, errorclass) (config_sync_reconciler_errors) > 0
for: 2h
In questo esempio:
- L'etichetta
configsync_sync_kind
può avere i seguenti valori:RootSync
oRepoSync
. - L'etichetta
configsync_sync_name
indica il nome di un oggetto RootSync o RepoSync. - L'etichetta
configsync_sync_namespace
indica lo spazio dei nomi di un oggetto RootSync o RepoSync. L'etichetta
errorclass
può avere tre valori:1xxx
,2xxx
e9xxx
. Ogni etichetta corrisponde a un tipo di errore diverso:1xxx
errori: errori di configurazione che puoi correggere- Errori
2xxx
: errori lato server che potresti non essere in grado di correggere - Errori
9xxx
: errori interni che non puoi correggere
Config Sync bloccato nella fase di sincronizzazione
Un tentativo di sincronizzazione in Config Sync non è interrompibile. Se le configurazioni nell'origine sono troppo grandi o complesse (ad esempio, l'origine contiene un numero elevato di risorse Config Connector), la sincronizzazione di queste configurazioni con il cluster può richiedere più di un'ora. Tuttavia, se sono trascorse due ore dall'ultima sincronizzazione riuscita, potrebbe esserci un problema.
Puoi verificare se il tentativo di sincronizzazione corrente è ancora in corso controllando lo stato di RootSync o RepoSync. Se il tentativo di sincronizzazione in corso è ancora in corso, puoi scegliere di suddividere l'origine attendibile in modo che ogni origine attendibile possa essere sincronizzata più velocemente oppure aumentare la soglia di avviso da due ore a un periodo di tempo più lungo. Se non è in corso alcun tentativo di sincronizzazione, il riconciliatore Config Sync è danneggiato perché dovrebbe continuare a riprovare finché non sincronizza le configurazioni dall'origine al cluster. In questo caso, riassegna la richiesta all'assistenzaGoogle Cloud .
Esempio di regola di avviso Prometheus
Per ricevere una notifica quando l'ultima sincronizzazione riuscita di un riconciliatore della radice o dello spazio dei nomi è avvenuta più di due ore fa, crea una regola di avviso:
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 presenta regressioni delle prestazioni
Config Sync potrebbe presentare regressioni delle prestazioni dopo l'upgrade. Le regressioni del rendimento possono verificarsi nei seguenti modi:
- Un aumento del tempo necessario per la riconciliazione di un oggetto RootSync o RepoSync
- Un aumento del tempo necessario per la riconciliazione di un oggetto ResourceGroup
- Un aumento del tempo necessario per sincronizzare le configurazioni dall'origine a un cluster
Il sovraccarico di tempo per la riconciliazione di un oggetto RootSync o RepoSync
Il deployment reconciler-manager
riconcilia gli oggetti RootSync e RepoSync.
Puoi utilizzare il percentile 90 del tempo di overhead della riconciliazione di un oggetto RootSync o RepoSync per rilevare le regressioni del rendimento.
Esempi di regole di avviso Prometheus
Questa sezione include esempi di regole di avviso Prometheus che ti avvisano quando il deployment di reconciler-manager
presenta regressioni del rendimento.
I seguenti esempi ti inviano una notifica quando il 90° percentile del tempo aggiuntivo necessario per la riconciliazione di un oggetto RootSync o RepoSync nelle ultime 5 ore supera 0,1 secondi per 10 minuti. Puoi creare regole di avviso che monitorano tutti i cluster o un singolo cluster.
Crea la seguente regola per monitorare tutti i cluster:
alert: HighLatencyReconcileRootSyncAndRepoSyncOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_reconcile_duration_seconds_bucket[5h]))) > 0.1 for: 10m
Crea la seguente regola per monitorare un singolo cluster:
alert: HighLatencyReconcileRootSyncAndRepoSyncClusterLevel expr: histogram_quantile(0.9, sum by (cluster, le) (rate(config_sync_reconcile_duration_seconds_bucket[5h]))) > 0.1 for: 10m
Il sovraccarico di tempo della riconciliazione di un oggetto ResourceGroup
Il deployment resource-group-controller-manager
riconcilia gli oggetti ResourceGroup. Puoi utilizzare il percentile 90 del tempo di overhead della riconciliazione di un ResourceGroup per rilevare le regressioni del rendimento.
Esempi di regole di avviso Prometheus
Questa sezione include regole di avviso Prometheus che ti avvisano quando il deployment resource-group-controller-manager
presenta regressioni delle prestazioni.
I seguenti esempi ti inviano una notifica quando il percentile 90 del tempo aggiuntivo necessario per la riconciliazione di un oggetto ResourceGroup nelle ultime 5 ore supera i 5 secondi per 10 minuti. Puoi creare regole di avviso che monitorano tutti i cluster o un singolo cluster.
Crea la seguente regola per monitorare tutti i cluster:
alert: HighLatencyReconcileResourceGroupOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_rg_reconcile_duration_seconds_bucket[5h]))) > 5 for: 10m
Crea la seguente regola per monitorare un singolo cluster:
alert: HighLatencyReconcileResourceGroupClusterLevel expr: histogram_quantile(0.9, sum by (cluster, le) (rate(config_sync_rg_reconcile_duration_seconds_bucket[5h]))) > 5 for: 10m
Il sovraccarico di tempo della sincronizzazione delle configurazioni dall'origine a un cluster
Un riconciliatore principale o dello spazio dei nomi sincronizza le configurazioni dalla fonte attendibile a un cluster. Puoi utilizzare il percentile 90 del sovraccarico di tempo della sincronizzazione delle configurazioni dall'origine a un cluster per rilevare le regressioni del rendimento.
Esempi di regole di avviso Prometheus
Questa sezione include regole di avviso Prometheus che ti avvisano quando il deployment del riconciliatore del nome della casa base o del nome dello spazio dei nomi presenta regressioni del rendimento.
Gli esempi riportati di seguito inviano una notifica quando il percentile 90 del tempo aggiuntivo necessario per sincronizzare le configurazioni su tutti i cluster nelle ultime cinque ore supera un'ora per cinque minuti.Puoi creare regole di avviso che monitorano tutti i cluster o un singolo cluster.
Crea la seguente regola per monitorare tutti i cluster:
alert: HighApplyDurationOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_apply_duration_seconds_bucket[5h]))) > 3600 for: 5m
Crea la seguente regola per monitorare un singolo 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