Esta página descreve como usar os indicadores do nível de serviço (INSs) do Config Sync.
Para receber notificações quando a sincronização de configuração não estiver a funcionar como previsto, configure regras de alerta do Prometheus com base nestes SLIs. Cada SLI inclui um exemplo de como criar uma regra de alerta. Para saber como usar o Prometheus com o Config Sync, consulte o artigo Monitorizar o Config Sync com métricas.
Pods do Config Sync com uma quantidade incorreta de contentores
Se a contagem de contentores de um Config Sync Pod for inferior ao esperado, o Config Sync pode não estar em execução. Pode configurar um alerta para detetar este problema e inspecionar o pod do Config Sync para descobrir por que motivo faltam alguns contentores. Ao definir os alertas, recomendamos que defina o intervalo de tempo para, pelo menos, cinco minutos para evitar alertas desnecessários. Por exemplo, durante a atualização, a contagem de contentores de um pod pode ficar abaixo do objetivo.
Se não conhecer a quantidade de contentores esperada, consulte o artigo Implementações, pods e contentores da sincronização de configuração.
Exemplos de regras de alerta do Prometheus
Esta secção inclui exemplos que lhe enviam uma notificação quando existem pods com uma quantidade de contentores incorreta.
Para receber uma notificação quando a contagem de contentores de um pod reconciliador 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 contentores de um reconciliador de espaço de nomes Pod 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 de contentores de um pod reconciler-manager 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
Recipientes de sincronização de configuração não saudáveis
Se a contagem de reinícios de um contentor do Config Sync atingir um determinado limite, algo está errado. Por exemplo, um contentor de reconciliação de raiz que não tenha recursos de memória suficientes é reiniciado com o erro OOMKilled
até ter memória suficiente.
Exemplo de regra de alerta do Prometheus
Para receber uma notificação quando um contentor 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á a deparar-se com erros persistentes
Se o Config Sync encontrar erros persistentes, significa que algo está errado. Quando o Config Sync encontra erros, tenta sincronizar repetidamente as configurações da origem para um cluster até ter êxito. No entanto, alguns erros não podem ser corrigidos ao tentar novamente e requerem a sua intervenção.
Exemplo de regra de alerta do Prometheus
Para receber uma notificação quando um reconciliador de raiz ou espaço de nomes encontrar erros persistentes durante 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:
- A etiqueta
configsync_sync_kind
pode ter os seguintes valores:RootSync
ouRepoSync
. - A etiqueta
configsync_sync_name
indica o nome de um objeto RootSync ou RepoSync. - A etiqueta
configsync_sync_namespace
indica o espaço de nomes de um objeto RootSync ou RepoSync. A etiqueta
errorclass
pode ter três valores:1xxx
,2xxx
e9xxx
. Cada etiqueta corresponde a um tipo de erro diferente:1xxx
erros: erros de configuração que pode corrigir2xxx
erros: erros do lado do servidor que pode não conseguir corrigir9xxx
erros: erros internos que não pode corrigir
O Config Sync está bloqueado na fase de sincronização
Uma tentativa de sincronização no Config Sync não é interrompível. Se as configurações na origem forem demasiado grandes ou complexas (por exemplo, a origem contém um número elevado de recursos do Config Connector), a sincronização destas configurações com o cluster pode demorar mais de uma hora. No entanto, se tiverem passado duas horas desde a última sincronização bem-sucedida, algo pode estar errado.
Pode verificar se a tentativa de sincronização atual ainda está em curso verificando o estado do RootSync ou do RepoSync. Se a tentativa de sincronização atual ainda estiver em curso, pode optar por dividir a sua fonte de dados fidedignos para que cada fonte de dados fidedignos possa ser sincronizada mais rapidamente ou aumentar o limite de alerta de duas horas para um período mais longo. Se não houver nenhuma tentativa de sincronização em curso, o reconciliador do Config Sync está danificado, uma vez que deve continuar a tentar até sincronizar as configurações da origem com o cluster com êxito. Se isto acontecer, encaminhe o problema para o Google Cloud apoio técnico.
Exemplo de regra de alerta do Prometheus
Para receber uma notificação quando a última sincronização bem-sucedida de um reconciliador de raiz ou espaço de nomes tiver ocorrido 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
O Config Sync está a sofrer regressões de desempenho
A sincronização de configurações pode ter regressões de desempenho após a atualização. As regressões de desempenho podem ocorrer das seguintes formas:
- Um aumento do tempo de processamento da conciliação de um objeto RootSync ou RepoSync
- Um aumento do tempo de processamento da conciliação de um objeto ResourceGroup
- Um aumento do tempo de processamento da sincronização de configurações da origem para um cluster
O tempo de processamento da conciliação de um objeto RootSync ou RepoSync
A reconciler-manager
implementação reconcilia os objetos RootSync e RepoSync.
Pode usar o percentil 90 do tempo de processamento da reconciliação de um objeto RootSync ou RepoSync para detetar regressões de desempenho.
Exemplos de regras de alerta do Prometheus
Esta secção inclui exemplos de regras de alerta do Prometheus que lhe enviam uma notificação quando a reconciler-manager
implementação tem regressões de desempenho.
Os exemplos seguintes enviam-lhe uma notificação quando o percentil 90 do tempo de processamento da conciliação de um objeto RootSync ou RepoSync nas últimas 5 horas for superior a 0,1 segundos durante 10 minutos. Pode criar regras de alerta que monitorizam todos os clusters ou um único cluster.
Crie a seguinte regra para monitorizar 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 seguinte regra para monitorizar 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
O tempo de processamento da conciliação de um objeto ResourceGroup
A resource-group-controller-manager
implementação reconcilia objetos ResourceGroup. Pode usar o percentil 90 do tempo de processamento da reconciliação de um ResourceGroup para detetar regressões de desempenho.
Exemplos de regras de alerta do Prometheus
Esta secção inclui regras de alerta do Prometheus que lhe enviam uma notificação quando a
resource-group-controller-manager
implementação tem regressões de desempenho.
Os exemplos seguintes enviam-lhe uma notificação quando o percentil 90 do tempo de processamento da conciliação de um objeto ResourceGroup nas últimas 5 horas for superior a 5 segundos durante 10 minutos. Pode criar regras de alerta que monitorizam todos os clusters ou um único cluster.
Crie a seguinte regra para monitorizar 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 seguinte regra para monitorizar 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
O tempo de processamento da sincronização de configurações da origem para um cluster
Um reconciliador de raiz ou espaço de nomes sincroniza as configurações da origem da verdade com um cluster. Pode usar o percentil 90 do tempo de sobrecarga da sincronização das configurações da origem para um cluster para detetar regressões de desempenho.
Exemplos de regras de alerta do Prometheus
Esta secção inclui regras de alerta do Prometheus que enviam uma notificação quando a implementação do reconciliador de raiz ou espaço de nomes tem regressões de desempenho.
Os exemplos seguintes enviam-lhe uma notificação quando o percentil 90 do tempo de sobrecarga da sincronização das configurações em todos os clusters nas últimas cinco horas for superior a uma hora durante cinco minutos.Pode criar regras de alerta que monitorizam todos os clusters ou um único cluster.
Crie a seguinte regra para monitorizar 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 seguinte regra para monitorizar 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