Registo e monitorização do GKE na AWS

Este tópico mostra como exportar registos e métricas de um cluster de utilizador do GKE no AWS para o Cloud Logging e o Cloud Monitoring.

Vista geral

Existem várias opções para registar e monitorizar com o GKE na AWS. O GKE pode ser integrado com o Cloud Logging e o Cloud Monitoring. Como o GKE se baseia no Kubernetes de código aberto, muitas ferramentas de código aberto e de terceiros são compatíveis.

Opções de registo e monitorização

Tem várias opções de registo e monitorização para o seu cluster do GKE na AWS:

  1. Implemente os agentes do Cloud Logging e Cloud Monitoring para monitorizar e ver registos das suas cargas de trabalho na Google Cloud consola. Este tópico explica esta solução.

  2. Use ferramentas de código aberto, como o Prometheus, o Grafana e o Elasticsearch. Este tópico não descreve esta solução.

  3. Use soluções de terceiros, como o Datadog. Este tópico não descreve esta solução.

Cloud Logging e Cloud Monitoring

Com o Cloud Logging e o Cloud Monitoring, pode criar<0x0Adashboards, enviar alertas, monitorizar e rever registos para as cargas de trabalho em execução no seu cluster. Tem de configurar os agentes do Cloud Logging e Cloud Monitoring para recolher registos e métricas no seu projeto. Google Cloud Se não configurar estes agentes, o GKE on AWS não recolhe dados de registo nem de monitorização.

Que dados são recolhidos

Quando configurados, os agentes recolhem registos e dados de métricas do cluster e das cargas de trabalho em execução no cluster. Estes dados são armazenados no seu Google Cloud projeto. Configura o ID do projeto no campo project_id num ficheiro de configuração quando instala o encaminhador de registos.

Os dados recolhidos incluem o seguinte:

  • Registos dos serviços do sistema em cada um dos nós de trabalho.
  • Registos de aplicações para todas as cargas de trabalho em execução no cluster.
  • Métricas para os serviços do cluster e do sistema. Para mais informações sobre métricas específicas, consulte o artigo Métricas do Google Distributed Cloud.
  • Se as suas aplicações estiverem configuradas com alvos de recolha do Prometheus, e anotadas com a configuração, incluindo prometheus.io/scrape, prometheus.io/path e prometheus.io/port, métricas de aplicações para pods.

Os agentes podem ser desativados em qualquer altura. Para mais informações, consulte o artigo Limpar. Os dados recolhidos pelos agentes podem ser geridos e eliminados como quaisquer outros dados de métricas e registos, conforme descrito na documentação do Cloud Monitoring e do Cloud Logging.

Os dados de registo são armazenados de acordo com as regras de retenção configuradas. A retenção de dados de métricas varia consoante o tipo.

Componentes de registo e monitorização

Para exportar telemetria ao nível do cluster do GKE na AWS para o Google Cloud, implemente os seguintes componentes no seu cluster:

  • Stackdriver Log Forwarder (stackdriver-log-forwarder-*). Um Fluentbit DaemonSet que encaminha registos de cada nó do Kubernetes para o Cloud Logging.
  • Agente de métricas do GKE (gke-metrics-agent-*). Um DaemonSet baseado no coletor OpenTelemetry que recolhe dados de métricas e os encaminha para o Cloud Monitoring.

Os manifestos destes componentes encontram-se no repositório anthos-samples no GitHub.

Pré-requisitos

  1. Um Google Cloud projeto com a faturação ativada. Para mais informações sobre os custos, consulte os preços da Google Cloud Observability.

    O projeto também tem de ter as APIs Cloud Logging e Cloud Monitoring ativadas. Para ativar estas APIs, execute os seguintes comandos:

    gcloud services enable logging.googleapis.com
    gcloud services enable monitoring.googleapis.com
    
  2. Um ambiente do GKE on AWS, incluindo um cluster de utilizadores registado no Connect. Execute o seguinte comando para verificar se o cluster está registado.

    gcloud container fleet memberships list
    

    Se o cluster estiver registado, a CLI gcloud imprime o nome e o ID do cluster.

    NAME       EXTERNAL_ID
    cluster-0  1abcdef-1234-4266-90ab-123456abcdef
    

    Se não vir o seu cluster na lista, consulte o artigo Estabelecer ligação a um cluster com o Connect

  3. Instale a ferramenta de linha de comandos git na sua máquina.

Configurar autorizações para o Google Cloud Observability

Os agentes de registo e monitorização usam o Workload Identity da frota para comunicar com o Cloud Logging e o Cloud Monitoring. A identidade precisa de autorizações para escrever registos e métricas no seu projeto. Para adicionar as autorizações, execute os seguintes comandos:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver]" \
  --role=roles/logging.logWriter
gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver]" \
  --role=roles/monitoring.metricWriter

Substitua PROJECT_ID pelo seu Google Cloud projeto.

Ligue-se ao anfitrião bastion

Para se ligar aos seus recursos do GKE no AWS, siga os passos abaixo. Selecione se tem uma VPC da AWS existente (ou uma ligação direta à sua VPC) ou se criou uma VPC dedicada quando criou o seu serviço de gestão.

VPC existente

Se tiver uma ligação direta ou VPN a uma VPC existente, omita a linha env HTTP_PROXY=http://localhost:8118 dos comandos neste tópico.

VPC dedicada

Quando cria um serviço de gestão numa VPC dedicada, o GKE no AWS inclui um anfitrião bastion numa sub-rede pública.

Para se ligar ao seu serviço de gestão, siga estes passos:

  1. Altere para o diretório com a configuração do GKE na AWS. Criou este diretório quando Instalou o serviço de gestão.

    cd anthos-aws

  2. Para abrir o túnel, execute o script bastion-tunnel.sh. O túnel segue em frente para localhost:8118.

    Para abrir um túnel para o anfitrião bastion, execute o seguinte comando:

    ./bastion-tunnel.sh -N
    

    As mensagens do túnel SSH aparecem nesta janela. Quando quiser fechar a ligação, pare o processo com Control+C ou fechando a janela.

  3. Abra um novo terminal e mude para o diretório anthos-aws.

    cd anthos-aws
  4. Verifique se consegue estabelecer ligação ao cluster com kubectl.

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    O resultado inclui o URL do servidor da API do serviço de gestão.

Cloud Logging e Cloud Monitoring em nós do plano de controlo

Com o GKE na AWS 1.8.0 e superior, o Cloud Logging e o Cloud Monitoring para nós do plano de controlo podem ser configurados automaticamente quando cria novos clusters de utilizadores. Para ativar o Cloud Logging ou o Cloud Monitoring, preenche a secção controlPlane.cloudOperations da configuração do AWSCluster.

cloudOperations:
  projectID: PROJECT_ID
  location: GC_REGION
  enableLogging: ENABLE_LOGGING
  enableMonitoring: ENABLE_MONITORING

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto.
  • GC_REGION: a Google Cloud região onde quer armazenar os registos. Escolha uma região próxima da região da AWS. Para mais informações, consulte Localizações globais – Regiões e zonas — por exemplo, us-central1.
  • ENABLE_LOGGING: true ou false, se o Cloud Logging estiver ativado nos nós do plano de controlo.
  • ENABLE_MONITORING: true ou false, se o Cloud Monitoring estiver ativado nos nós do plano de controlo.

Em seguida, siga os passos em Criar um cluster de utilizadores personalizado .

Cloud Logging e Cloud Monitoring em nós de trabalho

Remover a versão anterior

Se tiver configurado uma versão anterior dos agentes de registo e monitorização que inclua o stackdriver-log-aggregator (Fluentd) e o stackdriver-prometheus-k8s (Prometheus), recomendamos que os desinstale primeiro antes de continuar.

Instalar o encaminhador de registos

Nesta secção, instala o Stackdriver Log Forwarder no seu cluster.

  1. No diretório anthos-samples/aws-logging-monitoring/, mude para o diretório logging/.

    cd logging/
    
  2. Modifique o ficheiro forwarder.yaml para corresponder à configuração do seu projeto:

    sed -i "s/PROJECT_ID/PROJECT_ID/g" forwarder.yaml
    sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" forwarder.yaml
    sed -i "s/CLUSTER_LOCATION/GC_REGION/g" forwarder.yaml
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto.
    • CLUSTER_NAME: o nome do seu cluster, por exemplo, cluster-0
    • GC_REGION: a Google Cloud região onde quer armazenar os registos. Escolha uma região próxima da região da AWS. Para mais informações, consulte Localizações globais – Regiões e zonas — por exemplo, us-central1.
  3. (Opcional) Com base nas suas cargas de trabalho, no número de nós no cluster e no número de pods por nó, pode ter de definir pedidos de recursos de memória e CPU. Para mais informações, consulte o artigo Alocações de CPU e memória recomendadas.

  4. No diretório do anthos-aws, use anthos-gke para mudar o contexto para o cluster de utilizadores.

    cd anthos-aws
    env HTTPS_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    Substitua CLUSTER_NAME pelo nome do cluster de utilizadores.

  5. Crie a conta de serviço stackdriver se não existir e implemente o encaminhador de registos no cluster.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl create serviceaccount stackdriver -n kube-system
    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f forwarder.yaml
    
  6. Use kubectl para verificar se os pods foram iniciados.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get pods -n kube-system | grep stackdriver-log
    

    Deve ver um pod encaminhador por nó num conjunto de nós. Por exemplo, num cluster de 6 nós, deve ver 6 pods de encaminhamento.

    stackdriver-log-forwarder-2vlxb              2/2     Running   0          21s
    stackdriver-log-forwarder-dwgb7              2/2     Running   0          21s
    stackdriver-log-forwarder-rfrdk              2/2     Running   0          21s
    stackdriver-log-forwarder-sqz7b              2/2     Running   0          21s
    stackdriver-log-forwarder-w4dhn              2/2     Running   0          21s
    stackdriver-log-forwarder-wrfg4              2/2     Running   0          21s
    

Testar o encaminhamento de registos

Nesta secção, implementa uma carga de trabalho que contém um servidor Web HTTP básico com um gerador de carga no seu cluster. Em seguida, testa se os registos estão presentes no Cloud Logging.

Antes de instalar esta carga de trabalho, pode validar os manifestos do servidor Web e do gerador de carga.

  1. Implemente o servidor Web e o gerador de carga no seu cluster.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f  https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/server/server.yaml
    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/loadgen/loadgen.yaml
    
  2. Para verificar se pode ver os registos do seu cluster no painel de controlo do Cloud Logging, aceda ao Explorador de registos na Google Cloud consola:

    Aceda ao Explorador de registos

  3. Copie a consulta de exemplo abaixo para o campo do criador de consultas.

    resource.type="k8s_container" resource.labels.cluster_name="CLUSTER_NAME"
    

    Substitua CLUSTER_NAME pelo nome do cluster.

  4. Clique em Executar consulta. Deverá ver os registos de clusters recentes apresentados em Resultados da consulta.

    Agrupe registos no Google Cloud Observability

  5. Depois de confirmar que os registos aparecem nos resultados da consulta, remova o gerador de carga e o servidor Web.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/loadgen/loadgen.yaml
    
    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/server/server.yaml
    

Instalar o coletor de métricas

Nesta secção, instala um agente para enviar dados para o Cloud Monitoring.

  1. No diretório anthos-samples/aws-logging-monitoring/logging/, mude para o diretório anthos-samples/aws-logging-monitoring/monitoring/.

    cd ../monitoring
    
  2. Modifique o ficheiro gke-metrics-agent.yaml para corresponder à configuração do seu projeto:

    sed -i "s/PROJECT_ID/PROJECT_ID/g" gke-metrics-agent.yaml
    sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" gke-metrics-agent.yaml
    sed -i "s/CLUSTER_LOCATION/GC_REGION/g" gke-metrics-agent.yaml
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto.
    • CLUSTER_NAME: o nome do seu cluster, por exemplo, cluster-0
    • GC_REGION: a Google Cloud região onde quer armazenar os registos. Escolha uma região próxima da região da AWS. Para mais informações, consulte Localizações globais – Regiões e zonas — por exemplo, us-central1.
  3. (Opcional) Com base nas suas cargas de trabalho, no número de nós no cluster e no número de pods por nó, pode ter de definir pedidos de recursos de memória e CPU. Para mais informações, consulte o artigo Alocações de CPU e memória recomendadas.

  4. Crie a conta de serviço stackdriver se não existir e implemente o agente de métricas no seu cluster.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl create serviceaccount stackdriver -n kube-system
    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f gke-metrics-agent.yaml
    
  5. Use a ferramenta kubectl para verificar se o gke-metrics-agent Pod está em execução.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get pods -n kube-system | grep gke-metrics-agent
    

    Deve ver um pod de agente por nó num conjunto de nós. Por exemplo, num cluster de 3 nós, deve ver três pods de agentes.

    gke-metrics-agent-gjxdj                    2/2     Running   0          102s
    gke-metrics-agent-lrnzl                    2/2     Running   0          102s
    gke-metrics-agent-s6p47                    2/2     Running   0          102s
    
  6. Para verificar se as métricas do cluster estão a ser exportadas para o Cloud Monitoring, aceda ao Metrics Explorer na Google Cloud consola:

    Aceda ao Metrics Explorer

  7. No explorador de métricas, clique em Editor de consultas e, de seguida, copie o seguinte comando:

    fetch k8s_container
    | metric 'kubernetes.io/anthos/otelcol_exporter_sent_metric_points'
    | filter
        resource.project_id == 'PROJECT_ID'
        && (resource.cluster_name =='CLUSTER_NAME')
    | align rate(1m)
    | every 1m
    

    Substitua o seguinte:

  8. Clique em Executar consulta. É apresentada a taxa de pontos de métricas enviados para o Cloud Monitoring de cada pod gke-metrics-agent no cluster.

    Monitorização do cluster

    Outras métricas que vale a pena experimentar incluem, entre outras:

    • kubernetes.io/anthos/container_memory_working_set_bytes: utilização de memória do contentor;
    • kubernetes.io/anthos/container_cpu_usage_seconds_total: utilização da CPU do contentor;
    • kubernetes.io/anthos/apiserver_aggregated_request_total: quantidade de pedidos kube-apiserver, apenas disponível se o Cloud Monitoring estiver ativado no plano de controlo.

    Para ver uma lista completa das métricas disponíveis, consulte as métricas do Anthos. Para obter informações sobre como usar a interface do utilizador, consulte o Explorador de métricas.

Criar um painel de controlo no Cloud Monitoring

Nesta secção, cria um painel de controlo do Cloud Monitoring que monitoriza o estado do contentor no cluster.

  1. No diretório anthos-samples/aws-logging-monitoring/monitoring/, mude para o diretório anthos-samples/aws-logging-monitoring/monitoring/dashboards.

    cd dashboards
    
  2. Substitua as instâncias da string CLUSTER_NAME em pod-status.json pelo nome do cluster.

    sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" pod-status.json
    

    Substitua CLUSTER_NAME pelo nome do cluster.

  3. Crie um painel de controlo personalizado com o ficheiro de configuração executando o seguinte comando:

    gcloud monitoring dashboards create --config-from-file=pod-status.json
    
  4. Para verificar se o painel de controlo foi criado, aceda a Cloud Monitoring Painéis de controlo na Google Cloud consola.

    Aceder a Painéis de controlo

    Abra o painel de controlo recém-criado com um nome no formato de CLUSTER_NAME (Anthos cluster on AWS) pod status.

Limpar

Nesta secção, remove os componentes de registo e monitorização do seu cluster.

  1. Elimine o painel de controlo de monitorização na vista de lista de painéis de controlo na Google Cloud consola clicando no botão de eliminação associado ao nome do painel de controlo.

  2. Mude para o diretório anthos-samples/aws-logging-monitoring/.

    cd anthos-samples/aws-logging-monitoring
    
  3. Para remover todos os recursos criados neste guia, execute os seguintes comandos:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete -f logging/
    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete -f monitoring/
    

Alocações de CPU e memória recomendadas

Esta secção inclui a CPU recomendada e as atribuições para os componentes individuais usados no registo e na monitorização. Cada uma das tabelas seguintes apresenta pedidos de CPU e memória para um cluster com um intervalo de tamanhos de nós. Define pedidos de recursos para um componente no ficheiro indicado na tabela.

Para mais informações, consulte os artigos Práticas recomendadas do Kubernetes: pedidos e limites de recursos e Gerir recursos para contentores.

1-10 nós

Ficheiro Recurso Pedidos de CPU Limites da CPU Pedidos de memória Limites de memória
monitoring/gke-metrics-agent.yaml gke-metrics-agent 30m 100m 50Mi 500Mi
logging/forwarder.yaml stackdriver-log-forwarder 50m 100m 100Mi 600Mi

10-100 nós

Ficheiro Recurso Pedidos de CPU Limites da CPU Pedidos de memória Limites de memória
monitoring/gke-metrics-agent.yaml gke-metrics-agent 50m 100m 50Mi 500Mi
logging/forwarder.yaml stackdriver-log-forwarder 60m 100m 100Mi 600Mi

Mais de 100 nós

Ficheiro Recurso Pedidos de CPU Limites da CPU Pedidos de memória Limites de memória
monitoring/gke-metrics-agent.yaml gke-metrics-agent 50m 100m 100Mi N/A
logging/forwarder.yaml stackdriver-log-forwarder 60m 100m 100Mi 600Mi

O que se segue?

Saiba mais sobre o Cloud Logging:

Saiba mais sobre o Cloud Monitoring: