Observabilidade com o Envoy
Neste guia, demonstramos como gerar rastreamento e geração de registros para o proxy Envoy. Ele também mostra como exportar as informações para o Cloud Trace e o Cloud Logging.
Usar uma malha de serviço permite observar o tráfego de e para serviços, o que permite monitoramento e depuração mais avançados sem alterações de código no próprio serviço. Na arquitetura de proxy sidecar que a Cloud Service Mesh usa, o proxy é o componente que processa as solicitações e fornece as informações de telemetria necessárias. As informações de telemetria precisam ser coletadas e armazenadas em um local centralizado para uso posterior, como análise de dados, alertas e solução de problemas.
Configuração da demonstração
Neste guia, usamos a configuração a seguir para demonstrar o rastreamento e a geração de registros:
- Um único aplicativo que detecta na porta HTTP e retorna o nome do host da instância de máquina virtual (VM) que atendeu à solicitação. No diagrama, esse aplicativo está no canto superior direito, chamado Serviços HTTP (10.10.10.10:80). Uma ou mais VMs podem fornecer esse serviço.
- Uma única VM do Compute Engine que executa um consumidor desse serviço. No diagrama, isso é chamado de VM do Compute Engine de demonstração.
- Um proxy sidecar do Envoy instalado e configurado pelo Cloud Service Mesh. No diagrama, isso é rotulado como Envoy.
- Um aplicativo de consumidor de serviço, mostrado na caixa à esquerda, é o
consumidor do serviço HTTP em execução em
10.10.10.10:80
.
As etapas a seguir correspondem aos rótulos numerados no diagrama:
O Cloud Service Mesh configura o proxy Envoy para fazer o seguinte:
- Tráfego de balanceamento de carga do serviço
10.10.10.10:80
. - Armazene informações de registro de acesso para cada solicitação emitida para esse serviço.
- Gere informações de rastreamento para o serviço.
- Tráfego de balanceamento de carga do serviço
Depois que o consumidor envia uma solicitação para
10.10.10.10
, o proxy sidecar encaminha a solicitação para o destino correto.O proxy sidecar também gera as informações de telemetria necessárias:
- Adiciona uma entrada ao registro de acesso no disco local com novas informações sobre a solicitação.
- Gera uma entrada de trace e a envia para o Trace usando o rastreamento do Envoy em OpenCensus.
O agente do Logging exporta esses dados para a API do Cloud Logging para que eles sejam disponibilizados na interface do Cloud Logging.
Pré-requisitos
Antes de concluir as etapas de configuração, faça o seguinte:
- A API Traffic Director está ativada e outros pré-requisitos são atendidos, conforme descrito em Preparar-se para a configuração com VMs e cargas de trabalho sem proxy.
- A API Cloud Trace está ativada.
- A conta de serviço que a VM do Compute Engine usa tem os
seguintes papéis de gerenciamento de identidade e acesso (IAM) configurados:
- Papel do agente do Cloud Trace
(
roles/cloudtrace.agent
) - Papel de gravador de registros
(
roles/logging.logWriter
)
- Papel do agente do Cloud Trace
(
- As regras de firewall permitem tráfego para a VM que você configura como parte dessa configuração.
Configurar o serviço de demonstração e o Cloud Service Mesh
Este guia usa vários scripts de shell para executar as etapas necessárias para configurar o serviço de demonstração. Revise os scripts para entender as etapas específicas que eles realizam.
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 gerenciadas que usa esse modelo. O script inicia uma única instância sem o escalonamento automático ativado.Use o Cloud Service Mesh para configurar o roteamento 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 gerenciado do Cloud Service Mesh.Inicie uma VM do Compute Engine que execute um consumidor do serviço HTTP, com o proxy secundário instalado e configurado na VM. No comando a seguir, substitua
PROJECT_ID
pelo ID do projeto ao qual as informações do Trace precisam ser enviadas. Normalmente, é o mesmo projeto do Google Cloud a que a 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 que tem um proxy Envoy pré-configurado para usar a Cloud Service Mesh.
As novas configurações a seguir permitem o rastreamento e a geração de registros:
- As variáveis de metadados do nó de inicialização
TRAFFICDIRECTOR_ACCESS_LOG_PATH
eTRAFFICDIRECTOR_ENABLE_TRACING
permitem a geração de registros e o rastreamento, conforme descrito em Configurar atributos de inicialização do Envoy para a Cloud Service Mesh. - A configuração de inicialização estática permite a exportação de informações de trace para o Trace usando o OpenCensus.
Depois de executar esses scripts, faça login na VM
td-observability-demo-client
e acesse o serviço HTTP disponível em 10.10.10.10
:
curl http://10.10.10.10
Nesse momento, o Envoy gera informações de registro de rastreamento e de acesso. A seção a seguir descreve como exportar registros e informações de rastreamento.
Como configurar a exportação de rastreamento para o Cloud Trace
A configuração de inicialização do Envoy criada quando você executou o
script setup-demo-client.sh
é suficiente para gerar informações de rastreamento.
Todas as outras configurações são opcionais. Se você quiser configurar outros
parâmetros, consulte a
página de configuração do OpenCensus Envoy
e modifique as opções de rastreamento na configuração de inicialização do Envoy.
Depois de emitir uma solicitação de amostra para o servidor de demonstração (curl
10.10.10.10
), no Console do Google Cloud, acesse a interface do Trace
(Trace > Lista de traces).
Você verá um registro de rastreamento que corresponde à solicitação emitida.
Para mais informações sobre como usar o Trace, consulte a documentação do Cloud Trace.
Como configurar a exportação de registros de acesso para o Logging
Nesse estágio, o Envoy precisa gravar informações de registro de acesso no disco local da VM em que ele está sendo executado. Para exportar esses registros para o Logging, é preciso instalar o agente do Logging localmente. Isso requer a instalação e a configuração do agente do Logging.
Instale o agente do Logging.
Instale o agente do Logging na VM a partir da qual
as informações de registro são exportadas. Para este exemplo de configuração, 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 Instalar o agente do Cloud Logging em uma única VM.
Configurar o agente do Logging
É possível exportar os registros do Envoy como texto não estruturado ou estruturado.
Como exportar os registros do Envoy como texto não estruturado
Essa opção exporta registros de registro do registro de acesso para o Cloud Logging como texto bruto. Cada entrada no registro de acesso é exportada como uma única entrada para o Logging. Essa configuração é mais fácil de instalar porque depende de um analisador distribuído com a versão atual do agente do Logging. No entanto, é mais difícil filtrar e processar entradas de registro de texto bruto ao usar essa opção.
Faça o download e instale o arquivo de configuração de exportação não estruturado 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
Exportar os registros do Envoy como texto estruturado
Instale o analisador de registros de acesso do Envoy no GitHub:
sudo /opt/google-fluentd/embedded/bin/gem install fluent-plugin-envoy-parser
Faça o download e instale o arquivo de configuração para exportar registros de acesso do Envoy em um 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 Configurar o agente do Logging.
Verificar a configuração
- Na VM do proxy sidecar, gere uma solicitação para o serviço de demonstração.
Isso cria um novo registro local. Por exemplo, é possível executar
curl 10.10.10.10
: - No Console do Google Cloud, acesse Logging > Explorador de registros. No menu suspenso, selecione o tipo de registro envoy-access. Você vê uma entrada de registro para a solicitação mais recente no formato não estruturado ou estruturado, dependendo do tipo de configuração escolhido anteriormente.
Solução de problemas
Leia as seções a seguir para saber como resolver diferentes problemas de observabilidade com o Envoy.
Configurar o rastreamento em vários projetos
Se você quiser rastrear solicitações entre os Envoys implantados nos vários projetos, observe o seguinte:
- Cada Envoy precisa ser configurado com as credenciais do projeto em que está sendo executado.
- Cada Envoy envia dados de trace para o projeto que corresponde às credenciais com que ele está sendo executado.
- Será possível ver períodos de rastreamento para solicitações entre projetos se seus aplicativos
preservarem o valor do cabeçalho HTTP
X-Cloud-Trace-Context
quando as solicitações forem feitas.
Compatibilidade do Trace com aplicativos gRPC sem proxy
A configuração do rastreador OpenCensus do Envoy permite que os traces exportados de
aplicativos gRPC sem proxy e proxies do Envoy sejam totalmente compatíveis em uma
malha de serviço. Para compatibilidade, a inicialização do Envoy precisa configurar o contexto do rastreamento para
incluir o formato de trace GRPC_TRACE_BIN
no OpenCensusConfig
, da seguinte maneira:
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 as entradas de registro ou de trace não estiverem disponíveis, verifique o seguinte:
- As contas de serviço da VM do Compute Engine têm as permissões necessárias do IAM do Trace e Logging, conforme especificado nos pré-requisitos. Para informações sobre permissões do IAM do Trace, consulte Controle de acesso. Para informações sobre permissões do Logging, consulte Controle de acesso.
- Para geração de registros: verifique se não há erros em
/var/log/google-fluentd/google-fluentd.log
. - Para geração de registros: certifique-se de que as novas entradas apareçam no arquivo de registros de acesso local quando as solicitações forem emitidas.
A seguir
- Para encontrar informações relacionadas, consulte Observabilidade com aplicativos gRPC sem proxy.
- Para encontrar informações gerais de solução de problemas do Cloud Service Mesh, consulte Solução de problemas de implantações que usam o Envoy.