Utilizza gli SLI di Config Sync

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

Per ricevere notifiche quando Config Sync non funziona come previsto, configura le regole di avviso di Prometheus basate su questi SLI. Ogni SLI include un esempio di come creare una regola di avviso. Per saperne di più sull'utilizzo di Prometheus con Config Sync, consulta Monitor Config Sync con metriche.

Pod Config Sync con numero di container errato

Se il numero di container di un pod di Config Sync è inferiore a quello previsto, è possibile che Config Sync non sia in esecuzione. Puoi configurare un avviso per rilevare questo problema e ispezionare il pod di Config Sync per capire perché mancano alcuni container. Quando imposti gli avvisi, ti consigliamo di impostare l'intervallo di tempo su almeno cinque minuti per evitare avvisi non necessari. Ad esempio, durante l'upgrade, il numero dei container di un pod potrebbe scendere al di sotto della destinazione.

Se non hai dimestichezza 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 conteggio dei container non corretto.

  • Per ricevere una notifica quando il numero di container di un pod di riconciliazione principale è inferiore al numero 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 container di un pod di riconciliazione dello spazio dei nomi è inferiore al numero 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 numero di container di un pod di riconciliazione-gestore è inferiore al numero 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 di Config Sync non integri

Se il conteggio dei riavvii di un container Config Sync raggiunge una determinata soglia, si è verificato un problema. Ad esempio, un container del riconciliatore radice che non dispone di risorse di memoria sufficienti si riavvia con l'errore OOMKilled finché non riceve memoria sufficiente.

Esempio di regola di avviso di Prometheus

Per ricevere una notifica quando un container di Config Sync viene riavviato per 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 sono verificati errori persistenti in Config Sync

Se Config Sync riscontra errori persistenti, si è verificato un problema. Quando Config Sync rileva errori, continua a riprovare a sincronizzare le configurazioni dall'origine a un cluster fino a quando l'operazione non va a buon fine. Tuttavia, alcuni errori non possono essere corretti riprovando e richiedono un tuo intervento.

Esempio di regola di avviso di Prometheus

Per ricevere una notifica quando uno strumento di riconciliazione principale o dello spazio dei nomi rileva 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 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 diverso di errore:

    • 1xxx errori: errori di configurazione da correggere
    • 2xxx errori: errori lato server che potresti non essere in grado di correggere
    • 9xxx errore: errori interni che non puoi correggere

Config Sync bloccato nella fase di sincronizzazione

Un tentativo di sincronizzazione in Config Sync non è interrompebile. Se le configurazioni nell'origine sono troppo grandi o complesse (ad esempio, l'origine contiene un numero elevato di risorse di Config Connector), il completamento della 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 attuale è ancora in corso controllando lo stato di RootSync o RepoSync. Se l'attuale tentativo di sincronizzazione è ancora in corso, puoi scegliere di suddividere la fonte attendibile in modo che ogni fonte attendibile possa essere sincronizzata più velocemente oppure aumentare la soglia di avviso da due ore a un periodo più lungo. Se non sono presenti tentativi di sincronizzazione in corso, il riconciliatore di Config Sync non funziona perché dovrebbe continuare a riprovare finché non sincronizza correttamente le configurazioni dall'origine al cluster. In questo caso, riassegna la richiesta all'assistenza Google Cloud.

Esempio di regola di avviso di Prometheus

Per ricevere una notifica se l'ultima sincronizzazione riuscita di un riconciliatore 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

Si sono verificate regressioni delle prestazioni in Config Sync

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

  • Un aumento del tempo overhead 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 overhead associato alla sincronizzazione delle configurazioni dall'origine a un cluster

Il sovraccarico temporale per la riconciliazione di un oggetto RootSync o RepoSync

Il deployment di reconciler-manager riconcilia gli oggetti RootSync e RepoSync. Puoi utilizzare il novantesimo percentile dell'overhead temporale della riconciliazione di un oggetto RootSync o RepoSync per rilevare le regressioni delle prestazioni.

Esempi di regole di avviso di Prometheus

Questa sezione include esempi di regole di avviso di Prometheus che ti inviano una notifica quando il deployment reconciler-manager subisce regressioni delle prestazioni.

I seguenti esempi ti inviano una notifica quando il novantesimo percentile del sovraccarico di tempo per la riconciliazione di un oggetto RootSync o RepoSync nelle ultime 5 ore è superiore a 0,1 secondi per 10 minuti. Puoi creare regole di avviso per monitorare tutti i cluster o uno solo.

  • 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 regola seguente 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 temporale per la riconciliazione di un oggetto ResourceGroup

Il deployment resource-group-controller-manager riconcilia gli oggetti ResourceGroup. Puoi utilizzare il novantesimo percentile dell'overhead temporale della riconciliazione di un ResourceGroup per rilevare le regressioni delle prestazioni.

Esempi di regole di avviso di Prometheus

Questa sezione include le regole di avviso di Prometheus che ti inviano una notifica quando il deployment resource-group-controller-manager presenta regressioni delle prestazioni.

I seguenti esempi ti inviano una notifica quando il 90° percentile dell'overhead di tempo 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 uno solo.

  • 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 regola seguente 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
    

L'overhead in termini di tempo per la sincronizzazione delle configurazioni dall'origine a un cluster

Uno strumento di riconciliazione radice o dello spazio dei nomi sincronizza le configurazioni dall'origine attendibile a un cluster. Puoi utilizzare il novantesimo percentile dell'overhead temporale delle configurazioni di sincronizzazione dall'origine a un cluster per rilevare le regressioni delle prestazioni.

Esempi di regole di avviso di Prometheus

Questa sezione include le regole di avviso di Prometheus che inviano una notifica quando il deployment dello strumento di riconciliazione principale o dello spazio dei nomi presenta regressioni delle prestazioni.

Gli esempi seguenti ti inviano una notifica quando il novantesimo percentile del sovraccarico di tempo delle configurazioni di sincronizzazione in tutti i cluster nelle ultime cinque ore è superiore a un'ora per cinque 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: HighApplyDurationOverall
    expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_apply_duration_seconds_bucket[5h]))) > 3600
    for: 5m
    
  • Crea la regola seguente 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