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:
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.
Use ferramentas de código aberto, como o Prometheus, o Grafana e o Elasticsearch. Este tópico não descreve esta solução.
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
eprometheus.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
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
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
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:
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
Para abrir o túnel, execute o script
bastion-tunnel.sh
. O túnel segue em frente paralocalhost: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.
Abra um novo terminal e mude para o diretório
anthos-aws
.cd anthos-aws
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
oufalse
, se o Cloud Logging estiver ativado nos nós do plano de controlo.ENABLE_MONITORING
:true
oufalse
, 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.
No diretório
anthos-samples/aws-logging-monitoring/
, mude para o diretóriologging/
.cd logging/
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
.
(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.
No diretório do
anthos-aws
, useanthos-gke
para mudar o contexto para o cluster de utilizadores. Substitua CLUSTER_NAME pelo nome do cluster de utilizadores.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 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
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.
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
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:
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.
Clique em Executar consulta. Deverá ver os registos de clusters recentes apresentados em Resultados da consulta.
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.
No diretório
anthos-samples/aws-logging-monitoring/logging/
, mude para o diretórioanthos-samples/aws-logging-monitoring/monitoring/
.cd ../monitoring
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
.
(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.
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
Use a ferramenta
kubectl
para verificar se ogke-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
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:
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:
PROJECT_ID
: o ID do seu projeto.CLUSTER_NAME
: o nome do cluster que usou quando Criou um cluster de utilizadores, por exemplo,cluster-0
.
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.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.
No diretório
anthos-samples/aws-logging-monitoring/monitoring/
, mude para o diretórioanthos-samples/aws-logging-monitoring/monitoring/dashboards
.cd dashboards
Substitua as instâncias da string
CLUSTER_NAME
empod-status.json
pelo nome do cluster.sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" pod-status.json
Substitua
CLUSTER_NAME
pelo nome do cluster.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
Para verificar se o painel de controlo foi criado, aceda a Cloud Monitoring Painéis de controlo na Google Cloud consola.
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.
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.
Mude para 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 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:
- Vista geral do Cloud Logging
- Usar o Explorador de registos
- Criar consultas para o Cloud Logging
- Crie métricas baseadas em registos