Observabilidade com o Envoy
Este documento demonstra como gerar o rastreio e o registo para o proxy Envoy. Também mostra como exportar as informações para o Cloud Trace e o Cloud Logging.
A utilização de uma malha de serviços permite-lhe observar o tráfego de e para os serviços, o que permite uma monitorização e uma depuração mais detalhadas sem alterações ao código no próprio serviço. Na arquitetura de proxy sidecar que o Cloud Service Mesh usa, o proxy é o componente que processa pedidos e fornece as informações de telemetria necessárias. As informações de telemetria têm de ser recolhidas e armazenadas numa localização centralizada para utilização posterior, como análise de dados, alertas e resolução de problemas.
Configuração da demonstração
Este documento usa a seguinte configuração para demonstrar a monitorização e o registo:
- Uma única aplicação que escuta na porta HTTP e devolve o nome do anfitrião da instância da máquina virtual (VM) que processou o pedido. No diagrama, esta aplicação encontra-se no canto superior direito, etiquetada como Serviços HTTP (10.10.10.10:80). Uma ou mais VMs podem fornecer este serviço.
- Uma única VM do Compute Engine que executa um consumidor deste serviço. No diagrama, esta opção está etiquetada como VM do Compute Engine de demonstração.
- Um proxy sidecar do Envoy instalado e configurado pela malha de serviço na nuvem. No diagrama, isto está etiquetado como envoy.
- Uma aplicação de consumidor de serviços, apresentada na caixa à esquerda, é o consumidor do serviço HTTP em execução em
10.10.10.10:80
.
Os passos seguintes correspondem às etiquetas numeradas no diagrama:
O Cloud Service Mesh configura o proxy Envoy para fazer o seguinte:
- Equilibre a carga do tráfego para o serviço
10.10.10.10:80
. - Armazenar informações do registo de acesso para cada pedido emitido para este serviço.
- Gerar informações de rastreio para o serviço.
- Equilibre a carga do tráfego para o serviço
Depois de o consumidor enviar um pedido para
10.10.10.10
, o proxy sidecar encaminha o pedido para o destino correto.O proxy sidecar também gera as informações de telemetria necessárias:
- Adiciona uma entrada ao registo de acesso no disco local com informações adicionais sobre o pedido.
- Gera uma entrada de rastreio e envia-a para o Trace através do rastreio do OpenCensus Envoy.
O agente Logging exporta estes dados para a API Cloud Logging para que os dados fiquem disponíveis na interface do Cloud Logging.
Pré-requisitos
Antes de concluir os passos de configuração, certifique-se de que o seguinte está feito:
- A API Traffic Director está ativada e outros pré-requisitos são cumpridos, conforme descrito em Prepare-se para a configuração com cargas de trabalho sem proxy e de VM.
- A API Cloud Trace está ativada.
- A conta de serviço que a VM do Compute Engine usa tem as seguintes funções de gestão de identidade e de acesso (IAM) configuradas:
- Função de agente do Cloud Trace
(
roles/cloudtrace.agent
) - Função Logs Writer
(
roles/logging.logWriter
)
- Função de agente do Cloud Trace
(
- As regras de firewall permitem o tráfego para a VM que configura como parte desta configuração.
Configure o serviço de demonstração e o Cloud Service Mesh
Este documento usa vários scripts de shell para executar os passos necessários para configurar o serviço de demonstração. Reveja os scripts para compreender os passos específicos que executam.
Inicie uma VM do Compute Engine e configure o serviço HTTP na VM:
curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_service.sh chmod 755 setup_demo_service.sh && ./setup_demo_service.sh
O script
setup_demo_service.sh
cria um modelo de VM que inicia o apache2 quando uma VM é iniciada e um grupo de instâncias geridas que usa este modelo. O script inicia uma única instância sem o dimensionamento automático ativado.Use o Cloud Service Mesh para configurar o encaminhamento para o serviço
10.10.10.10
:curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_trafficdirector.sh chmod 755 setup_demo_trafficdirector.sh && ./setup_demo_trafficdirector.sh
O script
setup_demo_trafficdirector.sh
configura os parâmetros necessários para o serviço gerido Cloud Service Mesh.Inicie uma VM do Compute Engine que execute um consumidor do serviço HTTP, com o proxy sidecar instalado e configurado na VM. No comando seguinte, substitua
PROJECT_ID
pelo ID do projeto para o qual as informações de rastreio devem ser enviadas. Normalmente, este é o mesmo Google Cloud projeto ao qual a sua VM pertence.curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_client.sh chmod 755 setup_demo_client.sh && ./setup_demo_client.sh PROJECT_ID
O script
setup_demo_client.sh
cria uma VM do Compute Engine com um proxy Envoy pré-configurado para usar a Cloud Service Mesh.
As seguintes definições de configuração adicionais ativam a monitorização e o registo:
- As variáveis de metadados do nó de arranque
TRAFFICDIRECTOR_ACCESS_LOG_PATH
eTRAFFICDIRECTOR_ENABLE_TRACING
permitem o registo e o rastreio, conforme descrito em Configure os atributos de arranque do Envoy para a malha de serviços na nuvem. - A configuração de arranque estática permite a exportação de informações de rastreio para o rastreio através do OpenCensus.
Depois de executar estes scripts, pode iniciar sessão na td-observability-demo-client
VM e aceder ao serviço HTTP disponível em 10.10.10.10
:
curl http://10.10.10.10
Neste ponto, o Envoy gera informações de registo de acesso e rastreio. A secção seguinte descreve como exportar registos e informações de rastreio.
Configure a exportação de rastreios para o Cloud Trace
A configuração de arranque do Envoy que criou quando executou o script setup-demo-client.sh
é suficiente para gerar informações de rastreio.
Todas as outras configurações são opcionais. Se quiser configurar parâmetros adicionais, consulte a página de configuração do OpenCensus Envoy e modifique as opções de rastreio na configuração de arranque do Envoy.
Depois de emitir um pedido de amostra para o servidor de demonstração (curl
10.10.10.10
), na consola Google Cloud , aceda à interface de rastreio
(Rastreio > Lista de rastreios).
Vê um registo de rastreio que corresponde ao pedido que emitiu.
Para mais informações sobre como usar o Trace, consulte a documentação do Cloud Trace.
Configure a exportação de registos de acesso para o Logging
Nesta fase, o Envoy deve estar a registar informações do registo de acesso no disco local da VM onde está a ser executado. Para exportar estes registos para o Logging, tem de instalar o agente de registos localmente. Isto requer a instalação e a configuração do agente de registo.
Instale o agente de registos
Instale o agente de registo na VM a partir da qual
as informações de registo são exportadas. Para esta configuração de exemplo, a VM é
td-observability-demo-vm
.
curl -sSO https://dl.google.com/cloudagents/add-logging-agent-repo.sh sudo bash add-logging-agent-repo.sh --also-install
Para mais informações, consulte o artigo Instale o agente do Cloud Logging numa única VM.
Configure o agente de registos
Pode exportar os registos do Envoy como texto não estruturado ou estruturado.
Exporte os registos do Envoy como texto não estruturado
Esta opção exporta registos do registo de acesso para o Cloud Logging como texto não processado. Cada entrada no registo de acesso é exportada como uma única entrada para o Logging. Esta configuração é mais fácil de instalar porque se baseia num analisador distribuído com a versão atual do agente Logging. No entanto, é mais difícil filtrar e processar entradas de registo de texto não processado quando usa esta opção.
Transfira e instale o ficheiro de configuração de exportação não estruturada do registo de acesso do Envoy:
curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_unstructured.conf sudo cp envoy_access_fluentd_unstructured.conf /etc/google-fluentd/config.d/envoy_access.conf
Reinicie o agente. As alterações entram em vigor quando o agente é iniciado:
sudo service google-fluentd restart
Exporte os registos do Envoy como texto estruturado
Instale o analisador de registos de acesso do Envoy a partir do GitHub:
sudo /opt/google-fluentd/embedded/bin/gem install fluent-plugin-envoy-parser
Transfira e instale o ficheiro de configuração para exportar registos de acesso do Envoy num formato estruturado:
curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_structured.conf sudo cp envoy_access_fluentd_structured.conf /etc/google-fluentd/config.d/envoy_access.conf
Reinicie o agente. As alterações entram em vigor quando o agente é iniciado:
sudo service google-fluentd restart
Para mais informações, consulte o artigo Configure o agente de registo.
Valide a configuração
- A partir da VM do proxy sidecar, gere um pedido para o serviço de demonstração.
Esta ação cria um novo registo de registo local. Por exemplo, pode executar
curl 10.10.10.10
. - Na Google Cloud consola, aceda a Registo > Explorador de registos. No menu pendente, selecione o tipo de registo envoy-access. É apresentada uma entrada de registo para o pedido mais recente no formato não estruturado ou estruturado, consoante o tipo de configuração que escolheu anteriormente.
Resolução de problemas
Leia as secções seguintes para obter informações sobre como resolver diferentes problemas de observabilidade com o Envoy.
Configure o rastreio em vários projetos
Se quiser rastrear pedidos em Envoys implementados em vários projetos, tenha em atenção o seguinte:
- Cada Envoy tem de ser configurado com as credenciais do projeto onde está a ser executado.
- Cada Envoy envia dados de rastreio para o projeto que corresponde às credenciais com as quais está a ser executado.
- Pode ver intervalos de rastreio para pedidos entre projetos se as suas aplicações preservarem o valor do cabeçalho HTTP
X-Cloud-Trace-Context
quando os pedidos são feitos.
Rastreie a compatibilidade com aplicações gRPC sem proxy
A configuração do rastreador OpenCensus do Envoy permite que os rastreios exportados de aplicações gRPC sem proxy e proxies do Envoy sejam totalmente compatíveis numa malha de serviço. Para compatibilidade, o bootstrap do Envoy tem de configurar o contexto de rastreio para incluir o formato de rastreio GRPC_TRACE_BIN
no respetivo OpenCensusConfig
, da seguinte forma:
tracing: http: name: envoy.tracers.opencensus typed_config: "@type": type.googleapis.com/envoy.config.trace.v2.OpenCensusConfig stackdriver_exporter_enabled: "true" stackdriver_project_id: "PROJECT_ID" incoming_trace_context: ["CLOUD_TRACE_CONTEXT", "GRPC_TRACE_BIN"] outgoing_trace_context: ["CLOUD_TRACE_CONTEXT", "GRPC_TRACE_BIN"]
Se a configuração estiver concluída, mas não vir entradas de rastreio ou registo disponíveis, verifique o seguinte:
- As contas de serviço da VM do Compute Engine têm as autorizações IAM de rastreio e registo necessárias, conforme especificado nos pré-requisitos. Para informações sobre as autorizações de IAM do Trace, consulte o artigo Controlo de acesso. Para obter informações sobre as autorizações de registo, consulte o artigo Controlo de acesso.
- Para o registo: certifique-se de que não existem erros em
/var/log/google-fluentd/google-fluentd.log
. - Para o registo: certifique-se de que as novas entradas aparecem no ficheiro de registo de acesso local quando são emitidos pedidos.
O que se segue?
- Para encontrar informações relacionadas, consulte o artigo Observabilidade com aplicações gRPC sem proxy.
- Para encontrar informações gerais de resolução de problemas do Cloud Service Mesh, consulte o artigo Resolva problemas de implementações que usam o Envoy.