Nesta página, descrevemos como usar os indicadores de nível de serviço (SLIs) do Config Sync.
Para receber notificações quando o Config Sync não estiver funcionando conforme o esperado, configure as regras de alerta do Prometheus com base nesses SLIs. Cada SLI inclui um exemplo de como criar uma regra de alerta. Para saber mais sobre como usar o Prometheus com o Config Sync, consulte Monitorar o Config Sync com métricas.
Pods do Config Sync com contagem incorreta de contêineres
Se a contagem do contêiner de um pod do Config Sync for menor que o esperado, talvez o Config Sync não esteja em execução. É possível configurar um alerta para detectar esse problema e inspecionar o pod do Config Sync para descobrir por que alguns contêineres estão ausentes. Para evitar alertas desnecessários, defina o intervalo de tempo para pelo menos cinco minutos. Por exemplo, durante o upgrade, a contagem de contêineres de um pod pode ficar abaixo do objetivo.
Se você não souber a contagem de contêineres esperada, consulte Implantações, pods e contêineres do Config Sync.
Exemplos de regras de alertas do Prometheus
Esta seção inclui exemplos que notificam você quando há pods com uma contagem de contêineres incorreta.
Para receber uma notificação quando a contagem de contêineres de um pod de reconciliação raiz estiver abaixo da contagem esperada, crie a seguinte regra de alerta:
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
Para receber uma notificação quando a contagem de contêineres de um pod de reconciliação de namespace estiver abaixo da contagem esperada, crie a seguinte regra de alerta:
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
Para receber uma notificação quando a contagem do contêiner de um pod de reconciliação-administrador estiver abaixo da contagem esperada, crie a seguinte regra de alerta:
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
Contêineres não íntegros do Config Sync
Se a contagem de reinicializações de um contêiner do Config Sync atingir um determinado limite, isso significa que há algo errado. Por exemplo, um contêiner de reconciliação raiz que
não tem recursos de memória suficientes será reiniciado com o erro OOMKilled
até conseguir memória suficiente.
Exemplo de regra de alerta do Prometheus
Para receber uma notificação quando um contêiner do Config Sync for reiniciado mais de três vezes, crie a seguinte regra de alerta:
alert: TooManyContainerRestarts
expr: kubernetes_io:container_restart_count{namespace_name=~"config-management-system|config-management-monitoring|resource-group-system"} > 3
O Config Sync está encontrando erros persistentes
Se o Config Sync encontrar erros persistentes, isso significa que há algo errado. Quando o Config Sync encontra erros, ele continua tentando sincronizar as configurações da origem com um cluster até ser bem-sucedido. No entanto, alguns erros não podem ser corrigidos ao tentar novamente e exigem sua intervenção.
Exemplo de regra de alerta do Prometheus
Para receber uma notificação quando um reconciliador de raiz ou namespace encontrar erros persistentes por duas horas, crie a seguinte regra de alerta:
alert: PersistentConfigSyncErrors
expr: sum by (cluster, configsync_sync_kind, configsync_sync_name, configsync_sync_namespace, errorclass) (config_sync_reconciler_errors) > 0
for: 2h
Neste exemplo:
- O identificador
configsync_sync_kind
pode ter os seguintes valores:RootSync
ouRepoSync
. - O identificador
configsync_sync_name
indica o nome de um objeto RootSync ou RepoSync. - O identificador
configsync_sync_namespace
indica o namespace de um objeto RootSync ou RepoSync. O identificador
errorclass
pode ter três valores:1xxx
,2xxx
e9xxx
. Cada identificador corresponde a um tipo diferente de erro:- Erros de
1xxx
: erros de configuração que podem ser corrigidos por você 2xxx
erro: erros do lado do servidor que você não consegue corrigir9xxx
erro: erros internos que não podem ser corrigidos por você
- Erros de
O Config Sync trava no estágio de sincronização
Uma tentativa de sincronização no Config Sync é ininterrupta. Se as configurações na origem forem muito grandes ou complexas (por exemplo, se a origem tiver um número alto de recursos do Config Connector), pode levar mais de uma hora para terminar de sincronizar essas configurações com o cluster. No entanto, se já se passaram duas horas desde a última sincronização bem-sucedida, algo pode estar errado.
Para verificar se a tentativa de sincronização atual ainda está em andamento, verifique o status de RootSync ou RepoSync. Se a tentativa de sincronização atual ainda estiver em andamento, é possível dividir sua fonte de verdade para que todas as fontes da verdade possam ser sincronizadas mais rapidamente ou aumentar o alerta de duas horas para algo mais longo. Se não houver tentativa de sincronização em andamento, o reconciliador do Config Sync está corrompido porque precisa continuar tentando sincronizar as configurações da origem com o cluster. Se isso acontecer, encaminhe para o suporte do Google Cloud.
Exemplo de regra de alerta do Prometheus
Para receber uma notificação quando a última sincronização de um reconciliador de raiz ou namespace tiver sido há mais de duas horas, crie uma regra de alerta:
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 com regressões de desempenho
O Config Sync pode ter regressões de desempenho após o upgrade. As regressões de desempenho podem acontecer das seguintes maneiras:
- um aumento na sobrecarga de tempo de reconciliação de um objeto RootSync ou RepoSync;
- um aumento na sobrecarga de tempo de reconciliação de um objeto ResourceGroup;
- um aumento na sobrecarga de tempo de sincronização de configurações da origem para um cluster;
a sobrecarga de tempo de reconciliação de um objeto RootSync ou RepoSync.
A implantação reconciler-manager
reconcilia objetos RootSync e RepoSync.
Use o percentil 99 da sobrecarga de tempo de reconciliação de um objeto
RootSync ou RepoSync para detectar regressões de desempenho.
Exemplos de regras de alertas do Prometheus
Nesta seção, incluímos exemplos de regras de alerta do Prometheus que notificam você quando
a implantação reconciler-manager
tem regressões de desempenho.
Os exemplos a seguir enviam uma notificação quando o percentil 99 da sobrecarga de tempo de reconciliação de um objeto RootSync ou RepoSync nas últimas 5 horas é maior que 0,1 segundo por 10 minutos. É possível criar regras de alerta que monitorem todos os clusters ou apenas um.
Crie a regra a seguir para monitorar todos os clusters:
alert: HighLatencyReconcileRootSyncAndRepoSyncOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_reconcile_duration_seconds_bucket[5h]))) > 0.1 for: 10m
Crie a regra a seguir para monitorar um único cluster:
alert: HighLatencyReconcileRootSyncAndRepoSyncClusterLevel expr: histogram_quantile(0.9, sum by (cluster, le) (rate(config_sync_reconcile_duration_seconds_bucket[5h]))) > 0.1 for: 10m
A sobrecarga de tempo de reconciliação de um objeto ResourceGroup
A implantação resource-group-controller-manager
reconcilia objetos ResourceGroup. É possível usar o percentil 99 da sobrecarga de tempo de
reconciliação de
um ResourceGroup para capturar regressões de desempenho.
Exemplos de regras de alertas do Prometheus
Esta seção inclui regras de alerta do Prometheus que notificam você quando a implantação
resource-group-controller-manager
tem regressões de desempenho.
Os exemplos a seguir enviam uma notificação quando o percentil 99 da sobrecarga de tempo de reconciliação de um objeto ResourceGroup nas últimas 5 horas é maior que 5 segundos por 10 minutos. É possível criar regras de alerta que monitorem todos os clusters ou apenas um.
Crie a regra a seguir para monitorar todos os clusters:
alert: HighLatencyReconcileResourceGroupOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_rg_reconcile_duration_seconds_bucket[5h]))) > 5 for: 10m
Crie a regra a seguir para monitorar um único cluster:
alert: HighLatencyReconcileResourceGroupClusterLevel expr: histogram_quantile(0.9, sum by (cluster, le) (rate(config_sync_rg_reconcile_duration_seconds_bucket[5h]))) > 5 for: 10m
A sobrecarga de tempo de sincronização das configurações da origem para um cluster
Um reconciliador de raiz ou namespace sincroniza as configurações da fonte da verdade com um cluster. Use o percentil 99 da sobrecarga de tempo de sincronização das configurações da origem com um cluster para detectar regressões de desempenho.
Exemplos de regras de alertas do Prometheus
Esta seção inclui regras de alerta do Prometheus que notificam você quando a implantação do reconciliador de raiz ou namespace tem regressões de desempenho.
Os exemplos a seguir enviam uma notificação quando o percentil 99 da sobrecarga de tempo de sincronização das configurações em todos os clusters nas últimas cinco horas é superior a uma hora por cinco minutos. Você pode criar regras de alerta que monitoram todos os clusters ou um cluster.
Crie a regra a seguir para monitorar todos os clusters:
alert: HighApplyDurationOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_apply_duration_seconds_bucket[5h]))) > 3600 for: 5m
Crie a regra a seguir para monitorar um único 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