Monitorar o Config Sync no modo de vários repositórios

Nesta página, você verá outras maneiras de monitorar seus recursos ao usar o Config Sync para sincronizar com vários repositórios. A sincronização de vários repositórios será ativada por padrão se você tiver usado o Console do Google Cloud ou a ferramenta de linha de comando gcloud para instalar o Config Sync com uma versão 1.7.0 ou posterior. Se você instalou o Config Sync usando kubectl, defina spec.enableMultiRepo como true no objeto ConfigManagement.

Quando você ativa o modo de vários repositórios, o Config Sync usa o OpenCensus para criar e gravar métricas e o OpenTelemetry para exportar as métricas para o Prometheus e Cloud Monitoring Também é possível usar o OpenTelemety para exportar métricas para um sistema de monitoramento personalizado. Esse processo oferece três maneiras de monitorar os recursos:

  1. Prometheus: para usar o Prometheus, consulte Como monitorar o Config Sync usando o Prometheus.
  2. Cloud Monitoring: para usar o Cloud Monitoring, consulte a seção Recursos de monitoramento com o Cloud Monitoring.
  3. Sistema de monitoramento personalizado: para usar um sistema de monitoramento personalizado, consulte a seção Como configurar um exportador personalizado do OpenTelemetry.

Métricas disponíveis

O Config Sync e o Controlador de grupos de recursos coletam as métricas a seguir e as disponibilizam para o OpenTelemetry. A coluna Tags lista todos os Tags aplicáveis a cada métrica. As métricas com tags representam várias medidas, uma para cada combinação de valores de tag.

Métricas do Config Sync

Nome Tipo Tags Descrição
api_duration_seconds Distribuição reconciliador, operação, tipo, status A distribuição de latência das chamadas do servidor de API
apply_duration_seconds Distribuição conciliador, status A distribuição de latência de eventos de sincronização de recursos do aplicativo
apply_operations_total Contagem reconciliador, operação, tipo, status O número total de operações realizadas para sincronizar recursos com a fonte da verdade
declared_resources Último valor conciliador O número de recursos declarados analisados do Git
internal_errors_total Contagem reconciliador, origem O número total de erros internos acionados pelo Config Sync
last_apply_timestamp Último valor conciliador, status O carimbo de data/hora do evento de sincronização de recurso mais recente
last_sync_timestamp Último valor conciliador O carimbo de data/hora da sincronização mais recente do Git
parse_duration_seconds Distribuição conciliador, status A distribuição de latência de eventos de análise
parse_errors_total Contagem reconciliador, código de erro Número total de erros que ocorreram durante a análise
parser_duration_seconds Distribuição reconciliação, status, acionador, origem A distribuição de latência da repetição analisar-aplicar-verificar
pipeline_error_observed Último valor nome, reconciliador, componente O status dos recursos personalizados RootSync e RepoSync. Um valor de 1 indica uma falha. reconciler precisa ser reposync ou rootsync, e component precisa ser source, rendering, sync ou readiness.
reconcile_duration_seconds Distribuição status A distribuição de latência de eventos de reconciliação manipulados pelo gerenciador de reconciliação.
reconciler_errors Último valor reconciliador, componente O número de erros nos registradores RootSync e RepoSync
remediate_duration_seconds Distribuição conciliador, tipo, status A distribuição de latência de eventos de reconciliação do remediador
resource_conflicts_total Contagem reconciliador, tipo O número total de conflitos de recursos resultantes de uma incompatibilidade entre os recursos em cache e os recursos de cluster
resource_fights_total Contagem reconciliador, operação, tipo O número total de recursos que estão sendo sincronizados com muita frequência. Qualquer resultado maior que zero indica um problema. Para mais informações, consulte KNV2005: ResourceFackWarning.
watch_manager_updates_duration_seconds Distribuição conciliador, status A distribuição de latência das atualizações do gerenciador de exibição
relógios Contagem reconciliador, tipo O número de relógios nos recursos declarados

Métricas do controlador de grupo de recursos

O controlador de grupo de recursos é um componente do Config Sync que monitora os recursos gerenciados e verifica se cada recurso individual está pronto ou reconciliado. As métricas a seguir estão disponíveis nas versões 1.10 e posteriores do Anthos Config Management.

Nome Tipo Tags Descrição
reconcile_duration_seconds Distribuição parada A distribuição do tempo necessário para reconciliar uma resposta automática do ResourceGroup
resource_group_total Último valor O número atual de CRs de ResourceGroup
resource_count_total Sum O número total de recursos rastreados por todas as respostas automáticas do ResourceGroup no cluster.
resource_count Último valor resourcegroup O número total de recursos rastreados por um ResourceGroup
ready_resource_count_total Sum O número total de recursos prontos em todas as respostas automáticas do ResourceGroup no cluster
ready_resource_count Último valor resourcegroup O número total de recursos prontos em um ResourceGroup
resource_ns_count Último valor resourcegorup O número de namespaces usados por recursos em um ResourceGroup
cluster_scoped_resource_count Último valor resourcegroup O número de recursos com escopo de cluster em um ResourceGroup
crd_count Último valor resourcegroup O número de CRDs em um ResourceGroup
kcc_resource_count_total Sum O número total de recursos do Config Connector em todas as respostas automáticas do ResourceGroup no cluster
pipeline_error_ovserved Último valor nome, reconciliador, componente O status dos recursos personalizados RootSync e RepoSync. Um valor de 1 indica uma falha. reconciler precisa ser reposync ou rootsync, e component precisa ser source, rendering, sync ou readiness.

Monitorar recursos com o Cloud Monitoring

Se o Config Sync estiver em execução em um ambiente do Google Cloud que tenha uma conta de serviço padrão, o Config Sync exportará automaticamente as métricas para o Cloud Monitoring.

Se a Identidade da carga de trabalho estiver ativada, você precisará vincular a conta de serviço default do Kubernetes no namespace config-management-monitoring a uma conta de serviço do Google com o papel de gravador de métricas. Para isso, use o comando:

gcloud iam service-accounts add-iam-policy-binding \
  --role roles/iam.workloadIdentityUser \
  --member "serviceAccount:PROJECT_ID.svc.id.goog[config-management-monitoring/default]" \
  GSA_NAME@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • GSA_NAME: a conta de serviço do Google com o papel de gravador de métricas
  • PROJECT_ID: ID do projeto

Essa ação requer a permissão iam.serviceAccounts.setIamPolicy no projeto.

Em seguida, anote a conta de serviço do Kubernetes usando o endereço de e-mail da conta de serviço do Google.

kubectl annotate serviceaccount \
  --namespace config-management-monitoring \
  default \
  iam.gke.io/gcp-service-account=GSA_NAME@PROJECT_ID.iam.gserviceaccount.com

Para ver exemplos de como visualizar essas métricas, consulte a seção Procedimentos de depuração de exemplo a seguir e o artigo Métricas do OpenCensus no Cloud Monitoring.

Procedimentos de depuração de exemplo

Os exemplos do Cloud Monitoring a seguir ilustram alguns padrões para usar as métricas do OpenCensus para detectar e diagnosticar problemas relacionados ao Config Sync, quando você está usando o modo de vários repositórios.

Formato da métrica

No Cloud Monitoring, as métricas têm o seguinte formato: custom.googleapis.com/opencensus/config_sync/METRIC.

Esse nome de métrica é composto dos seguintes componentes:

  • custom.googleapis.com: todas as métricas personalizadas têm este prefixo
  • opencensus: esse prefixo é adicionado porque o Config Sync usa a biblioteca do OpenCensus.
  • config_sync/: as métricas que o Config Sync exporta para o Cloud Monitoring têm esse prefixo.
  • METRIC: o nome da métrica que você quer consultar

Consultar métricas por reconciliador

Objetos do RootSync e RepoSync são instrumentados com métricas de alto nível que fornecem insights úteis sobre como o Config Sync está operando no cluster. Quase todas as métricas são marcadas com tag pelo nome do reconciliador. Assim, você vê se ocorreu algum erro e pode configurar alertas para ele no Cloud Monitoring.

Um reconciliador é um pod implantado como uma implantação. Ele sincroniza manifestos de um repositório Git com um cluster. Quando você cria um objeto do RootSync, o Config Sync cria um reconciliador chamado root-reconciler. Quando você cria um objeto do RepoSync, o Config Sync cria um reconciliador chamado ns-reconciler-NAMESPACE, em que NAMESPACE é o namespace no qual você criou o objeto o RepoSync.

O diagrama a seguir mostra como os pods de reconciliação funcionam:

Fluxo do reconciliação

Por exemplo, para filtrar pelo nome do validador, quando estiver usando o Cloud Monitoring, conclua as seguintes tarefas:

  1. No Console do Google Cloud, acesse o Monitoring:

    Acessar Monitoring

  2. No painel de navegação do Monitoring, clique em Metrics explorer.

  3. Na caixa Localizar tipo de recurso e métrica, adicione: custom.googleapis.com/opencensus/config_sync/reconciler_errors.

  4. Na lista suspensa Filtro, selecione root_reconcil. Uma caixa de campos de filtro é exibida.

  5. Na caixa de campos de filtro, selecione = no primeiro campo e root-reconcility no segundo.

  6. Clique em Aplicar.

Agora você pode ver as métricas dos seus objetos RootSync.

Para mais instruções sobre como filtrar por um tipo de dado específico, consulte Como filtrar os dados.

Consultar operações do Config Sync por componente e status

No modo de vários repositórios do, a importação e a origem de um repositório Git e a sincronização com um cluster são gerenciadas pelos reconciliadores. A métrica reconciler_errors é identificada pelo componente para que você possa ver onde ocorreram erros.

Por exemplo, para filtrar por componente ao usar o Cloud Monitoring, conclua as seguintes tarefas:

  1. No Console do Google Cloud, acesse o Monitoring:

    Acessar Monitoring

  2. No painel de navegação do Monitoring, clique em Metrics explorer.

  3. Na caixa Localizar tipo de recurso e métrica, adicione: custom.googleapis.com/opencensus/config_sync/reconciler_errors.

  4. Na lista suspensa Filtro, selecione componente. Uma caixa de campos de filtro é exibida.

  5. Na caixa de campos de filtro, selecione = na primeira caixa e origem na segunda.

  6. Clique em Aplicar.

Agora é possível ver os erros que ocorreram ao criar a origem para seus reconciliadores a partir de um repositório Git.

Também é possível verificar as métricas dos processos de origem e sincronização consultando as seguintes métricas e filtrando pela tag status:

custom.googleapis.com/opencensus/config_sync/parse_duration_seconds
custom.googleapis.com/opencensus/config_sync/apply_duration_seconds
custom.googleapis.com/opencensus/config_sync/remediate_duration_seconds

Configurar um exportador personalizado do OpenTelemetry

Se você quiser enviar suas métricas para um sistema de monitoramento diferente, modifique a configuração do OpenTelemetry. Para uma lista de sistemas de monitoramento compatíveis, consulte Exportadores do OpenTelemetry Collector e Exportadores do OpenTelemetry Collector Contrib.

Os recursos de monitoramento do OpenTelemetry são gerenciados em um namespace config-management-monitoring separado. Para configurar um exportador aberto do OpenTelemetry para uso com o Config Sync, você precisa criar um ConfigMap com o nome otel-collector-custom no namespace config-management-monitoring. O ConfigMap precisa ter uma chave otel-collector-config.yaml, e os valores precisam ser os conteúdos do arquivo da configuração personalizada do OpenTelemetry Collector. Para mais informações sobre as opções de configuração, consulte a documentação de configuração do OpenTelemetry Collector.

O ConfigMap a seguir é um exemplo de um ConfigMap com um exportador personalizado de registros:

# otel-collector-custom-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: otel-collector-custom
  namespace: config-management-monitoring
  labels:
    app: opentelemetry
    component: otel-collector
data:
  otel-collector-config.yaml: |
    receivers:
      opencensus:
    exporters:
      logging:
        logLevel: debug
    processors:
      batch:
    extensions:
      health_check:
    service:
      extensions: [health_check]
      pipelines:
        metrics:
          receivers: [opencensus]
          processors: [batch]
          exporters: [logging]

Todas as configurações personalizadas precisam definir um receptor opencensus e um pipeline metrics. Os outros campos são opcionais e configuráveis, mas recomendamos que você inclua um processador batch e uma extensão de verificação de integridade, como no exemplo.

Depois de criar o ConfigMap, use kubectl para criar o recurso:

kubectl apply -f otel-collector-custom-cm.yaml

A implantação do OpenTelemetry Collectoor seleciona esse ConfigMap e é reiniciada automaticamente para aplicar a configuração personalizada.