Registro e monitoramento para GKE na AWS

Este tópico mostra como exportar logs e métricas de um cluster de usuários do GKE na AWS para o Cloud Logging e o Cloud Monitoring.

Visão geral

Há várias opções de registro e monitoramento com o GKE na AWS. O GKE Enterprise pode ser integrado ao Cloud Logging e ao Cloud Monitoring. Como o GKE Enterprise é baseado no Kubernetes de código aberto, muitas ferramentas de código aberto e de terceiros são compatíveis.

Opções de registro e monitoramento

Você tem várias opções de registro e monitoramento para seu cluster do GKE Enterprise:

  1. Implante os agentes Cloud Logging e Cloud Monitoring para monitorar e visualizar logs de suas cargas de trabalho no Google Cloud console. Este tópico explica esta solução.

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

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

Registro em nuvem e monitoramento em nuvem

Com o GKE Enterprise, o Cloud Logging e o Cloud Monitoring, você pode criar painéis, enviar alertas, monitorar e revisar logs para as cargas de trabalho em execução no seu cluster. Você deve configurar os agentes do Cloud Logging e do Cloud Monitoring para coletar logs e métricas no seu cluster. Google Cloudprojeto. Se você não configurar esses agentes, o GKE na AWS não coletará dados de registro ou monitoramento.

Quais dados são coletados

Quando configurados, os agentes coletam logs e dados métricos do seu cluster e das cargas de trabalho em execução no cluster. Esses dados são armazenados no seuGoogle Cloud projeto. Você configura o ID do projeto no campo project_id em um arquivo de configuração ao instalar o encaminhador de log .

Os dados coletados incluem o seguinte:

  • Logs para serviços do sistema em cada um dos nós de trabalho.
  • Logs de aplicativos para todas as cargas de trabalho em execução no cluster.
  • Métricas para os serviços de cluster e sistema. Para obter mais informações sobre métricas específicas, consulte Métricas do GKE Enterprise .
  • Se seus aplicativos estiverem configurados com alvos de scrape do Prometheus e anotados com configuração incluindo prometheus.io/scrape , prometheus.io/path e prometheus.io/port , métricas de aplicativo para Pods.

Os agentes podem ser desativados a qualquer momento. Para obter mais informações, consulte Limpeza . Os dados coletados pelos agentes podem ser gerenciados e excluídos como quaisquer outros dados de métrica e log, conforme descrito na documentação de Monitoramento e Registro em Nuvem .

Os dados de log são armazenados de acordo com as regras de retenção configuradas . As métricas de retenção de dados variam de acordo com o tipo .

Componentes de registro e monitoramento

Para exportar telemetria em nível de cluster do GKE na AWS paraGoogle Cloud, você implanta os seguintes componentes em seu cluster:

  • Encaminhador de Logs do Stackdriver (stackdriver-log-forwarder-*). Um DaemonSet do Fluentbit que encaminha logs de cada nó do Kubernetes para o Cloud Logging.
  • Agente de Métricas do GKE (gke-metrics-agent-*). Um DaemonSet baseado no OpenTelemetry Collector que coleta dados de métricas e os encaminha para o Cloud Monitoring.

Os manifestos para esses componentes estão no repositório anthos-samples no GitHub.

Pré-requisitos

  1. UM Google Cloud Projeto com faturamento habilitado. Para mais informações sobre custos, consulte Preços do Google Cloud Observability .

    O projeto também deve ter as APIs de Cloud Logging e Cloud Monitoring habilitadas. Para habilitar essas APIs, execute os seguintes comandos:

    gcloud services enable logging.googleapis.com
    gcloud services enable monitoring.googleapis.com
    
  2. Um ambiente GKE na AWS, incluindo um cluster de usuários registrado no Connect. Execute o seguinte comando para verificar se o seu cluster está registrado.

    gcloud container fleet memberships list
    

    Se o seu cluster estiver registrado, o Google Cloud CLI imprimirá o nome e o ID do cluster.

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

    Se você não vir seu cluster listado, consulte Conectando-se a um cluster com o Connect

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

Configurando permissões para o Google Cloud Observability

Os agentes de registro e monitoramento usam a Identidade de Carga de Trabalho da Frota para se comunicar com o Cloud Logging e o Cloud Monitoring. A identidade precisa de permissões para gravar registros e métricas no seu projeto. Para adicionar as permissõ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.

Conecte-se ao host bastião

Para se conectar aos seus recursos do GKE na AWS, siga as seguintes etapas. Selecione se você já possui uma VPC da AWS (ou conexão direta com sua VPC) ou se criou uma VPC dedicada ao criar seu serviço de gerenciamento.

VPC existente

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

VPC dedicada

Ao criar um serviço de gerenciamento em uma VPC dedicada, o GKE na AWS inclui um bastião host em uma sub-rede pública.

Para se conectar ao seu serviço de gerenciamento, execute as seguintes etapas:

  1. Acesse o diretório com a configuração do GKE na AWS. Você criou este diretório ao instalar o serviço de gerenciamento .

    cd anthos-aws

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

    Para abrir um túnel para o host bastião, execute o seguinte comando:

    ./bastion-tunnel.sh -N
    

    As mensagens do túnel SSH aparecem nesta janela. Quando estiver pronto para encerrar a conexão, interrompa o processo usando Control+C ou fechando a janela.

  3. Abra um novo terminal e entre no diretório anthos-aws .

    cd anthos-aws
  4. Verifique se você consegue se conectar ao cluster com kubectl .

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

    A saída inclui a URL para o servidor da API do serviço de gerenciamento.

Registro em nuvem e monitoramento em nuvem em nós do plano de controle

Com o GKE na AWS 1.8.0 e versões superiores, o Cloud Logging e o Cloud Monitoring para nós do plano de controle podem ser configurados automaticamente ao criar novos clusters de usuários. Para habilitar o Cloud Logging ou o Cloud Monitoring, preencha a seção controlPlane.cloudOperations da sua configuração AWSCluster .

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

Substitua o seguinte:

  • PROJECT_ID : seu ID de projeto.
  • GC_REGION : a Google Cloud região onde você deseja armazenar logs. Escolha uma região próxima à região da AWS. Para obter mais informações, consulte Locais Globais - Regiões e Zonas — por exemplo, us-central1 .
  • ENABLE_LOGGING : true ou false , se o Cloud Logging estiver habilitado nos nós do plano de controle.
  • ENABLE_MONITORING : true ou false , se o Cloud Monitoring estiver habilitado nos nós do plano de controle.

Em seguida, siga as etapas em Criação de um cluster de usuário personalizado .

Registro em nuvem e monitoramento em nuvem em nós de trabalho

Removendo a versão anterior

Se você tiver configurado uma versão anterior dos agentes de registro e monitoramento que inclui stackdriver-log-aggregator (Fluentd) e stackdriver-prometheus-k8s (Prometheus), talvez seja necessário desinstalá-los antes de prosseguir.

Instalando o encaminhador de registro

Nesta seção, você 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 arquivo 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 : seu ID de projeto.
    • CLUSTER_NAME : O nome do seu cluster — por exemplo, cluster-0
    • GC_REGION : a Google Cloud região onde você deseja armazenar logs. Escolha uma região próxima à região da AWS. Para obter mais informações, consulte Locais 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ó, talvez seja necessário definir solicitações de recursos de memória e CPU. Para obter mais informações, consulte Alocações recomendadas de CPU e memória .

  4. No seu diretório anthos-aws , use anthos-gke para alternar o contexto para seu cluster de usuários.

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

  5. Crie a conta de serviço stackdriver se ela não existir e implante o encaminhador de log 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
    

    Você deverá ver um pod encaminhador por nó em um pool de nós. Por exemplo, em um cluster de 6 nós, você deverá ver seis pods encaminhadores.

    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
    

Testando o encaminhamento de log

Nesta seção, você implantará uma carga de trabalho contendo um servidor web HTTP básico com um gerador de carga no seu cluster. Em seguida, você testará se os logs estão presentes no Cloud Logging.

Antes de instalar esta carga de trabalho, você pode verificar os manifestos do servidor web e do gerador de carga .

  1. Implante 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 você pode visualizar os logs do seu cluster no painel do Cloud Logging, acesse o Logs Explorer no Google Cloud console:

    Vá para o Logs Explorer

  3. Copie a consulta de exemplo abaixo no campo Construtor de consultas .

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

    Substitua CLUSTER_NAME pelo nome do seu cluster.

  4. Clique em Executar consulta . Você deverá ver os logs de cluster recentes aparecerem em Resultados da consulta .

    Logs de cluster no Google Cloud Observability

  5. Depois de confirmar que os logs 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
    

Instalando o coletor de métricas

Nesta seção, você instala um agente para enviar dados ao 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 arquivo 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 : seu ID de projeto.
    • CLUSTER_NAME : O nome do seu cluster — por exemplo, cluster-0
    • GC_REGION : a Google Cloud região onde você deseja armazenar logs. Escolha uma região próxima à região da AWS. Para obter mais informações, consulte Locais 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ó, talvez seja necessário definir solicitações de recursos de memória e CPU. Para obter mais informações, consulte Alocações recomendadas de CPU e memória .

  4. Crie a conta de serviço stackdriver se ela não existir e implante 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 pod gke-metrics-agent está em execução.

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

    Você deverá ver um pod de agente por nó em um pool de nós. Por exemplo, em um cluster de 3 nós, você deverá ver três pods de agente.

    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 seu cluster estão sendo exportadas para o Cloud Monitoring, acesse o Metrics Explorer no Google Cloud console:

    Vá para o Metrics Explorer

  7. No Metrics Explorer, clique em Editor de consulta e 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:

    • PROJECT_ID : seu ID de projeto.
    • CLUSTER_NAME : o nome do cluster que você usou ao criar um cluster de usuário — por exemplo, cluster-0 .
  8. Clique em Executar consulta . A taxa de pontos métricos enviados ao Cloud Monitoring de cada pod gke-metrics-agent no seu cluster é exibida.

    Monitoramento do cluster

    Algumas outras métricas que vale a pena tentar são, mas não se limitam a:

    • kubernetes.io/anthos/container_memory_working_set_bytes : Uso de memória do contêiner;
    • kubernetes.io/anthos/container_cpu_usage_seconds_total : Uso de CPU do contêiner;
    • kubernetes.io/anthos/apiserver_aggregated_request_total : contagem de solicitações do kube-apiserver, disponível somente se o Cloud Monitoring estiver habilitado no plano de controle.

    Para obter uma lista completa das métricas disponíveis, consulte Métricas do Anthos . Para obter informações sobre como usar a interface do usuário, consulte o Metrics Explorer .

Criando um painel no Cloud Monitoring

Nesta seção, você cria um painel de monitoramento de nuvem que monitora o status do contêiner no seu 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 instâncias da string CLUSTER_NAME em pod-status.json pelo nome do seu cluster.

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

    Substitua CLUSTER_NAME pelo nome do seu cluster.

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

    gcloud monitoring dashboards create --config-from-file=pod-status.json
    
  4. Para verificar se o seu painel foi criado, acesse Painéis de monitoramento de nuvem no Google Cloud console.

    Ir para Painéis

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

Limpeza

Nesta seção, você remove os componentes de registro e monitoramento do seu cluster.

  1. Excluir o painel de monitoramento na visualização de lista de painéis noGoogle Cloud console clicando no botão excluir associado ao nome do painel.

  2. Acesse 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 seção inclui CPU e alocações recomendadas para os componentes individuais usados ​​no registro e monitoramento. Cada uma das tabelas a seguir lista as solicitações de CPU e memória para um cluster com uma variedade de tamanhos de nós. Você define as solicitações de recursos para um componente no arquivo listado na tabela.

Para obter mais informações, consulte Práticas recomendadas do Kubernetes: solicitações e limites de recursos e Gerenciamento de recursos para contêineres .

1-10 nós

Arquivo Recurso Solicitações de CPU Limites da CPU Solicitações de memória Limites de memória
monitoring/gke-metrics-agent.yaml gke-metrics-agent 30m 100m 50 milhas 500 milhas
logging/forwarder.yaml encaminhador de log do stackdriver 50m 100m 100 milhas 600 milhas

10-100 nós

Arquivo Recurso Solicitações de CPU Limites da CPU Solicitações de memória Limites de memória
monitoring/gke-metrics-agent.yaml gke-metrics-agent 50m 100m 50 milhas 500 milhas
logging/forwarder.yaml encaminhador de log do stackdriver 60m 100m 100 milhas 600 milhas

Mais de 100 nós

Arquivo Recurso Solicitações de CPU Limites da CPU Solicitações de memória Limites de memória
monitoring/gke-metrics-agent.yaml gke-metrics-agent 50m 100m 100 milhas N / D
logging/forwarder.yaml encaminhador de log do stackdriver 60m 100m 100 milhas 600 milhas

O que vem a seguir?

Saiba mais sobre Cloud Logging:

Saiba mais sobre o monitoramento em nuvem: