Utilizzare gli SLI di Config Sync

Questa pagina descrive come utilizzare gli indicatori del livello di servizio di Config Sync (SLI).

Per ricevere notifiche quando Config Sync non funziona come previsto, configura Regole di avviso di Prometheus basate su questi SLI. Ogni SLI include un esempio di come creare un avviso personalizzata. Per ulteriori informazioni sull'utilizzo di Prometheus con Config Sync, consulta Monitor Config Sync con 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 familiarità con il numero di container previsto, consulta Config Sync di deployment, pod e container.

Esempi di regole di avviso di Prometheus

Questa sezione include esempi che ti informano quando sono presenti pod con un'etichetta conteggio container errato.

  • Per ricevere una notifica quando il conteggio dei container di un pod di riconciliazione radice è 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 in stato non integro

Se il conteggio dei riavvii di un container Config Sync raggiunge un determinato 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 si è 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

Si verificano errori persistenti in Config Sync

Se Config Sync riscontra errori persistenti, significa che si è verificato 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 dell'intervento.

Esempio di regola di avviso di Prometheus

Per ricevere una notifica quando un riconciliatore principale o dello spazio dei nomi rileva 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 o RepoSync.
  • 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 e 9xxx. Ogni etichetta corrisponde a un tipo di errore diverso:

    • 1xxx errori: errori di configurazione che puoi correggere
    • 2xxx errori: errori lato server che potresti non essere in grado di correggere
    • 9xxx errori: 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 nel sono troppo grandi o complesse (ad esempio, contiene un elevato numero delle risorse di Config Connector), il completamento della sincronizzazione di queste configurazioni può richiedere più di un'ora nel cluster. 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 la Stato RootSync o RepoSync. Se il tentativo di sincronizzazione corrente è ancora in corso, puoi scegliere di suddividere la tua fonte di riferimento in modo che ogni fonte attendibile possa essere sincronizzata più velocemente o aumentare soglia di avviso da due ore a una durata maggiore. Se non è in corso alcun tentativo di sincronizzazione, il riconciliatore della sincronizzazione delle configurazioni è danneggiato perché dovrebbe continuare a riprovare finché non sincronizza le configurazioni dall'origine al cluster. In questo caso, riassegna la richiesta all'assistenza Google Cloud.

Esempio di regola di avviso Prometheus

Per ricevere una notifica quando l'ultima sincronizzazione riuscita di un riconciliatore della radice o del nome spazio è 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

In Config Sync si verificano regressioni delle prestazioni

Dopo l'upgrade, Config Sync potrebbe presentare una regressione delle prestazioni. Le regressioni del rendimento possono verificarsi nei seguenti modi:

  • Un aumento dell'overhead di tempo per la riconciliazione di una RootSync o un RepoSync oggetto
  • Un aumento dell'overhead di tempo per la riconciliazione di un oggetto ResourceGroup
  • Un aumento dell'overhead di tempo per la sincronizzazione delle configurazioni dall'origine a un cluster

Il sovraccarico di tempo della 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 di Prometheus

Questa sezione include esempi di regole di avviso Prometheus che ti informano quando il deployment reconciler-manager presenta regressioni delle prestazioni.

I seguenti esempi ti inviano una notifica quando il 90° percentile di l'overhead di tempo per la riconciliazione di un oggetto RootSync o RepoSync negli ultimi 5 ore è superiore a 0,1 secondi per 10 minuti. Puoi creare regole di avviso per monitorare 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
    

L'overhead di tempo per la riconciliazione di un oggetto ResourceGroup

Il deployment resource-group-controller-manager riconcilia ResourceGroup di oggetti strutturati. 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 di 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 per monitorare 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 radice o dello spazio dei nomi sincronizza le configurazioni dall'origine 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 directory o della radice presenta regressioni del rendimento.

I seguenti esempi ti 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