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:
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.
Utilize ferramentas de código aberto como Prometheus, Grafana e Elasticsearch. Este tópico não descreve esta solução.
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
eprometheus.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
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
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
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:
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
Para abrir o túnel, execute o script
bastion-tunnel.sh
. O túnel encaminha paralocalhost: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.
Abra um novo terminal e entre no diretório
anthos-aws
.cd anthos-aws
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
oufalse
, se o Cloud Logging estiver habilitado nos nós do plano de controle. -
ENABLE_MONITORING
:true
oufalse
, 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.
No diretório
anthos-samples/aws-logging-monitoring/
, mude para o diretóriologging/
.cd logging/
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
.
-
(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 .
No seu diretório
anthos-aws
, useanthos-gke
para alternar o contexto para seu cluster de usuários. Substitua CLUSTER_NAME pelo nome do seu cluster de usuário.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
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
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 .
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
Para verificar se você pode visualizar os logs do seu cluster no painel do Cloud Logging, acesse o Logs Explorer no Google Cloud console:
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.
Clique em Executar consulta . Você deverá ver os logs de cluster recentes aparecerem em Resultados da consulta .
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.
No diretório
anthos-samples/aws-logging-monitoring/logging/
, mude para o diretórioanthos-samples/aws-logging-monitoring/monitoring/
.cd ../monitoring
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
.
-
(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 .
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
Use a ferramenta
kubectl
para verificar se o podgke-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
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:
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
.
-
Clique em Executar consulta . A taxa de pontos métricos enviados ao Cloud Monitoring de cada pod
gke-metrics-agent
no seu cluster é exibida.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.
No diretório
anthos-samples/aws-logging-monitoring/monitoring/
, mude para o diretórioanthos-samples/aws-logging-monitoring/monitoring/dashboards
.cd dashboards
Substitua instâncias da string
CLUSTER_NAME
empod-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.Crie um painel personalizado com o arquivo de configuração executando o seguinte comando:
gcloud monitoring dashboards create --config-from-file=pod-status.json
Para verificar se o seu painel foi criado, acesse Painéis de monitoramento de nuvem no Google Cloud console.
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.
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.
Acesse o diretório
anthos-samples/aws-logging-monitoring/
.cd anthos-samples/aws-logging-monitoring
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:
- Visão geral do Cloud Logging
- Usando o Logs Explorer
- Criando consultas para Cloud Logging
- Crie métricas baseadas em logs